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

RE: svn commit: r37615 - trunk/subversion/libsvn_ra_svn

From: Bert Huijben <rhuijben_at_sharpsvn.net>
Date: Thu, 7 May 2009 16:53:24 +0200

Hi Kyle,


(Sorry for top posting, but my mail client doesn't allow me to add something
between the other parts)


Apr internally never checks a header before calling exit(). It just checks
the define before #including the specific header named stdlib.h, so it
requires exit() to be inside stdlib.h or any already included header.


Apr defines apr_proc_fork() as a portable way to call fork (declared in
<apr_thread_proc.h> when APR_HAS_FORK is true)




From: Kyle McKay [mailto:mackyle_at_gmail.com]
Sent: donderdag 7 mei 2009 15:57
To: dev_at_subversion.tigris.org
Subject: Re: svn commit: r37615 - trunk/subversion/libsvn_ra_svn


On May 7, 2009, at 00:20, Bert Huijben <rhuijben_at_sharpsvn.net> wrote:


+static apr_status_t detach_child_cleanup(void *data)





I don't think we need the two outer #if's. (We only need the check for


The exit function is declared in stdlib.h. It's not appropriate to call it
if we haven't included the header where it's defined (hence the test for


The fork function is declared in unistd.h, it's not appropriate to try and
call it if we haven't included the header where it's defined (hence the test


For this patch it's also not appropriate to call fork if APR isn't using it
(hence the test for APR_HAS_FORK).


So the patch code is only compiled in if you have an stdlib.h (for exit())
and a unistd.h (for fork()) AND APR is using fork.


Are you certain that there aren't some APR-supported and Subversion
supported platforms where APR_HAS_FORK is true but one or the other of the
standard headers that declare fork/exit are missing? Some older systems


These defines check whether a specific header file exist and not if
functionality exist.


Actually the tests are there to avoid calling functions for which we haven't
included the header file which declares them.


Using these checks is most likely a dumb guess on whether this is running on
a Unix system. (stdlib.h is available on any operating system I know and
probably part of recent C standards).




If stdlib.h is available everywhere, then why does apr define a test for it
rather than just always use it?


Since apr does define a test for APR_HAVE_STDLIB_H, that suggests apr
supports systems without it and that the patch code should too.



Received on 2009-05-07 16:54:10 CEST

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