The test-sys_stat self-test fails on debian etch x86, see: http://autobuild.josefsson.org/gnulib/log-200901140954236318000.txt
The problem is that sys/stat.h does not define nlink_t (at least not unconditionally), however sys/types.h does: gnu...@mejsel:~$ cat>foo.c #include <sys/stat.h> int main (void) { nlink_t foo; } gnu...@mejsel:~$ gcc -o foo foo.c foo.c: In function 'main': foo.c:2: error: 'nlink_t' undeclared (first use in this function) foo.c:2: error: (Each undeclared identifier is reported only once foo.c:2: error: for each function it appears in.) foo.c:2: error: expected ';' before 'foo' gnu...@mejsel:~$ cat>bar.c #include <sys/types.h> int main (void) { nlink_t foo; } gnu...@mejsel:~$ gcc -o bar bar.c I see two solutions. I pushed 2). Thoughts? 1) Work around for the self-test only. Disadvantage: does not provide nlink_t to application that (correctly) expects nlink_t to be provided by sys/stat.h. diff --git a/tests/test-sys_stat.c b/tests/test-sys_stat.c index 4b5eb76..3b5aab1 100644 --- a/tests/test-sys_stat.c +++ b/tests/test-sys_stat.c @@ -18,6 +18,7 @@ #include <config.h> +#include <sys/types.h> #include <sys/stat.h> #include "verify.h" 2) sys_stat_h.m4 should detect the situation, and make the replacement sys/stat.h header provide a nlink_t. The easiest way to provide this replacement without causing conflicts appears to be to include sys/types.h, so we might as well do that unconditionally. This seems to be the same as in many other *.in.h files. diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h index a526833..da965d0 100644 --- a/lib/sys_stat.in.h +++ b/lib/sys_stat.in.h @@ -35,6 +35,9 @@ #ifndef _GL_SYS_STAT_H +/* Get nlink_t. */ +#include <sys/types.h> + /* The include_next requires a split double-inclusion guard. */ #...@include_next@ @NEXT_SYS_STAT_H@ /Simon