[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: pipe hanging on win32

From: <brane_at_xbc.nu>
Date: 2002-10-01 12:38:40 CEST

Quoting Kevin Pilch-Bisson <kevin@pilch-bisson.net>:

> 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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 1 12:39:24 2002

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.