[PATCH] --std=c89 error in sys/signal.h

Yaakov (Cygwin/X) yselkowitz@users.sourceforge.net
Tue Sep 29 20:51:00 GMT 2009


Compiling a file which #include's <sys/signal.h> in C89 mode fails:

$ echo "#include <sys/signal.h>" > test.c
$ gcc -c test.c
$ gcc -c -std=c89 test.c
In file included from /usr/include/sys/signal.h:107,
                  from test.c:1:
/usr/include/cygwin/signal.h:74: error: expected 
specifier-qualifier-list before 'pthread_attr_t'
/usr/include/cygwin/signal.h:80: error: expected 
specifier-qualifier-list before '__uint32_t'
/usr/include/cygwin/signal.h:96: error: expected 
specifier-qualifier-list before 'pid_t'
/usr/include/cygwin/signal.h:270: error: expected ')' before 'int'
In file included from test.c:1:
/usr/include/sys/signal.h:152: error: expected ')' before 'int'

The problem is that both <cygwin/signal.h> and an #ifdef __CYGWIN__ 
section of <sys/signal.h> need those typedefs from <sys/types.h>, but 
the latter is only #include'd #ifdef _POSIX_THREADS, which is off in C89 
mode.

I see two possible solutions:

1) Unconditionally #include <sys/types.h> in <sys/signal.h> (newlib), OR
2) #include <sys/types.h> in <cygwin/signal.h>.

Since this appears to be Cygwin specific, I went for the latter.  Patch 
attached.


Yaakov

-------------- next part --------------
A non-text attachment was scrubbed...
Name: cygwin-sys-signal-c89.patch
Type: text/x-patch
Size: 609 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20090929/a8e050ae/attachment.bin>


More information about the Cygwin-patches mailing list