chiark / gitweb /
Only retry connect on EINTR.
[userv.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index d7211b646a595be7b75e014974f624570715626f..dee95972656f39753b378d1ff4d835b5f49fa981 100644 (file)
--- 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
 * <stdarg.h> (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.