On Fri, 24 Jan 2003, Bill Tutt wrote:
From: Karl Fogel [mailto:kfogel@newton.ch.collab.net]
cmpilato@tigris.org writes:
Log:
* subversion/clients/cmdline/cat-cmd.c
(svn_client_cat): Finish Issue #1104. A poem by Bill Tutt
billtut@microsoft.com.
Lovely poem -- it's also nice to say something about what
actually happened :-). The issue tracker is an adjunct to
the logs, but not a replacement.
+ /* Grab an APR stdout I/O. */
+ status = apr_file_open_stdout (std_out, pool);
+ if (!APR_STATUS_IS_SUCCESS (status))
+ {
+ return svn_error_create (status, NULL, );
+ }
+
for (i = 0; i targets-nelts; i++)
{
const char *target = ((const char **) (targets-elts))[i];
- svn_stream_t *out = svn_stream_from_stdio (stdout, pool);
+ svn_stream_t *out = svn_stream_from_aprfile (std_out, pool);
A comment explaining why handle returned by
apr_file_open_stdout() is preferable to the C library stdout
would help a lot here. I'm guessing it's that the C stdout
can't trusted to treat data as binary on all platforms,
whereas the APR version can? But not sure about that...
APR never uses stdio. Stdio (i.e. open, fopen, and fdopen) on Win32 is
the only thing that cares about text vs. binary.
Dunno about all APR platforms, but I hope this remains the case
everywhere. If it isn't it's likely an APR bug.
I can shed some light on this. :-) The only reason that the
apr_file_open_std* functions exist is that you may not always have a
stderr/out/in on Windows. This is generally a problem with newer versions
of Windows and services.
The other problem is that the C library functions generally work
differently on Windows and Unix. So, by using apr_file_open_std*
functions, you can get a handle to an APR struct that works with the APR
functions which are supposed to work identically on all platforms.
Ryan
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 14 02:14:12 2006