* strtoul;
* memcpy, memset, memcpy;
* realloc(0,size) must work and be equivalent to malloc(size).
+* free(0) must work and do nothing
* <stdarg.h> (not varargs) and v[sf][n]printf.
System interfaces:
* Unix-domain (AF_UNIX) stream sockets, for use with:
* BSD sockets - socket(), bind(), listen(), accept(), connect();
* socketpair(2);
-* lstat(2) (though stat(2) will be safe on systems without symlinks).
+* lstat(2) (though stat(2) will be safe on systems without symlinks,
+ if you say -Dlstat=stat).
* Pipes:
* creating using pipe(2) and mkfifo(2);
* proper interaction between open(O_RDWR), open(O_RDONLY),
- open(O_WRONLY), close(), dup2, EPIPE, SIGPIPE, &c.;
+ open(O_WRONLY), close(), dup2, EPIPE, SIGPIPE, &c.
+ (ie, opening pipes with O_RDWR never blocks; EPIPE happens
+ if you write with no readers; EOF happens if you read with
+ no buffered data and writers)
* POSIX signal handling - sigaction(2), sigprocmask(2), sigsuspend(2);
To format the documentation:
have been called (but syslog will not necessarily have been called).
We assume that strerror is completely reentrant.
+
+PROBLEMS
+
+* `function declaration isn't a prototype'
+
+ One some systems (at least some versions of NetBSD, for example),
+ the SIG_IGN and SIG_DFL macros contain function declarations (as part
+ of a typecast, presumably) which are not prototypes. The warning
+ options that are used by default if the configure script detects that
+ you're using a good GCC then cause the compilation to fail. You must
+ use
+ make CFLAGS=-O2
+ instead of just `make', thus suppressing warnings.
+
+ The bug is actually in your system header files, for not specifying
+ the number and types of arguments to signal handler functions when
+ they cast in the SIG_IGN and SIG_DFL macros.