bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: openat: conditional dependencies


From: Bruno Haible
Subject: Re: openat: conditional dependencies
Date: Tue, 8 Nov 2011 12:42:20 +0100
User-agent: KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; )

Jim, ping?

> Hi Jim,
> 
> Now that the module structure of the *at functions is cleaned up - one
> function provided per module (except for mkfifoat and mknodat which can
> stay in a single module because they are nearly the same thing) -, let
> me try to improve what's built with --conditional-dependencies.
> 
> Here's the first proposed patch, for the 'openat' replacement.
> 
> The save-cwd code is only needed when $HAVE_OPENAT = 0 (i.e. when the system
> does not have openat()), not when $REPLACE_OPENAT = 1 (i.e. when gnulib
> overrides the system's openat() function). But the .c file currently includes
> save-cwd.h in both cases. Since we cannot include save-cwd.h without having
> invoked gl_SAVE_CWD, we need to depend on 'save-cwd' (and thus compile the
> code of save-cwd.c) _just_ for the sake of the position of the #include
> statement.
> 
> Here's the proposed patch. While it is a good general guideline to do all
> #includes before all function definitions and all #ifs, I think it's worth
> deviating from that practice if it can avoid to compile unused compilation
> units.
> 
> 
> 2011-11-05  Bruno Haible  <address@hidden>
> 
>       openat: Conditionalize dependencies.
>       * lib/openat.c: Reduce the scope of some #includes.
>       * modules/openat (Depends-on): Add conditions.
> 
> --- lib/openat.c.orig Sat Nov  5 11:53:34 2011
> +++ lib/openat.c      Sat Nov  5 11:48:57 2011
> @@ -47,10 +47,6 @@
>  #include <string.h>
>  #include <sys/stat.h>
>  
> -#include "dosname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
> -#include "openat-priv.h"
> -#include "save-cwd.h"
> -
>  #if HAVE_OPENAT
>  
>  /* Like openat, but work around Solaris 9 bugs with trailing slash.  */
> @@ -144,6 +140,10 @@
>  
>  #else /* !HAVE_OPENAT */
>  
> +# include "dosname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
> +# include "openat-priv.h"
> +# include "save-cwd.h"
> +
>  /* Replacement for Solaris' openat function.
>     <http://www.google.com/search?q=openat+site:docs.sun.com>
>     First, try to simulate it via open ("/proc/self/fd/FD/FILE").
> --- modules/openat.orig       Sat Nov  5 11:53:34 2011
> +++ modules/openat    Sat Nov  5 11:52:40 2011
> @@ -9,20 +9,20 @@
>  m4/mode_t.m4
>  
>  Depends-on:
> -at-internal
> -dosname
> -errno
> -extensions
> -fchdir
>  fcntl-h
> -fstat
> +extensions
>  largefile
> -open
> -openat-die
> -openat-h
> -save-cwd
> -stdbool
> -sys_stat
> +openat-h        [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1]
> +stdbool         [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1]
> +sys_stat        [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1]
> +fstat           [test $REPLACE_OPENAT = 1]
> +at-internal     [test $HAVE_OPENAT = 0]
> +dosname         [test $HAVE_OPENAT = 0]
> +errno           [test $HAVE_OPENAT = 0]
> +fchdir          [test $HAVE_OPENAT = 0]
> +open            [test $HAVE_OPENAT = 0]
> +openat-die      [test $HAVE_OPENAT = 0]
> +save-cwd        [test $HAVE_OPENAT = 0]
>  
>  configure.ac:
>  gl_FUNC_OPENAT
-- 
In memoriam The inmates of the Daugavpils Ghetto 
<http://en.wikipedia.org/wiki/Daugavpils_Ghetto>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]