<sys/unistd.h> not namespace-clean

Fergus Henderson fjh@cs.mu.OZ.AU
Mon Jul 27 14:23:00 GMT 1998


I really wish Cygnus had used glibc rather than reimplementing it all
from scratch... if they'd done that, I probably wouldn't be reporting
this bug now.

The bug is that <sys/unistd.h> uses some names that are in the user's
namespace.  This means that certain programs which ought to work fail
with strange error messages in system header files.  For example:

	bash$ cat foo.c
	#define length 42
	#include <sys/unistd.h>
	int main() { return 0; }

	bash$ gcc foo.c
	In file included from C:\CYGNUS\B19\H-I386~1\lib\gcc-lib\i386-cygwin32
	\2.7-B19\../../../../i386-cygwin32/include/unistd.h:4,
			 from foo.c:2:
	C:\CYGNUS\B19\H-I386~1\lib\gcc-lib\i386-cygwin32\2.7-B19\../../../../i
	386-cygwin32/include/sys/unistd.h:76: parse error before `42'
	C:\CYGNUS\B19\H-I386~1\lib\gcc-lib\i386-cygwin32\2.7-B19\../../../../i
	386-cygwin32/include/sys/unistd.h:77: parse error before `42'

The fix is simple.

--- unistd.h	Thu Feb 26 10:42:23 1998
+++ unistd.h.fixed	Tue Jul 28 03:51:41 1998
@@ -73,8 +73,8 @@
 
 #ifdef __CYGWIN32__
 unsigned _EXFUN(usleep, (unsigned int _useconds ));
-int     _EXFUN(ftruncate, (int fd, off_t length));
-int     _EXFUN(truncate, (const char *, off_t length));
+int     _EXFUN(ftruncate, (int _fd, off_t _length));
+int     _EXFUN(truncate, (const char *, off_t _length));
 #endif
 
 # define	F_OK	0

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: < http://www.cs.mu.oz.au/~fjh >  |  of excellence is a lethal habit"
PGP: finger fjh@128.250.37.3        |     -- the last words of T. S. Garp.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".



More information about the Cygwin mailing list