X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=userv.git;a=blobdiff_plain;f=INSTALL;h=dee95972656f39753b378d1ff4d835b5f49fa981;hp=d7211b646a595be7b75e014974f624570715626f;hb=1982e587ecd564773110ad1099eabf5b12cb2a57;hpb=9f56f874416db295bdb50d448bd99cdd34db969d diff --git a/INSTALL b/INSTALL index d7211b6..dee9597 100644 --- a/INSTALL +++ b/INSTALL @@ -32,6 +32,7 @@ C Library: * strtoul; * memcpy, memset, memcpy; * realloc(0,size) must work and be equivalent to malloc(size). +* free(0) must work and do nothing * (not varargs) and v[sf][n]printf. System interfaces: @@ -46,11 +47,15 @@ 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: @@ -79,3 +84,20 @@ malloc, unless stdio makes gratuitous mallocs). openlog will already 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.