mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
f8f3b33ea5
This prevents the following compile error that may happens if "system/filesys.h" is included before "system/capability.h" on Ubuntu 16.04: [1802/4407] Compiling source3/lib/system.c In file included from ../../lib/replace/system/filesys.h:112:0, from ../../source3/include/vfs.h:29, from ../../source3/include/smb.h:150, from ../../source3/include/includes.h:284, from ../../source3/lib/system.c:23: /usr/include/x86_64-linux-gnu/sys/xattr.h:32:3: error: expected identifier before numeric constant XATTR_CREATE = 1, /* set value, fail if attr already exists. */ ^ The above error is from compiling a source tree which includes a change that adds an include "system/filesys.h" to the top of "source3/include/vfs.h". "source3/lib/system.c" has the following includes: #include "includes.h" #include "system/syslog.h" #include "system/capability.h" #include "system/passwd.h" #include "system/filesys.h" #include "../lib/util/setid.h" The first include of "includes.h" pulls in "vfs.h" which will pull in "system/filesys.h" with the mentioned change. "system/filesys.h" pulls in <attr/xattr.h> which has this define #define XATTR_CREATE 0x1 Later in "source3/lib/system.c" "system/capability.h" is included which includes <sys/xattr.h> on Ubuntu 16.04 (not in later versions of glibc). This defines the XATTR_* values as an enum: enum { XATTR_CREATE = 1, /* set value, fail if attr already exists. */ XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */ }; The previous define of XATTR_CREATE as 1 makes this enum { 1 = 1, /* set value, fail if attr already exists. */ 2 = 2 /* set value, fail if attr does not exist. */ }; which is invalid C. The compiler error diagnostic is a bit confusing, as it prints the original enum from the include file. See also: <https://bugs.freedesktop.org/show_bug.cgi?id=78741> <https://bugs.launchpad.net/ubuntu/+source/attr/+bug/1288091> <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=756097> Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Björn Baumbach <bb@samba.org> |
||
---|---|---|
.. | ||
capability.h | ||
dir.h | ||
filesys.h | ||
glob.h | ||
gssapi.h | ||
iconv.h | ||
kerberos.h | ||
locale.h | ||
network.h | ||
nis.h | ||
passwd.h | ||
readline.h | ||
README | ||
select.h | ||
shmem.h | ||
syslog.h | ||
terminal.h | ||
threads.h | ||
time.h | ||
wait.h | ||
wscript_configure |
This directory contains wrappers around logical groups of system include files. The idea is to avoid #ifdef blocks in the main code, and instead put all the necessary conditional includes in subsystem specific header files in this directory.