The compile error message:
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I../lib -I../src -I../lib -I../libopts \ -I../libopts -g -O2 -MT pw-pw.o -MD -MP -MF .deps/pw-pw.Tpo \ -c -o pw-pw.o `test -f 'pw.c' || echo './'`pw.c In file included from pw.h:47:0, from pw.c:20: ../lib/unistd.h:603:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'extern'
lib/unistd.h contains: 593 #if 1 594 # if 0 595 /* Automatically included by modules that need a replacement for close. */ 596 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 597 # undef close 598 # define close rpl_close 599 # endif 600 _GL_FUNCDECL_RPL (close, int, (int fd)); 601 _GL_CXXALIAS_RPL (close, int, (int fd)); 602 # else 603 _GL_CXXALIAS_SYS (close, int, (int fd)); 604 # endif 605 _GL_CXXALIASWARN (close); 606 #elif 0 607 # undef close 608 # define close close_used_without_requesting_gnulib_module_close 609 #elif defined GNULIB_POSIXCHECK 610 # undef close 611 /* Assume close is always declared. */ 612 _GL_WARN_ON_USE (close, "close does not portably work on sockets - " 613 "use gnulib module close for portability"); 614 #endif The post-pre-processed result:
_GL_INLINE_HEADER_BEGIN # 603 "../lib/unistd.h" 3 extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; # 1839 "../lib/unistd.h" 3 _GL_INLINE_HEADER_END
GCC doesn't like that "_GL_INLINE_HEADER_xxx" stuff.