bug-gnulib
[Top][All Lists]
Advanced

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

Re: lchmod cygwin failure


From: Bruno Haible
Subject: Re: lchmod cygwin failure
Date: Sat, 27 Mar 2010 14:33:52 +0100
User-agent: KMail/1.9.9

Hi Simon,

> Building in cygwin fails because:
> 
> depbase=`echo test-fcntl-h-c++.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
>       g++ -DHAVE_CONFIG_H -I.  -I. -I. -I.. -I./.. -I../gllib -I./../gllib    
> -MT test-fcntl-h-c++.o -MD -MP -MF $depbase.Tpo -c -o test-fcntl-h-c++.o 
> test-fcntl-h-c++.cc &&\
>       mv -f $depbase.Tpo $depbase.Po
> In file included from ../gllib/fcntl.h:41,
>                  from test-fcntl-h-c++.cc:22:
> ../gllib/sys/stat.h:668: error: ‘lchmod’ was not declared in this scope
> ../gllib/sys/stat.h:668: error: invalid type in declaration before ‘;’ 
> token
> make[3]: *** [test-fcntl-h-c++.o] Error 1

The problem is that we try to attach a warning attribute to a function that is 
not
declared. This is in the case (defined __cplusplus && defined GNULIB_NAMESPACE).
In the opposite case, we do a #define lchmod chmod, and in this case there is 
also a
bug: we are attaching the warning attribute to the 'chmod' function.

Fixed as follows:


2010-03-27  Bruno Haible  <address@hidden>

        Fix a compilation error on Cygwin with g++ >= 4.3.
        * lib/sys_stat.in.h (lchmod): Don't warn about the use of this function
        if it is undefined or if we alias it to chmod.
        (lstat): Don't warn about the use of this function if it is undefined
        or if we alias it to stat.
        Reported by Simon Josefsson.

--- lib/sys_stat.in.h.orig      Sat Mar 27 14:28:06 2010
+++ lib/sys_stat.in.h   Sat Mar 27 14:24:25 2010
@@ -398,7 +398,9 @@
 #  endif
 _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode));
 # endif
+# if @HAVE_LCHMOD@
 _GL_CXXALIASWARN (lchmod);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef lchmod
 # if HAVE_RAW_DECL_LCHMOD
@@ -427,7 +429,9 @@
 # else
 _GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf));
 # endif
+# if @HAVE_LSTAT@
 _GL_CXXALIASWARN (lstat);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef lstat
 # if HAVE_RAW_DECL_LSTAT




reply via email to

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