[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: Kevin Pilch-Bisson <kevin_at_pilch-bisson.net>
Date: 2002-10-01 17:59:48 CEST

Quoting brane@xbc.nu:

> 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.

Well that's fine except that the same thing happens in a propval with no line
endings, or with DOS line endings or with Unix line endings.
>
> > 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.

I know, at this point I was just trying to see whether the hook got any input
at all.
>
> > }
> > file << std::ends;
>
> Hm. Stuffing nulls into text files is not nice, either.
Doh! That was a mistake.
>
> > 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
I don't think that's what the problem is. My perl script which copied stdin
to the log file had the same problem, I wrote the above hook just so that I
could attach to it and see where it was hanging.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kevin Pilch-Bisson
kevin@pilch-bisson.net
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 1 18:00:35 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.