Quoting Kevin Pilch-Bisson <[EMAIL PROTECTED]>:

> I've attached a short example of what I am trying to do on in svn for
> the  benefit of any apr folks who may be able to look at this.
> 
> Basically I'm calling the run_pre_revprop_change_hook(), and it's
> hanging in apr_file_flush(...) specifically in FlushFileBuffers it seems.
> 
> The hook script (shown below), is hanging in getc().
> 
> Any ideas why this isn't working?
> 
> Note that log.txt never includes anything from stdin.
> 
> int main(int argc, char **argv)
> {
>       std::ofstream file("log.txt");
>       file << "Repos is: " << argv[1] << std::endl;
>       file << "Rev is: " << argv[2] << std::endl;
>       file << "Propname is: " << argv[3] << std::endl;
>       while (!std::cin.eof()) {
>               std::string s;
>               std::cin >> s;

IIRC this is a fairly well-known bug in MS's implementation of the iostream
library. It hangs in getc() because it doesn't check for end-of-file correctly.

>               file << s << std::endl;

BTW, why are you breaking lines in the prop value like this? "std::cin >> s"
will _not_ read a whole line of input.

>       }
>       file << std::ends;

Hm. Stuffing nulls into text files is not nice, either.

>       file.close();
>       return 0;
> }


Anyway. Try rewriting that hook of yours in C, with appropriate eof checking. It
has a good chance of working then. Or you might try to use "std::getline(cin, s,
'\n')", maybe that doesn't tickle the same bug -- not to mention that lines will
be broken correctly.

    Brane

Reply via email to