1. alloca patch below needed for HP-UX and AIX. 2. The following is not legal C89 code: struct fd_read r = { { STACK_HEADER, do_read, do_recv }, fd->fd }; You cannot assign a non-const value at initialization time. I think C99 allows this. The Sun and HP vendor compilers complain (though the Sun version allows it because they have started to incorporate C99 features). -- albert chin (china@thewrittenword.com) -- snip snip --- src/io.c.orig Tue Nov 27 13:04:16 2001 +++ src/io.c Tue Nov 27 13:42:26 2001 @@ -21,11 +21,28 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + #include "io.h" #include "werror.h" #include "xalloc.h" #include "format.h" +/* Make alloca work the best possible way. */ +#ifdef __GNUC__ +#define alloca __builtin_alloca +#else /* not __GNUC__ */ +#if HAVE_ALLOCA_H +#include <alloca.h> +#else /* not __GNUC__ or HAVE_ALLOCA_H */ +#ifndef _AIX /* Already did AIX, up at the top. */ +char *alloca (); +#endif /* not _AIX */ +#endif /* not HAVE_ALLOCA_H */ +#endif /* not __GNUC__ */ + #include <assert.h> #include <string.h> @@ -327,7 +344,6 @@ { debug("Read EOF on fd %i.\n", closure->fd); return A_EOF; - return 0; } if (res > 0) return res; @@ -400,7 +416,9 @@ int res; struct fd_read r = - { { STACK_HEADER, do_read, do_recv }, fd->fd }; + { { STACK_HEADER, do_read, do_recv }, 0 }; + + r.fd = fd->fd; /* The handler function may install a new handler */ res = READ_HANDLER(self->handler, @@ -482,7 +500,9 @@ int res; struct fd_write w = - { { STACK_HEADER, do_write }, fd->fd }; + { { STACK_HEADER, do_write }, 0 }; + + w.fd = fd->fd; assert(self->buffer); @@ -652,7 +672,9 @@ int blocking_read(int fd, struct read_handler *handler) { struct fd_read r = - { { STACK_HEADER, do_read }, fd }; + { { STACK_HEADER, do_read }, 0 }; + + r.fd = fd; for (;;) {
participants (1)
-
syslog-ng@lists.thewrittenword.com