Okay, here is a patch, which just copies STDOUT_FILENO into a memory
address then passes the address of that memory.  It seems to work for
me.
Modified:   subversion/client/diff.c
Log:    Changed to use a copy of STDOUT_FILENO, so that we can take the
address of it.
Revision    Changes Path
1.1         +2 -1   subversion/client/diff.c
Index: diff.c
===================================================================
RCS file: /cvs/subversion/subversion/client/diff.c,v
retrieving revision 1.1
diff -u -p -r1.1 diff.c
--- diff.c	2001/01/26 14:21:06	1.1
+++ diff.c	2001/01/26 14:54:29
@@ -37,6 +37,7 @@ svn_cl__print_file_diff (svn_string_t *p
   svn_error_t *err;
   svn_string_t *pristine_copy_path;
   const char *args[5];
+  apr_os_file_t stdout_fileno = STDOUT_FILENO;
 
   apr_file_t *outhandle = NULL;
 
@@ -49,7 +50,7 @@ svn_cl__print_file_diff (svn_string_t *p
 
   /* Get an apr_file_t representing stdout, which is where we'll have
      the diff program print to. */
-  status = apr_put_os_file (&outhandle, (apr_os_file_t *) STDOUT_FILENO, pool);
+  status = apr_put_os_file (&outhandle, &stdout_fileno, pool);
   if (status)
     return svn_error_create (status, 0, NULL, pool,
                              "error: can't open handle to stdout");
On Fri, Jan 26, 2001 at 09:40:50AM -0500, Kevin Pilch-Bisson wrote:
> On Fri, Jan 26, 2001 at 08:37:57AM -0600, Ben Collins-Sussman wrote:
> > Kevin Pilch-Bisson <kevin@pilch-bisson.net> writes:
> >  
> > > Anyway try status = apr_put_os_file(&file, &STDOUT_FILENO, pool).  My
> > > guess is that your segfault was because you casted an int to a pointer,
> > > and then the filedes assignment dereferenced that pointer.
> > 
> > Uh, this won't compile.  You can't place an `&' in front of int, can you?
> > 
> >      diff.c:52: invalid lvalue in unary `&'
> > 
> > I can't find any reference to STDOUT_FILENO in apr, except in apr.hw,
> > which is a win32-specific file.  What the heck is this thing?  :)
> > 
> > Well, I checked in `svn diff' now, so somebody feel free to make
> > client/diff.c work correctly.  :)
> > ____________________________________________________________
> Well you can place an & in from for an int, but not in front of a
> literal, which is what STD_FILENO is since it is #defined.  I'll take a
> look at it, and let you know what I find.
> -- 
> >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Kevin Pilch-Bisson
> kevin@pilch-bisson.net
> http://www.pilch-bisson.net
> PGP Public Key At http://pgp.pilch-bisson.net
-- 
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kevin Pilch-Bisson
kevin@pilch-bisson.net
http://www.pilch-bisson.net
PGP Public Key At http://pgp.pilch-bisson.net
- application/pgp-signature attachment: stored
 
Received on Sat Oct 21 14:36:20 2006