On 17.08.2015 11:40, rhuij...@apache.org wrote: > Author: rhuijben > Date: Mon Aug 17 09:40:04 2015 > New Revision: 1696225 > > URL: http://svn.apache.org/r1696225 > Log: > Following up on r1696222, implement polling on pipes on Windows. > > Note that PeekNamedPipe() also works on unnamed pipes, such as those created > by apr to hook stdin and stdout of subprocesses. > > * subversion/libsvn_subr/stream.c > (data_available_handler_apr): Implement polling on pipes for Win32. > > * subversion/tests/libsvn_ra/ra-test.c > (test_funcs): Remove Windows specific XFail marking. > > Modified: > subversion/trunk/subversion/libsvn_subr/stream.c > subversion/trunk/subversion/tests/libsvn_ra/ra-test.c > > Modified: subversion/trunk/subversion/libsvn_subr/stream.c > URL: > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/stream.c?rev=1696225&r1=1696224&r2=1696225&view=diff > ============================================================================== > --- subversion/trunk/subversion/libsvn_subr/stream.c (original) > +++ subversion/trunk/subversion/libsvn_subr/stream.c Mon Aug 17 09:40:04 2015 > @@ -942,8 +942,9 @@ static svn_error_t * > data_available_handler_apr(void *baton, svn_boolean_t *data_available) > { > struct baton_apr *btn = baton; > - apr_pollfd_t pfd; > apr_status_t status; > +#if !defined(WIN32) || APR_FILES_AS_SOCKETS > + apr_pollfd_t pfd; > int n; > > pfd.desc_type = APR_POLL_FILE; > @@ -973,6 +974,24 @@ data_available_handler_apr(void *baton, > "failed")), > NULL); > } > +#else > + HANDLE h; > + DWORD dwAvail; > + status = apr_os_file_get(&h, btn->file); > + > + if (status) > + return svn_error_wrap_apr(status, NULL); > + > + if (PeekNamedPipe(h, NULL, 0, NULL, &dwAvail, NULL)) > + { > + *data_available = (dwAvail > 0); > + return SVN_NO_ERROR; > + } > + > + return svn_error_create(SVN_ERR_STREAM_NOT_SUPPORTED, > + svn_error_wrap_apr(apr_get_os_error(), NULL), > + _("Windows doesn't support polling on files")); > +#endif > }
Interesting solution ... should be in APR, I guess? I'm wondering it's really safe to expect that the socked we got from APR is really an (un)named pipe? -- Brane