You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@hyperreal.org on 1999/05/25 19:04:16 UTC

cvs commit: apache-apr/include apr_errno.h apr_network_io.h apr_thread_proc.h apr_time.h

rbb         99/05/25 10:04:15

  Modified:    apr/network_io/unix poll.c sendrecv.c sockets.c sockopt.c
               apr/test client.c server.c testproc.c testsock.c
                        testthread.c testtime.c
               apr/threadproc/unix proc.c signals.c thread.c threadcancel.c
                        threadpriv.c
               apr/time/unix access.c time.c
               include  apr_errno.h apr_network_io.h apr_thread_proc.h
                        apr_time.h
  Log:
  This brings the rest of the apr files up to par.  Every apr function now
  returns a status code.  Sopme of the test programs no longer work, I'll looking
  into those.
  
  Revision  Changes    Path
  1.9       +23 -14    apache-apr/apr/network_io/unix/poll.c
  
  Index: poll.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/poll.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- poll.c	1999/05/24 02:23:43	1.8
  +++ poll.c	1999/05/25 17:03:44	1.9
  @@ -60,12 +60,14 @@
   #include <sys/poll.h>
   
   
  -ap_pollfd_t *ap_setup_poll(ap_context_t *cont, ap_int32_t num)
  +ap_status_t ap_setup_poll(ap_context_t *cont, ap_int32_t num, struct pollfd_t **new)
   {
  -    struct pollfd_t *new;
  -    new = (struct pollfd_t *)ap_palloc(cont->pool, sizeof(struct pollfd_t) * num);
  -    new->cntxt = cont;
  -    return new;
  +    (*new) = (struct pollfd_t *)ap_palloc(cont->pool, sizeof(struct pollfd_t) * num);
  +    if ((*new) == NULL) {
  +        return APR_ENOMEM;
  +    }
  +    (*new)->cntxt = cont;
  +    return APR_SUCCESS;
   }
   
   ap_int16_t get_event(ap_int16_t event)
  @@ -108,24 +110,25 @@
       return rv;
   }
   
  -void ap_add_poll_socket(struct pollfd_t *aprset, 
  +ap_status_t ap_add_poll_socket(struct pollfd_t *aprset, 
   			       struct socket_t *sock, ap_int16_t event, 
                                  ap_int32_t pos)
   {
       aprset[pos].sock = sock;
       aprset[pos].events = get_event(event);
  +    return APR_SUCCESS;
   }
   
  -ap_int32_t ap_poll(struct pollfd_t *aprset, ap_int32_t nsds, ap_int32_t timeout)
  +ap_status_t ap_poll(struct pollfd_t *aprset, ap_int32_t *nsds, ap_int32_t timeout)
   {
       int i;
       struct pollfd *pollset;
       int rv;
   
       pollset = (struct pollfd *)ap_palloc(aprset->cntxt->pool, 
  -                                         sizeof(struct pollfd) * nsds);
  +                                         sizeof(struct pollfd) * (*nsds));
   
  -    for (i = 0; i < nsds; i++) {
  +    for (i = 0; i < (*nsds); i++) {
           pollset[i].fd = aprset[i].sock->socketdes;
           pollset[i].events = aprset[i].events;
       }
  @@ -134,16 +137,22 @@
           timeout *= 1000;
       }
   
  -    rv = poll(pollset, nsds, timeout);
  +    rv = poll(pollset, (*nsds), timeout);
  +    (*nsds) = rv;
       
  -    for (i = 0; i < nsds; i++) {
  +    for (i = 0; i < (*nsds); i++) {
           aprset[i].revents = get_revent(pollset[i].revents);
       }
  -    return rv;
  +    
  +    if ((*nsds) < 0) {
  +        return errno;
  +    }
  +    return APR_SUCCESS;
   }
   
  -ap_int16_t ap_get_revents(struct pollfd_t *aprset, ap_int32_t pos)
  +ap_status_t ap_get_revents(struct pollfd_t *aprset, ap_int32_t pos, ap_int16_t *event)
   {
  -    return aprset[pos].revents;
  +    (*event) = aprset[pos].revents;
  +    return APR_SUCCESS;
   }
    
  
  
  
  1.9       +14 -10    apache-apr/apr/network_io/unix/sendrecv.c
  
  Index: sendrecv.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/sendrecv.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- sendrecv.c	1999/05/24 02:04:08	1.8
  +++ sendrecv.c	1999/05/25 17:03:48	1.9
  @@ -61,12 +61,12 @@
   #include "apr_network_io.h"
   #include <sys/time.h>
   
  -ap_ssize_t ap_send(struct socket_t *sock, const char *buf, int len, time_t sec)
  +ap_status_t ap_send(struct socket_t *sock, const char *buf, ap_ssize_t *len, time_t sec)
   {
       ssize_t rv;
       
       do {
  -        rv = write(sock->socketdes, buf, len);
  +        rv = write(sock->socketdes, buf, (*len));
       } while (rv == -1 && errno == EINTR);
   
       if (rv == -1 && errno == EAGAIN && sec > 0) {
  @@ -84,23 +84,25 @@
           } while (srv == -1 && errno == EINTR);
   
           if (srv < 1) {
  -            return (ap_ssize_t) -1;
  +            (*len) = -1;
  +            return errno;
           }
           else {
               do {
  -                rv = write(sock->socketdes, buf, len);
  +                rv = write(sock->socketdes, buf, (*len));
               } while (rv == -1 && errno == EINTR);
           }
       }
  -    return (ap_ssize_t) rv;
  +    (*len) = rv;
  +    return APR_SUCCESS;
   }
   
  -ap_ssize_t ap_recv(struct socket_t *sock, char *buf, int len, time_t sec)
  +ap_status_t ap_recv(struct socket_t *sock, char *buf, ap_ssize_t *len, time_t sec)
   {
       ssize_t rv;
       
       do {
  -        rv = read(sock->socketdes, buf, len);
  +        rv = read(sock->socketdes, buf, (*len));
       } while (rv == -1 && errno == EINTR);
   
       if (rv == -1 && errno == EAGAIN && sec > 0) {
  @@ -118,14 +120,16 @@
           } while (srv == -1 && errno == EINTR);
   
           if (srv < 1) {
  -            return (ap_ssize_t) -1;
  +            (*len) = -1;
  +            return errno;
           }
           else {
               do {
  -                rv = read(sock->socketdes, buf, len);
  +                rv = read(sock->socketdes, buf, (*len));
               } while (rv == -1 && errno == EINTR);
           }
       }
  -    return (ap_ssize_t) rv;
  +    (*len) = rv;
  +    return APR_SUCCESS;
   }
   
  
  
  
  1.17      +53 -39    apache-apr/apr/network_io/unix/sockets.c
  
  Index: sockets.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/sockets.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- sockets.c	1999/05/24 02:04:08	1.16
  +++ sockets.c	1999/05/25 17:03:48	1.17
  @@ -72,34 +72,38 @@
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return errno;
       }
   }
   
  -struct socket_t *ap_create_tcp_socket(ap_context_t *cont)
  +ap_status_t ap_create_tcp_socket(ap_context_t *cont, struct socket_t **new)
   {
  -    struct socket_t *thesocket;
  +    (*new) = (struct socket_t *)ap_palloc(cont->pool, sizeof(struct socket_t));
   
  -    thesocket = (struct socket_t *)ap_palloc(cont->pool, sizeof(struct socket_t));
  -   
  -    thesocket->cntxt = cont; 
  -    thesocket->socketdes = socket(AF_INET ,SOCK_STREAM, IPPROTO_TCP);
  -    thesocket->remote_hostname = NULL;
  -
  -    thesocket->addr = (struct sockaddr_in *)ap_palloc(thesocket->cntxt->pool,
  +    if ((*new) == NULL) {
  +        return APR_ENOMEM;
  +    }
  +    (*new)->cntxt = cont; 
  +    (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt->pool,
                          sizeof(struct sockaddr_in));
  -    thesocket->addr->sin_family = AF_INET;
   
  -    thesocket->addr_len = sizeof(*thesocket->addr);
  -    
  -    if (thesocket->socketdes < 0) {
  -        return NULL;
  +    if ((*new)->addr == NULL) {
  +        return APR_ENOMEM;
       }
  -    else {
  -        ap_register_cleanup(thesocket->cntxt->pool, (void *)thesocket, 
  -                            socket_cleanup, NULL);
  -        return thesocket;
  + 
  +    (*new)->socketdes = socket(AF_INET ,SOCK_STREAM, IPPROTO_TCP);
  +    (*new)->remote_hostname = NULL;
  +
  +    (*new)->addr->sin_family = AF_INET;
  +
  +    (*new)->addr_len = sizeof(*(*new)->addr);
  +    
  +    if ((*new)->socketdes < 0) {
  +        return errno;
       }
  +    ap_register_cleanup((*new)->cntxt->pool, (void *)(*new), 
  +                        socket_cleanup, NULL);
  +    return APR_SUCCESS;
   } 
   
   ap_status_t ap_shutdown(struct socket_t *thesocket, ap_shutdown_how_e how)
  @@ -108,14 +112,14 @@
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return errno;
       }
   }
   
   ap_status_t ap_close_socket(struct socket_t *thesocket)
   {
  -    socket_cleanup(thesocket);
       ap_kill_cleanup(thesocket->cntxt->pool, thesocket, socket_cleanup);
  +    return socket_cleanup(thesocket);
   }
   
   ap_status_t ap_setport(struct socket_t *sock, ap_uint32_t port)
  @@ -128,7 +132,7 @@
   {
       sock->addr->sin_addr.s_addr = INADDR_ANY;
       if (bind(sock->socketdes, (struct sockaddr *)sock->addr, sock->addr_len) == -1)
  -        return APR_FAILURE;
  +        return errno;
       else
           return APR_SUCCESS;
   }
  @@ -136,35 +140,39 @@
   ap_status_t ap_listen(struct socket_t *sock, ap_int32_t backlog)
   {
       if (listen(sock->socketdes, backlog) == -1)
  -        return APR_FAILURE;
  +        return errno;
       else
           return APR_SUCCESS;
   }
   
  -struct socket_t *ap_accept(const struct socket_t *sock)
  +ap_status_t ap_accept(const struct socket_t *sock, struct socket_t **new)
   {
  -    struct socket_t *new = (struct socket_t *)ap_palloc(sock->cntxt->pool, 
  -                            sizeof(struct socket_t));
       struct hostent *hptr;
  +    
  +    (*new) = (struct socket_t *)ap_palloc(sock->cntxt->pool, 
  +                            sizeof(struct socket_t));
   
  -    new->cntxt = sock->cntxt;
  -    new->addr = (struct sockaddr_in *)ap_palloc(new->cntxt->pool, 
  +    (*new)->cntxt = sock->cntxt;
  +    (*new)->addr = (struct sockaddr_in *)ap_palloc((*new)->cntxt->pool, 
                    sizeof(struct sockaddr_in));
  -    new->addr_len = sizeof(struct sockaddr_in);
  +    (*new)->addr_len = sizeof(struct sockaddr_in);
   
  -    new->socketdes = accept(sock->socketdes, (struct sockaddr *)new->addr, &new->addr_len);
  +    (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->addr,
  +                        &(*new)->addr_len);
   
  -    if (new->socketdes < 0) {
  -        return NULL;
  +    if ((*new)->socketdes < 0) {
  +        return errno;
       }
       
  -    hptr = gethostbyaddr((char *)&new->addr->sin_addr, sizeof(struct in_addr), AF_INET);
  +    hptr = gethostbyaddr((char *)&(*new)->addr->sin_addr, 
  +                         sizeof(struct in_addr), AF_INET);
       if (hptr != NULL) {
  -        new->remote_hostname = strdup(hptr->h_name);
  +        (*new)->remote_hostname = strdup(hptr->h_name);
       }
       
  -    ap_register_cleanup(new->cntxt->pool, (void *)new, socket_cleanup, NULL);
  -    return new;
  +    ap_register_cleanup((*new)->cntxt->pool, (void *)(*new), 
  +                        socket_cleanup, NULL);
  +    return APR_SUCCESS;
   }
   
   ap_status_t ap_connect(struct socket_t *sock, char *hostname)
  @@ -173,8 +181,14 @@
   
       hp = gethostbyname(hostname);
   
  -    if ((sock->socketdes < 0) || (!hp) || (!sock->addr)) {
  -        return APR_FAILURE;
  +    if ((sock->socketdes < 0) || (!sock->addr)) {
  +        return APR_ENOTSOCK;
  +    }
  +    if (!hp)  {
  +        if (h_errno == TRY_AGAIN) {
  +            return EAGAIN;
  +        }
  +        return h_errno;
       }
       
       memcpy((char *)&sock->addr->sin_addr, hp->h_addr_list[0], hp->h_length);
  @@ -185,7 +199,7 @@
   
       if ((connect(sock->socketdes, sock->addr, sock->addr_len) < 0) &&
           (errno != EINPROGRESS)) {
  -        return APR_FAILURE;
  +        return errno;
       }
       else {
           sock->remote_hostname = strdup(hostname);
  
  
  
  1.7       +26 -14    apache-apr/apr/network_io/unix/sockopt.c
  
  Index: sockopt.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/sockopt.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- sockopt.c	1999/05/24 02:04:08	1.6
  +++ sockopt.c	1999/05/25 17:03:48	1.7
  @@ -56,6 +56,7 @@
   #include "networkio.h"
   #include "apr_network_io.h"
   #include "apr_general.h"
  +#include "apr_lib.h"
   #include <errno.h>
   #include <string.h>
   #include <sys/socket.h>
  @@ -79,10 +80,13 @@
       /* XXXX: this breaks things, but an alternative isn't obvious...*/
       return -1;
   #endif
  -    return fcntl(sd, F_SETFL, fd_flags);
  +    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
  +        return errno;
  +    }
  +    return APR_SUCCESS;
   }
   
  -int sononblock(int sd)
  +ap_status_t sononblock(int sd)
   {
       int fd_flags;
   
  @@ -97,7 +101,10 @@
       /* XXXX: this breaks things, but an alternative isn't obvious...*/
       return -1;
   #endif
  -    return fcntl(sd, F_SETFL, fd_flags);
  +    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
  +        return errno;
  +    }
  +    return APR_SUCCESS;
   }
   
   
  @@ -105,6 +112,7 @@
   {
       int one;
       struct linger li;
  +    ap_status_t stat;
   
       if (on)
           one = 1;
  @@ -113,34 +121,34 @@
   
       if (opt & APR_SO_KEEPALIVE) {
           if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (char *) one, sizeof(int)) == -1) {
  -            return APR_FAILURE;
  +            return errno;
           }
       }
       if (opt & APR_SO_DEBUG) {
           if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (char *) one, sizeof(int)) == -1) {
  -            return APR_FAILURE;
  +            return errno;
           }
       }
       if (opt & APR_SO_REUSEADDR) {
           if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (char *) one, sizeof(int)) == -1) {
  -            return APR_FAILURE;
  +            return errno;
           }
       }
       if (opt & APR_SO_NONBLOCK) {
           if (on) {
  -            if (soblock(sock->socketdes) == -1)
  -                return APR_FAILURE;
  +            if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) 
  +                return stat;
           }
           else {
  -            if (sononblock(sock->socketdes) == -1)
  -                return APR_FAILURE;
  +            if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS)
  +                return stat;
           }
       }
       if (opt & APR_SO_LINGER) {
           li.l_onoff = on;
           li.l_linger = MAX_SECS_TO_LINGER;
           if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) {
  -            return APR_FAILURE;
  +            return errno;
           }
       }
       return APR_SUCCESS;
  @@ -149,14 +157,18 @@
   ap_status_t ap_gethostname(ap_context_t *cont, char *buf, int len)
   {
       if (gethostname(buf, len) == -1)
  -        return APR_FAILURE;
  +        return errno;
       else
           return APR_SUCCESS;
   }
   
  -char *ap_get_remote_hostname(struct socket_t *sock)
  +ap_status_t ap_get_remote_hostname(struct socket_t *sock, char **name)
   {
  -    return sock->remote_hostname;
  +    (*name) = ap_pstrdup(sock->cntxt->pool, sock->remote_hostname);
  +    if (*name) {
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOMEM;
   }
   
   
  
  
  
  1.6       +18 -10    apache-apr/apr/test/client.c
  
  Index: client.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/client.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- client.c	1999/05/24 02:04:10	1.5
  +++ client.c	1999/05/25 17:03:53	1.6
  @@ -69,21 +69,27 @@
       ap_context_t *context;
       ap_socket_t *sock;
       ap_int32_t rv;
  +    ap_ssize_t length;
       struct timeval timeout;
       char datasend[STRLEN] = "Send data test";
       char datarecv[STRLEN];
   
  -    context = ap_initialize(NULL);
  +    fprintf(stdout, "Creating context.......");
  +    if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
  +        fprintf(stderr, "Something went wrong\n");
  +        exit(-1);
  +    }
  +    fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tClient:  Creating new socket.......");
  -    if ((sock = ap_create_tcp_socket(context)) == NULL) {
  +    if (ap_create_tcp_socket(context, &sock) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't create socket\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tClient:  Setting socket option NONBLOCK.......");
  -    if (ap_setsocketopt(sock, APR_SO_NONBLOCK, 1) == APR_FAILURE) {
  +    if (ap_setsocketopt(sock, APR_SO_NONBLOCK, 1) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Couldn't set socket option\n");
           exit(-1);
  @@ -91,7 +97,7 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tClient:  Setting port for socket.......");
  -    if (ap_setport(sock, 8021) == APR_FAILURE) {
  +    if (ap_setport(sock, 8021) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Couldn't set the port correctly\n");
           exit(-1);
  @@ -99,7 +105,7 @@
       fprintf(stdout, "OK\n");           
   
       fprintf(stdout, "\tClient:  Connecting to socket.......");
  -    if (ap_connect(sock, "localhost") == APR_FAILURE) {
  +    if (ap_connect(sock, "localhost") != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Could not connect\n");
           exit(-1);
  @@ -107,15 +113,17 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tClient:  Trying to send data over socket.......");
  -    if (ap_send(sock, datasend, STRLEN, 5) != STRLEN) {
  +    length = STRLEN;
  +    if (ap_send(sock, datasend, &length, 5) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Problem sending data\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
  -    
  +   
  +    length = STRLEN; 
       fprintf(stdout, "\tClient:  Trying to receive data over socket.......");
  -    if (ap_recv(sock, datarecv, STRLEN, 5) != STRLEN) {
  +    if (ap_recv(sock, datarecv, &length, 5) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Problem receiving data\n");
           exit(-1);
  @@ -128,7 +136,7 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tClient:  Shutting down socket.......");
  -    if (ap_shutdown(sock, APR_SHUTDOWN_WRITE) == APR_FAILURE) {
  +    if (ap_shutdown(sock, APR_SHUTDOWN_WRITE) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Could not shutdown socket\n");
           exit(-1);
  @@ -136,7 +144,7 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tClient:  Closing down socket.......");
  -    if (ap_close_socket(sock) == APR_FAILURE) {
  +    if (ap_close_socket(sock) != APR_SUCCESS) {
           fprintf(stderr, "Could not shutdown socket\n");
           exit(-1);
       }
  
  
  
  1.7       +24 -16    apache-apr/apr/test/server.c
  
  Index: server.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/server.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- server.c	1999/05/24 02:04:11	1.6
  +++ server.c	1999/05/25 17:03:53	1.7
  @@ -68,22 +68,28 @@
       ap_context_t *context;
       ap_socket_t *sock;
       ap_socket_t *sock2;
  +    ap_ssize_t length;
       ap_int32_t rv;
       ap_pollfd_t *sdset;
       char datasend[STRLEN];
       char datarecv[STRLEN] = "Recv data test";
   
  -    context = ap_initialize(NULL);
  +    fprintf(stdout, "Creating context.......");
  +    if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
  +        fprintf(stderr, "Could not create a context\n");
  +        exit(-1);
  +    }
  +    fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  Creating new socket.......");
  -    if ((sock = ap_create_tcp_socket(context)) == NULL) {
  +    if (ap_create_tcp_socket(context, &sock) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't create socket\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  Setting socket option NONBLOCK.......");
  -    if (ap_setsocketopt(sock, APR_SO_NONBLOCK, 1) == APR_FAILURE) {
  +    if (ap_setsocketopt(sock, APR_SO_NONBLOCK, 1) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Couldn't set socket option\n");
           exit(-1);
  @@ -91,7 +97,7 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  Setting port for socket.......");
  -    if (ap_setport(sock, 8021) == APR_FAILURE) {
  +    if (ap_setport(sock, 8021) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Couldn't set the port correctly\n");
           exit(-1);
  @@ -99,15 +105,15 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  Binding socket to port.......");
  -    if (ap_bind(sock) == APR_FAILURE) {
  +    if (ap_bind(sock) != APR_SUCCESS) {
           ap_close_socket(sock);
  -        fprintf(stderr, "Could not bind  %d\n", errno);
  +        fprintf(stderr, "Could not bind\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
       
       fprintf(stdout, "\tServer:  Listening to socket.......");
  -    if (ap_listen(sock, 8021) == APR_FAILURE) {
  +    if (ap_listen(sock, 8021) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Could not listen\n");
           exit(-1);
  @@ -115,13 +121,13 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  Setting up socket for polling.......");
  -    sdset = ap_setup_poll(context, 1);
  +    ap_setup_poll(context, 1, &sdset);
       ap_add_poll_socket(sdset, sock, APR_POLLIN, 0);
       fprintf(stdout, "OK\n");
       
       fprintf(stdout, "\tServer:  Beginning to poll for socket.......");
  -    rv = ap_poll(sdset, 1, -1); 
  -    if (rv == -1) {
  +    rv = 1; 
  +    if (ap_poll(sdset, &rv, -1) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Select caused an error\n");
           exit(-1);
  @@ -134,15 +140,16 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  Accepting a connection.......");
  -    if ((sock2 = ap_accept(sock)) == NULL) {
  +    if (ap_accept(sock, &sock2) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Could not accept connection.\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
  +    length = STRLEN;
       fprintf(stdout, "\tServer:  Trying to recv data from socket.......");
  -    if (ap_recv(sock2, datasend, STRLEN, 5) != STRLEN) {
  +    if (ap_recv(sock2, datasend, &length, 5) != APR_SUCCESS) {
           ap_close_socket(sock);
           ap_close_socket(sock2);
           fprintf(stderr, "Problem recving data\n");
  @@ -156,8 +163,9 @@
       }
       fprintf(stdout, "OK\n");
   
  +    length = STRLEN;
       fprintf(stdout, "\tServer:  Sending data over socket.......");
  -    if (ap_send(sock2, datarecv, STRLEN, 5) != STRLEN) {
  +    if (ap_send(sock2, datarecv, &length, 5) != APR_SUCCESS) {
           ap_close_socket(sock);
           ap_close_socket(sock2);
           fprintf(stderr, "Problem sending data\n");
  @@ -166,7 +174,7 @@
       fprintf(stdout, "OK\n");
       
       fprintf(stdout, "\tServer:  Shutting down accepte socket.......");
  -    if (ap_shutdown(sock2, APR_SHUTDOWN_READ) == APR_FAILURE) {
  +    if (ap_shutdown(sock2, APR_SHUTDOWN_READ) != APR_SUCCESS) {
           ap_close_socket(sock);
           ap_close_socket(sock2);
           fprintf(stderr, "Problem shutting down\n");
  @@ -175,7 +183,7 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tServer:  closing duplicate socket.......");
  -    if (ap_close_socket(sock2) == APR_FAILURE) {
  +    if (ap_close_socket(sock2) != APR_SUCCESS) {
           ap_close_socket(sock);
           fprintf(stderr, "Problem closing down\n");
           exit(-1);
  @@ -183,7 +191,7 @@
       fprintf(stdout, "OK\n");
       
       fprintf(stdout, "\tServer:  closing original socket.......");
  -    if (ap_close_socket(sock) == APR_FAILURE) {
  +    if (ap_close_socket(sock) != APR_SUCCESS) {
           fprintf(stderr, "Problem closing down\n");
           exit(-1);
       }
  
  
  
  1.6       +24 -16    apache-apr/apr/test/testproc.c
  
  Index: testproc.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testproc.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- testproc.c	1999/05/24 02:04:12	1.5
  +++ testproc.c	1999/05/25 17:03:54	1.6
  @@ -71,41 +71,45 @@
       ap_proc_t *newproc;
       ap_procattr_t *attr;
       ap_file_t *testfile;
  -    ap_ssize_t rv;
  -    char buf[256];
  +    ap_ssize_t rv, length;
  +    char *buf;
       char *args[3];
       char *teststr = "Whooo Hoooo\n";
   
  -    context = ap_initialize(NULL);
  +    fprintf(stdout, "Creating context.......");
  +    if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
  +        fprintf(stderr, "Could not create context\n");
  +        exit(-1);
  +    }
  +    fprintf(stdout, "OK\n");
   
       if (argc > 1) {
  -        fprintf(stdout, "%s", teststr);
  +        write(STDOUT_FILENO, teststr, strlen(teststr));
           exit(1);
       }
       fprintf(stdout, "Creating procattr.......");
  -    attr = ap_createprocattr_init(context);
  -    if (attr == NULL) {
  +    if (ap_createprocattr_init(context, &attr) != APR_SUCCESS) {
           fprintf(stderr, "Could not create attr\n");
           exit(-1);;
       }
       fprintf(stdout, "OK.\n");
   
       fprintf(stdout, "Setting attr pipes, all three.......");
  -    if (ap_setprocattr_io(attr, 1, 1, 1) == APR_FAILURE) {
  +    if (ap_setprocattr_io(attr, 1, 1, 1) != APR_SUCCESS) {
           fprintf(stderr, "Could not set pipes attr\n");
           exit(-1);
       }
       fprintf(stdout, "OK.\n");
       
       fprintf(stdout, "Setting attr dir.......");
  -    if (ap_setprocattr_dir(attr, "proctest") == APR_FAILURE) {
  +    if (ap_setprocattr_dir(attr, "proctest") != APR_SUCCESS) {
           fprintf(stderr, "Could not set directory attr\n");
           exit(-1);
       }
       fprintf(stdout, "OK.\n");
   
       fprintf(stdout, "Setting attr cmd type.......");
  -    if (ap_setprocattr_cmdtype(attr, APR_PROGRAM) == APR_FAILURE) {
  +    if (ap_setprocattr_cmdtype(attr, APR_PROGRAM) != APR_SUCCESS) {
           fprintf(stderr, "Could not set cmd type attr\n");
           exit(-1);
       }
  @@ -116,24 +120,28 @@
       args[2] = NULL;
    
       fprintf(stdout, "Createing a new process.......");
  -    if ((newproc = ap_create_process(context, "../testproc", args, NULL, attr)) == NULL) {
  +    if (ap_create_process(context, "../testproc", args, NULL, attr, &newproc) != APR_SUCCESS) {
           fprintf(stderr, "Could not create the new process\n");
           exit(-1);
       }
       fprintf(stdout, "OK.\n");
   
       fprintf(stdout, "Grabbing child's stdout.......");
  -    if ((testfile = ap_get_childout(newproc)) == NULL) {
  +    if (ap_get_childout(newproc, &testfile) != APR_SUCCESS) {
           fprintf(stderr, "Could not get child's stdout\n");
           exit(-1);
       }
       fprintf(stdout, "OK.\n");
       
  +    length = 256;
       fprintf(stdout, "Checking the data read from pipe to child.......");
  -    rv = ap_read(testfile, buf, 256);
  -    buf[rv] = '\0';
  -    if (!strcmp(buf, teststr))
  -        fprintf(stdout,"OK\n");
  -    else fprintf(stderr, "Uh-Oh\n");
  +    if (ap_read(testfile, buf, &length) == APR_SUCCESS) {
  +        fprintf(stdout, "%s     %s\n", buf, teststr);
  +        fprintf(stdout, "%d     %d\n", strlen(buf), strlen(teststr));
  +        if (!strcmp(buf, teststr))
  +            fprintf(stdout,"OK\n");
  +        else fprintf(stderr, "Uh-Oh\n");
  +    }
  +    else fprintf(stderr, "Read failed.\n");
   }
   
  
  
  
  1.9       +12 -8     apache-apr/apr/test/testsock.c
  
  Index: testsock.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testsock.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- testsock.c	1999/05/24 02:04:13	1.8
  +++ testsock.c	1999/05/25 17:03:54	1.9
  @@ -72,7 +72,12 @@
       ap_status_t s1;
       ap_status_t s2;
   
  -    context = ap_initialize(NULL);
  +    fprintf(stdout, "Creating context.......");
  +    if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
  +        fprintf(stderr, "Could not vreate context\n");
  +        exit(-1);
  +    }
  +    fprintf(stdout, "OK\n");
   
       fprintf(stdout, "This test relies on the process test working.  Please\n");
       fprintf(stdout, "run that test first, and only run this test when it\n");
  @@ -80,25 +85,24 @@
       fprintf(stdout, "server and client by yourself.\n");
   
       fprintf(stdout, "Creating children to run network tests.......\n");
  -    attr1 = ap_createprocattr_init(context);
  -    attr2 = ap_createprocattr_init(context);
  -
  +    ap_createprocattr_init(context, &attr1);
  +    ap_createprocattr_init(context, &attr2);
   
       if (attr1 == NULL || attr2 == NULL) {
           fprintf(stderr, "Problem creating proc attrs\n");
           exit(-1);
       }
      
  -    proc1 = ap_create_process(context, "server", NULL, NULL, attr1);
  -    proc2 = ap_create_process(context, "client", NULL, NULL, attr2);
  +    ap_create_process(context, "server", NULL, NULL, attr1, &proc1);
  +    ap_create_process(context, "client", NULL, NULL, attr2, &proc2);
   
       if (proc1 == NULL || proc2 == NULL) {
           fprintf(stderr, "Problem spawning new process\n");
           exit(-1);
       }
   
  -    while ((s1 = ap_wait_proc(proc1, APR_NOWAIT)) == APR_FAILURE &&
  -           (s2 = ap_wait_proc(proc2, APR_NOWAIT)) == APR_FAILURE)
  +    while ((s1 = ap_wait_proc(proc1, APR_NOWAIT)) != APR_SUCCESS &&
  +           (s2 = ap_wait_proc(proc2, APR_NOWAIT)) != APR_SUCCESS)
           continue;
   
       if (s1 == APR_SUCCESS) {
  
  
  
  1.6       +4 -4      apache-apr/apr/test/testthread.c
  
  Index: testthread.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testthread.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- testthread.c	1999/05/25 03:22:07	1.5
  +++ testthread.c	1999/05/25 17:03:54	1.6
  @@ -131,10 +131,10 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "Starting all the threads......."); 
  -    t1 = ap_create_thread(context, NULL, thread_func1, NULL);
  -    t2 = ap_create_thread(context, NULL, thread_func2, NULL);
  -    t3 = ap_create_thread(context, NULL, thread_func3, NULL);
  -    t4 = ap_create_thread(context, NULL, thread_func4, NULL);
  +    ap_create_thread(context, NULL, thread_func1, NULL, &t1);
  +    ap_create_thread(context, NULL, thread_func2, NULL, &t2);
  +    ap_create_thread(context, NULL, thread_func3, NULL, &t3);
  +    ap_create_thread(context, NULL, thread_func4, NULL, &t4);
       if (t1 == NULL || t2 == NULL || t3 == NULL || t4 == NULL) {
           fprintf(stderr, "Error starting thread\n");
           exit(-1);
  
  
  
  1.3       +20 -23    apache-apr/apr/test/testtime.c
  
  Index: testtime.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testtime.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- testtime.c	1999/05/24 02:04:13	1.2
  +++ testtime.c	1999/05/25 17:03:54	1.3
  @@ -69,36 +69,39 @@
       ap_int32_t rv = 0;
       ap_int64_t t1, t2;
   
  -    context = ap_initialize(NULL);
  +    fprintf(stdout, "Creating context.......");
  +    if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
  +        fprintf(stderr, "could not create context\n");
  +        exit(-1);
  +    }
  +    fprintf(stdout, "OK\n");
   
       fprintf(stdout, "Testing Time functions.\n");
   
       fprintf(stdout, "\tMaking new time variable.......");
  -    time = ap_make_time(context);
  -    if (time == NULL) {
  +    if (ap_make_time(context, &time) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't allocate memory\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
       
       fprintf(stdout, "\tGetting current time.......");
  -    if (ap_current_time(time) == APR_FAILURE) {
  +    if (ap_current_time(time) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the time\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
       
       fprintf(stdout, "\tExploding Current time.......");
  -    if (ap_explode_time(time, APR_UTCTIME) == APR_FAILURE) {
  +    if (ap_explode_time(time, APR_UTCTIME) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't explode the time\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
  -    time2 = ap_make_time(context);
  +    ap_make_time(context, &time2);
       fprintf(stdout, "\tGetting the number of seconds.......");
  -    rv = ap_get_sec(time);
  -    if (rv < 0) {
  +    if (ap_get_sec(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the seconds\n");
           exit(-1);
       }
  @@ -106,8 +109,7 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tGetting the number of minutes.......");
  -    rv = ap_get_min(time);
  -    if (rv < 0) {
  +    if (ap_get_min(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the minutes\n");
           exit(-1);
       }
  @@ -115,8 +117,7 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tGetting the number of hours.......");
  -    rv = ap_get_hour(time);
  -    if (rv < 0) {
  +    if (ap_get_hour(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the hours\n");
           exit(-1);
       }
  @@ -124,8 +125,7 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tGetting the number of days.......");
  -    rv = ap_get_mday(time);
  -    if (rv < 0) {
  +    if (ap_get_mday(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the days\n");
           exit(-1);
       }
  @@ -133,8 +133,7 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tGetting the month .......");
  -    rv = ap_get_mon(time);
  -    if (rv < 0) {
  +    if (ap_get_mon(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the month\n");
           exit(-1);
       }
  @@ -142,8 +141,7 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tGetting the year.......");
  -    rv = ap_get_year(time);
  -    if (rv < 0) {
  +    if (ap_get_year(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the year\n");
           exit(-1);
       }
  @@ -151,8 +149,7 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tGetting the weekday.......");
  -    rv = ap_get_wday(time);
  -    if (rv < 0) {
  +    if (ap_get_wday(time, &rv) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't get the week day\n");
           exit(-1);
       }
  @@ -160,15 +157,15 @@
       fprintf(stdout, "OK\n"); 
   
       fprintf(stdout, "\tImploding the time.......");
  -    if (ap_implode_time(time2) == APR_FAILURE) {
  +    if (ap_implode_time(time2) != APR_SUCCESS) {
           fprintf(stderr, "Couldn't implode time\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "\tComparing two time values.......");
  -    t1 = ap_get_curtime(time);
  -    t2 = ap_get_curtime(time2);
  +    ap_get_curtime(time, &t1);
  +    ap_get_curtime(time2, &t2);
       if ((t1 == -1) || (t2 == -1) || (t1 != t2)) {
           fprintf(stderr, "Values don't match\n");
           exit(-1);
  
  
  
  1.13      +76 -49    apache-apr/apr/threadproc/unix/proc.c
  
  Index: proc.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/threadproc/unix/proc.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- proc.c	1999/05/24 02:04:19	1.12
  +++ proc.c	1999/05/25 17:04:02	1.13
  @@ -59,37 +59,47 @@
   #include "apr_thread_proc.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
  +#include "apr_lib.h"
   #include <signal.h>
   #include <string.h>
   #include <sys/wait.h>
   
  -struct procattr_t *ap_createprocattr_init(ap_context_t *cont)
  +ap_status_t ap_createprocattr_init(ap_context_t *cont, struct procattr_t **new)
   {
  -    struct procattr_t *new = (struct procattr_t *)ap_palloc(cont->pool, sizeof(struct procattr_t));
  +    (*new) = (struct procattr_t *)ap_palloc(cont->pool, 
  +              sizeof(struct procattr_t));
   
  -    new->cntxt = cont;
  -    new->parent_in = NULL;
  -    new->child_in = NULL;
  -    new->parent_out = NULL;
  -    new->child_out = NULL;
  -    new->parent_err = NULL;
  -    new->child_err = NULL;
  -    new->currdir = NULL; 
  -    new->cmdtype = APR_PROGRAM;
  -    return new;
  +    if ((*new) == NULL) {
  +        return APR_ENOMEM;
  +    }
  +    (*new)->cntxt = cont;
  +    (*new)->parent_in = NULL;
  +    (*new)->child_in = NULL;
  +    (*new)->parent_out = NULL;
  +    (*new)->child_out = NULL;
  +    (*new)->parent_err = NULL;
  +    (*new)->child_err = NULL;
  +    (*new)->currdir = NULL; 
  +    (*new)->cmdtype = APR_PROGRAM;
  +    return APR_SUCCESS;
   }
   
   ap_status_t ap_setprocattr_io(struct procattr_t *attr, ap_int32_t in, 
                                    ap_int32_t out, ap_int32_t err)
   {
  +    ap_status_t stat;
       if (in) {
           attr->parent_in = (ap_file_t *)ap_palloc(attr->cntxt->pool, 
                                                      sizeof(ap_file_t));
           attr->child_in = (ap_file_t *)ap_palloc(attr->cntxt->pool, 
                                                     sizeof(ap_file_t));
  -        if (ap_create_pipe(attr->cntxt, attr->child_in, 
  -                            attr->parent_in) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((attr->parent_in == NULL) || (attr->child_in == NULL)) {
  +            return APR_ENOMEM;
  +        }
  +
  +        if ((stat = ap_create_pipe(attr->cntxt, attr->child_in, 
  +                            attr->parent_in)) != APR_SUCCESS) {
  +            return stat;
           }
       } 
       if (out) {
  @@ -97,64 +107,84 @@
                                                       sizeof(ap_file_t));
           attr->child_out = (ap_file_t *)ap_palloc(attr->cntxt->pool, 
                                                      sizeof(ap_file_t));
  -        if (ap_create_pipe(attr->cntxt, attr->parent_out, 
  -                            attr->child_out) == APR_FAILURE) {
  -            return APR_FAILURE;
  +
  +        if ((attr->parent_out == NULL) || (attr->child_out == NULL)) {
  +            return APR_ENOMEM;
           }
  +
  +        if ((stat = ap_create_pipe(attr->cntxt, attr->parent_out, 
  +                            attr->child_out)) != APR_SUCCESS) {
  +            return stat;
  +        }
       } 
       if (err) {
           attr->parent_err = (ap_file_t *)ap_palloc(attr->cntxt->pool, 
                                                       sizeof(ap_file_t));
           attr->child_err = (ap_file_t *)ap_palloc(attr->cntxt->pool, 
                                                      sizeof(ap_file_t));
  -        if (ap_create_pipe(attr->cntxt, attr->parent_err, 
  -                            attr->child_err) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((attr->parent_err == NULL) || (attr->child_err == NULL)) {
  +            return APR_ENOMEM;
  +        }
  +
  +        if ((stat = ap_create_pipe(attr->cntxt, attr->parent_err, 
  +                            attr->child_err)) != APR_SUCCESS) {
  +            return stat;
           }
       } 
  +    return APR_SUCCESS;
   }
   
   ap_status_t ap_setprocattr_dir(struct procattr_t *attr, 
                                    char *dir) 
   {
  -    attr->currdir = strdup(dir);
  +    attr->currdir = ap_pstrdup(attr->cntxt->pool, dir);
  +    if (attr->currdir) {
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOMEM;
   }
   
   ap_status_t ap_setprocattr_cmdtype(struct procattr_t *attr,
                                        ap_cmdtype_e cmd) 
   {
       attr->cmdtype = cmd;
  +    return APR_SUCCESS;
   }
   
  -ap_int32_t ap_fork(struct proc_t *proc)
  +ap_status_t ap_fork(struct proc_t *proc)
   {
       int pid;
   
       if ((pid = fork()) < 0) {
  -        return -1;
  +        return errno;
       }
       else if (pid == 0) {
           proc->pid = pid;
           proc->attr = NULL;
  -        return pid;
  +        return APR_INCHILD;
       }
       proc->pid = pid;
       proc->attr = NULL;
  -    return 1;
  +    return APR_INPARENT;
   }
   
  -struct proc_t *ap_create_process(ap_context_t *cont, char *progname, 
  +ap_status_t ap_create_process(ap_context_t *cont, char *progname, 
                                  char *const args[], char **env, 
  -                               struct procattr_t *attr)
  +                               struct procattr_t *attr, struct proc_t **new)
   {
  -    struct proc_t *new = (struct proc_t *)ap_palloc(cont->pool, sizeof(struct proc_t));
       int i;
       char **newargs;
  +
  +    (*new) = (struct proc_t *)ap_palloc(cont->pool, sizeof(struct proc_t));
  +
  +    if ((*new) == NULL) {
  +        return APR_ENOMEM;
  +    }
   
  -    if ((new->pid = fork()) < 0) {
  -        return NULL;
  +    if (((*new)->pid = fork()) < 0) {
  +        return errno;
       }
  -    else if (new->pid == 0) { 
  +    else if ((*new)->pid == 0) { 
           /* child process */
           if (attr->child_in) {
               ap_close(attr->parent_in);
  @@ -212,43 +242,40 @@
           ap_close(attr->child_err);
       }
       
  -    new->attr = attr;
  -    return new;
  +    (*new)->attr = attr;
  +    return APR_SUCCESS;
   }
   
  -ap_file_t *ap_get_childin(struct proc_t *proc)
  +ap_status_t ap_get_childin(struct proc_t *proc, ap_file_t **new)
   {
  -    return proc->attr->parent_in; 
  +    (*new) = proc->attr->parent_in;
  +    return APR_SUCCESS; 
   }
   
  -ap_file_t *ap_get_childout(struct proc_t *proc)
  +ap_status_t ap_get_childout(struct proc_t *proc, ap_file_t **new)
   {
  -    return proc->attr->parent_out; 
  +    (*new) = proc->attr->parent_out; 
  +    return APR_SUCCESS;
   }
   
  -ap_file_t *ap_get_childerr(struct proc_t *proc)
  +ap_status_t ap_get_childerr(struct proc_t *proc, ap_file_t **new)
   {
  -    return proc->attr->parent_err; 
  +    (*new) = proc->attr->parent_err; 
  +    return APR_SUCCESS;
   }    
   
   ap_status_t ap_wait_proc(struct proc_t *proc, 
                              ap_wait_how_e wait)
   {
       if (!proc)
  -        return APR_FAILURE;
  +        return APR_ENOPROC;
       if (wait == APR_WAIT) {
           if (waitpid(proc->pid, NULL, WUNTRACED) > 0)
               return APR_SUCCESS;
  -        return APR_FAILURE;
  +        return errno;
       }
       if (waitpid(proc->pid, NULL, WUNTRACED | WNOHANG) > 0)
           return APR_SUCCESS;
  -    return APR_FAILURE;
  +    return errno;
   } 
  -
  -void ap_exit_proc(ap_context_t *cont)
  -{
  -    ap_destroy_pool(cont->pool);
  -}
  -
   
  
  
  
  1.4       +5 -2      apache-apr/apr/threadproc/unix/signals.c
  
  Index: signals.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/threadproc/unix/signals.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- signals.c	1999/05/24 02:04:19	1.3
  +++ signals.c	1999/05/25 17:04:03	1.4
  @@ -62,8 +62,11 @@
   #include <string.h>
   #include <sys/wait.h>
   
  -void ap_kill(struct proc_t *proc, int signal)
  +ap_status_t ap_kill(struct proc_t *proc, int signal)
   {
  -    kill(proc->pid, signal);
  +    if (kill(proc->pid, signal) == -1) {
  +        return errno;
  +    }
  +    return APR_SUCCESS;
   }
   
  
  
  
  1.7       +57 -24    apache-apr/apr/threadproc/unix/thread.c
  
  Index: thread.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/threadproc/unix/thread.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- thread.c	1999/05/24 02:29:28	1.6
  +++ thread.c	1999/05/25 17:04:03	1.7
  @@ -58,23 +58,36 @@
   #include "apr_general.h"
   
   
  -struct threadattr_t *ap_create_threadattr(ap_context_t *cont)
  +ap_status_t ap_create_threadattr(ap_context_t *cont, struct threadattr_t **new)
   {
  -    struct threadattr_t *new;
  +    ap_status_t stat;
     
  -    new = (struct threadattr_t *)ap_palloc(cont->pool, sizeof(struct threadattr_t));
  -    new->cntxt = cont;
  -    new->attr = (pthread_attr_t *)ap_palloc(new->cntxt->pool, sizeof(pthread_attr_t));
  -    pthread_attr_init(new->attr);
  +    (*new) = (struct threadattr_t *)ap_palloc(cont->pool, 
  +              sizeof(struct threadattr_t));
  +    (*new)->attr = (pthread_attr_t *)ap_palloc(cont->pool, 
  +                    sizeof(pthread_attr_t));
  +
  +    if ((*new) == NULL || (*new)->attr == NULL) {
  +        return APR_ENOMEM;
  +    }
  +
  +    (*new)->cntxt = cont;
  +    stat = pthread_attr_init((*new)->attr);
  +
  +    if (stat == 0) {
  +        return APR_SUCCESS;
  +    }
  +    return stat;
   }
   
   ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on)
   {
  -    if (pthread_attr_setdetachstate(attr->attr, on) == 0) {
  +    ap_status_t stat;
  +    if ((stat = pthread_attr_setdetachstate(attr->attr, on)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
  @@ -84,56 +97,76 @@
   
       pthread_attr_getdetachstate(attr->attr, &state);
       if (state == 1)
  -        return APR_SUCCESS;
  -    return APR_FAILURE;
  +        return APR_DETACH;
  +    return APR_NOTDETACH;
   }
   
  -struct thread_t *ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, ap_thread_start_t func, void *data)
  +ap_status_t ap_create_thread(ap_context_t *cont, struct threadattr_t *attr, 
  +                             ap_thread_start_t func, void *data, 
  +                             struct thread_t **new)
   {
  -    struct thread_t *new;
  +    ap_status_t stat;
       pthread_attr_t *temp;
    
  -    new = (struct thread_t *)ap_palloc(cont->pool, sizeof(struct thread_t));
  +    (*new) = (struct thread_t *)ap_palloc(cont->pool, sizeof(struct thread_t));
  +
  +    if ((*new) == NULL) {
  +        return APR_ENOMEM;
  +    }
  +
  +    (*new)->td = (pthread_t *)ap_palloc(cont->pool, sizeof(pthread_t));
  +
  +    if ((*new)->td == NULL) {
  +        return APR_ENOMEM;
  +    }
   
  -    new->cntxt = cont;
  -    new->td = (pthread_t *)ap_palloc(new->cntxt->pool, sizeof(pthread_t));
  +    (*new)->cntxt = cont;
   
       if (attr)
           temp = attr->attr;
       else
           temp = NULL;
  +    
  +    stat = ap_create_context(cont, NULL, &(*new)->cntxt);
  +    if (stat != APR_SUCCESS) {
  +        return stat;
  +    }
   
  -    new->cntxt = ap_create_sub_context(cont, NULL);
  -    if (pthread_create(new->td, temp, func, data) == 0) {
  -        return new;
  +    if ((stat = pthread_create((*new)->td, temp, func, data)) == 0) {
  +        return APR_SUCCESS;
       }
       else {
  -        return NULL;
  +        return stat;
       } 
   }
   
  -void ap_thread_exit(ap_context_t *cont, ap_status_t *retval)
  +ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval)
   {
  +    ap_destroy_pool(thd->cntxt->pool);
       pthread_exit(retval);
   }
   
   ap_status_t ap_thread_join(struct thread_t *thd, ap_status_t *retval)
   {
  -    if (pthread_join(*thd->td,(void *)&retval) == 0) {
  +    ap_status_t stat;
  +
  +    if ((stat = pthread_join(*thd->td,(void *)&retval)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
   ap_status_t ap_thread_detach(struct thread_t *thd)
   {
  -    if (pthread_detach(*thd->td) == 0) {
  +    ap_status_t stat;
  +
  +    if ((stat = pthread_detach(*thd->td)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
  
  
  
  1.4       +9 -6      apache-apr/apr/threadproc/unix/threadcancel.c
  
  Index: threadcancel.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/threadproc/unix/threadcancel.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- threadcancel.c	1999/05/24 02:04:20	1.3
  +++ threadcancel.c	1999/05/25 17:04:03	1.4
  @@ -60,32 +60,35 @@
   
   ap_status_t ap_cancel_thread(struct thread_t *thd)
   {
  -    if (pthread_cancel(*thd->td) == 0) {
  +    ap_status_t stat;
  +    if ((stat = pthread_cancel(*thd->td)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
       
   ap_status_t ap_setcanceltype(ap_context_t *cont, ap_int32_t type)
   {
  -    if (pthread_setcanceltype(type, NULL) == 0) {
  +    ap_status_t stat;
  +    if ((stat = pthread_setcanceltype(type, NULL)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
   ap_status_t ap_setcancelstate(ap_context_t *cont, ap_int32_t type)
   {
  -    if (pthread_setcanceltype(type, NULL) == 0) {
  +    ap_status_t stat;
  +    if ((stat = pthread_setcanceltype(type, NULL)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
  
  
  
  1.5       +22 -13    apache-apr/apr/threadproc/unix/threadpriv.c
  
  Index: threadpriv.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/threadproc/unix/threadpriv.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- threadpriv.c	1999/05/24 02:04:20	1.4
  +++ threadpriv.c	1999/05/25 17:04:03	1.5
  @@ -58,38 +58,47 @@
   #include "apr_general.h"
   #include "apr_errno.h"
   
  -struct threadkey_t *ap_create_thread_private(ap_context_t *cont, void (*dest)(void *))
  +ap_status_t ap_create_thread_private(ap_context_t *cont, void (*dest)(void *),
  +                                     struct threadkey_t **key)
   {
  -    struct threadkey_t *key;
  -    key = (struct threadkey_t *)ap_palloc(cont->pool, sizeof(struct threadkey_t));
  -    key->cntxt = cont;
  +    ap_status_t stat;
  +    (*key) = (struct threadkey_t *)ap_palloc(cont->pool, sizeof(struct threadkey_t));
   
  -    if (pthread_key_create(&key->key, dest) == 0) {
  -        return key;
  +    if ((*key) == NULL) {
  +        return APR_ENOMEM;
       }
  -    return NULL;
  +
  +    (*key)->cntxt = cont;
  +
  +    if ((stat = pthread_key_create(&(*key)->key, dest)) == 0) {
  +        return stat;
  +    }
  +    return stat;
   }
   
  -void *ap_get_thread_private(struct threadkey_t *key)
  +ap_status_t ap_get_thread_private(struct threadkey_t *key, void **new)
   {
  -    return pthread_getspecific(key->key);
  +    (*new) = pthread_getspecific(key->key);
  +    return APR_SUCCESS;
   }
   
   ap_status_t ap_set_thread_private(struct threadkey_t *key, void *priv)
   {
  -    if (pthread_setspecific(key->key, priv)== 0) {
  +    ap_status_t stat;
  +    if ((stat = pthread_setspecific(key->key, priv)) == 0) {
           return APR_SUCCESS;
       }
       else {
  -        return APR_FAILURE;
  +        return stat;
       }
   }
   
   ap_status_t ap_delete_thread_private(struct threadkey_t *key)
   {
  -    if (pthread_key_delete(key->key) == 0) {
  +    ap_status_t stat;
  +    if ((stat = pthread_key_delete(key->key)) == 0) {
           return APR_SUCCESS; 
       }
  -    return APR_FAILURE;
  +    return stat;
   }
   
  
  
  
  1.4       +104 -23   apache-apr/apr/time/unix/access.c
  
  Index: access.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/time/unix/access.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- access.c	1999/05/24 02:04:22	1.3
  +++ access.c	1999/05/25 17:04:07	1.4
  @@ -60,107 +60,188 @@
   #include <errno.h>
   #include <string.h>
   
  -ap_int64_t ap_get_curtime(struct atime_t *time)
  +ap_status_t ap_get_curtime(struct atime_t *time, ap_int64_t *rv)
   {
  -    return time->currtime;
  +    if (time) {
  +        (*rv) = time->currtime;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;    
   }
   
  -ap_int32_t ap_get_sec(struct atime_t *time)
  +ap_status_t ap_get_sec(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_sec;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_sec;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -ap_int32_t ap_get_min(struct atime_t *time)
  +ap_status_t ap_get_min(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_min;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_min;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -ap_int32_t ap_get_hour(struct atime_t *time)
  +ap_status_t ap_get_hour(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_hour;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_hour;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -ap_int32_t ap_get_mday(struct atime_t *time)
  +ap_status_t ap_get_mday(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_mday;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_mday;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -ap_int32_t ap_get_mon(struct atime_t *time)
  +ap_status_t ap_get_mon(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_mon;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_mon;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -ap_int32_t ap_get_year(struct atime_t *time)
  +ap_status_t ap_get_year(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_year;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_year;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -ap_int32_t ap_get_wday(struct atime_t *time)
  +ap_status_t ap_get_wday(struct atime_t *time, ap_int32_t *rv)
   {
  -    return time->explodedtime->tm_wday;
  +    if (time) {
  +        (*rv) = time->explodedtime->tm_wday;
  +        return APR_SUCCESS;
  +    }
  +    return APR_ENOTIME;
   }
   
  -void ap_set_sec(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_sec(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_sec = value;
  +    return APR_SUCCESS;
   }
   
  -void ap_set_min(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_min(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_min = value;
  +    return APR_SUCCESS;
   }
   
  -void ap_set_hour(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_hour(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_hour = value;
  +    return APR_SUCCESS;
   }
   
  -void ap_set_mday(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_mday(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_mday = value;
  +    return APR_SUCCESS;
   }
   
  -void ap_set_mon(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_mon(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_mon = value;
  +    return APR_SUCCESS;
   }
   
  -void ap_set_year(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_year(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_year = value;
  +    return APR_SUCCESS;
   }
   
  -void ap_set_wday(struct atime_t *time, ap_int32_t value)
  +ap_status_t ap_set_wday(struct atime_t *time, ap_int32_t value)
   {
  +    if (!time) {
  +        return APR_ENOTIME;
  +    }
       if (time->explodedtime == NULL) {
           time->explodedtime = (struct tm *)ap_palloc(time->cntxt->pool, 
                                 sizeof(struct tm));
       }
  +    if (time->explodedtime == NULL) {
  +        return APR_ENOMEM;
  +    }
       time->explodedtime->tm_wday = value;
  +    return APR_SUCCESS;
   }
   
   
  
  
  
  1.4       +12 -11    apache-apr/apr/time/unix/time.c
  
  Index: time.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/time/unix/time.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- time.c	1999/05/24 02:04:22	1.3
  +++ time.c	1999/05/25 17:04:07	1.4
  @@ -61,20 +61,23 @@
   #include <errno.h>
   #include <string.h>
   
  -struct atime_t *ap_make_time(ap_context_t *cont)
  +ap_status_t ap_make_time(ap_context_t *cont, struct atime_t **new)
   {
  -    struct atime_t *new;
  -    new = (struct atime_t *)ap_palloc(cont->pool, sizeof(struct atime_t));
  +    (*new) = (struct atime_t *)ap_palloc(cont->pool, sizeof(struct atime_t));
   
  -    new->cntxt = cont;
  -    new->explodedtime = NULL;
  -    return new;
  +    if ((*new) == NULL) {
  +        return APR_ENOMEM;
  +    }
  +
  +    (*new)->cntxt = cont;
  +    (*new)->explodedtime = NULL;
  +    return APR_SUCCESS;
   }
   
   ap_status_t ap_current_time(struct atime_t *new)
   {
       if (time(&new->currtime) == -1) {
  -        return APR_FAILURE;
  +        return errno;
       }
       return APR_SUCCESS; 
   }       
  @@ -104,8 +107,7 @@
       year = time->explodedtime->tm_year;
   
       if (year < 70 || ((sizeof(time_t) <= 4) && (year >= 138))) {
  -        errno = EBAD_DATE;
  -        return APR_FAILURE;
  +        return APR_EBADDATE;
       }
   
       /* shift new year to 1st March in order to make leap year calc easy */
  @@ -124,8 +126,7 @@
                time->explodedtime->tm_min) * 60 + time->explodedtime->tm_sec;
   
       if (days < 0) {
  -        errno = EBAD_DATE;      /* must have overflowed */
  -        return APR_FAILURE;
  +        return APR_EBADDATE;
       }
       time->currtime = days;            /* must be a valid time */
       return APR_SUCCESS;
  
  
  
  1.14      +79 -53    apache-apr/include/apr_errno.h
  
  Index: apr_errno.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_errno.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- apr_errno.h	1999/05/25 03:14:19	1.13
  +++ apr_errno.h	1999/05/25 17:04:09	1.14
  @@ -260,117 +260,143 @@
   #else
   #define APR_EWOULDBLOCK 3031
   #endif
  -/*
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +
  +#ifdef EPROTONOSUPPORT
  +#define APR_EPROTONOSUPPORT EPROTONOSUPPORT
   #else
  -#define APR_EBUSY 3021
  +#define APR_EPROTONOSUPPORT 3032
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ENOTSOCK
  +#define APR_ENOTSOCK ENOTSOCK
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENOTSOCK 3033
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ENOTCONN
  +#define APR_ENOTCONN ENOTCONN
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENOTCONN 3034
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EOPNOTSUPP
  +#define APR_EOPNOTSUPP EOPNOTSUPP
   #else
  -#define APR_EBUSY 3021
  +#define APR_EOPNOTSUPP 3035
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef HOST_NOT_FOUND
  +#define APR_EHOSTNOTFOUND HOST_NOT_FOUND
   #else
  -#define APR_EBUSY 3021
  +#define APR_EHOSTNOTFOUND 3036
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef NO_DATA
  +#define APR_ENODATA NO_DATA
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENODATA 3037
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef NO_ADDRESS
  +#define APR_ENOADDRESS NO_ADDRESS
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENOADDRESS 3038
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef NO_RECOVERY
  +#define APR_ENORECOVERY NO_RECOVERY
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENORECOVERY 3039
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EISCONN
  +#define APR_EISCONN EISCONN
   #else
  -#define APR_EBUSY 3021
  +#define APR_EISCONN 3040
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ETIMEDOUT
  +#define APR_ETIMEDOUT ETIMEDOUT
   #else
  -#define APR_EBUSY 3021
  +#define APR_ETIMEDOUT 3041
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ECONNREFUSED
  +#define APR_ECONNREFUSED ECONNREFUSED
   #else
  -#define APR_EBUSY 3021
  +#define APR_ECONNREFUSED 3042
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ENETUNREACH
  +#define APR_ENETUNREACH ENETUNREACH
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENETUNREACH 3043
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EADDRINUSE
  +#define APR_EADDRINUSE EADDRINUSE
   #else
  -#define APR_EBUSY 3021
  +#define APR_EADDRINUSE 3044
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EINPROGRESS
  +#define APR_EINPROGRESS EINPROGRESS
   #else
  -#define APR_EBUSY 3021
  +#define APR_EINPROGRESS 3045
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EALREADY
  +#define APR_EALREADY EALREADY
   #else
  -#define APR_EBUSY 3021
  +#define APR_EALREADY 3046
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EAFNOSUPPORT
  +#define APR_EAFNOSUPPORT EAFNOSUPPORT
   #else
  -#define APR_EBUSY 3021
  +#define APR_EAFNOSUPPORT 3047
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ENOPROTOOPT
  +#define APR_ENOPROTOOPT ENOPROTOOPT
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENOPROTOOPT 3048
   #endif
  -*/
   
  +#ifdef ENOCHILD
  +#define APR_ENOCHILD ENOCHILD
  +#else
  +#define APR_ENOCHILD 3049
  +#endif
   
  +#ifdef ESRCH
  +#define APR_ESRCH ESRCH
  +#else
  +#define APR_ESRCH 3050
  +#endif
   
  +#ifdef ENOTSUP
  +#define APR_ENOTSUP ENOTSUP
  +#else
  +#define APR_ENOTSUP 3051
  +#endif
  +
  +
  +/*  APR ERROR VALUES */
   #define APR_ENOSTAT        4001
   #define APR_ENOPOOL        4002
   #define APR_ENOFILE        4003
   #define APR_EBADDATE       4004
   #define APR_ENOCONT        4005
  +#define APR_ENOPROC        4006
  +#define APR_ENOTIME        4007
  +
  +/*  APR STATUS VALUES */
  +#define APR_INCHILD        5001
  +#define APR_INPARENT       5002
  +#define APR_DETACH         5003
  +#define APR_NOTDETACH      5004
  +
   
   #ifdef __cplusplus
   }
  
  
  
  1.22      +9 -9      apache-apr/include/apr_network_io.h
  
  Index: apr_network_io.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_network_io.h,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- apr_network_io.h	1999/05/24 02:04:23	1.21
  +++ apr_network_io.h	1999/05/25 17:04:09	1.22
  @@ -93,28 +93,28 @@
   
   /* function definitions */
   
  -ap_socket_t *ap_create_tcp_socket(ap_context_t *);
  +ap_status_t ap_create_tcp_socket(ap_context_t *, ap_socket_t **);
   ap_status_t ap_shutdown(ap_socket_t *, ap_shutdown_how_e);
   ap_status_t ap_close_socket(ap_socket_t *);
   
   ap_status_t ap_bind(ap_socket_t *);
   ap_status_t ap_listen(ap_socket_t *, ap_int32_t);
  -ap_socket_t *ap_accept(const ap_socket_t *);
  +ap_status_t ap_accept(const ap_socket_t *, ap_socket_t **);
   ap_status_t ap_connect(ap_socket_t *, char *);
   
  -char *aprget_remote_hostname(ap_socket_t *);
  +ap_status_t ap_get_remote_hostname(ap_socket_t *, char **);
   ap_status_t ap_gethostname(ap_context_t *, char *, int);
   
  -ap_ssize_t ap_send(ap_socket_t *, const char *, int, time_t);
  -ap_ssize_t ap_recv(ap_socket_t *, char *, int, time_t);
  +ap_status_t ap_send(ap_socket_t *, const char *, ap_ssize_t *, time_t);
  +ap_status_t ap_recv(ap_socket_t *, char *, ap_ssize_t *, time_t);
   
   ap_status_t ap_setsocketopt(ap_socket_t *, ap_int32_t, ap_int32_t);
   ap_status_t ap_setport(ap_socket_t *, ap_uint32_t);
   
  -ap_pollfd_t *ap_setup_poll(ap_context_t *, ap_int32_t);
  -ap_int32_t ap_poll(ap_pollfd_t *, ap_int32_t, ap_int32_t);
  -void ap_add_poll_socket(ap_pollfd_t *, ap_socket_t *, ap_int16_t, ap_int32_t);
  -ap_int16_t ap_get_revents(ap_pollfd_t *, ap_int32_t);
  +ap_status_t ap_setup_poll(ap_context_t *, ap_int32_t, ap_pollfd_t **);
  +ap_status_t ap_poll(ap_pollfd_t *, ap_int32_t *, ap_int32_t);
  +ap_status_t ap_add_poll_socket(ap_pollfd_t *, ap_socket_t *, ap_int16_t, ap_int32_t);
  +ap_status_t ap_get_revents(ap_pollfd_t *, ap_int32_t, ap_int16_t *);
   
   /*  accessor functions   */
   
  
  
  
  1.12      +20 -12    apache-apr/include/apr_thread_proc.h
  
  Index: apr_thread_proc.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_thread_proc.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- apr_thread_proc.h	1999/05/24 02:04:24	1.11
  +++ apr_thread_proc.h	1999/05/25 17:04:09	1.12
  @@ -82,11 +82,12 @@
   typedef void *(*ap_thread_start_t)(void *);
   
   /* Thread Function definitions */
  -ap_threadattr_t *ap_create_threadattr(ap_context_t *);
  +ap_status_t ap_create_threadattr(ap_context_t *, ap_threadattr_t **);
   ap_status_t ap_setthreadattr_detach(ap_threadattr_t *, ap_int32_t);
   ap_status_t ap_getthreadattr_detach(ap_threadattr_t *);
  -ap_thread_t *ap_create_thread(ap_context_t *, ap_threadattr_t *, ap_thread_start_t, void *);
  -void ap_thread_exit(ap_context_t *, ap_status_t *);
  +ap_status_t ap_create_thread(ap_context_t *, ap_threadattr_t *, 
  +                             ap_thread_start_t, void *, ap_thread_t **);
  +ap_status_t ap_thread_exit(ap_thread_t *, ap_status_t *);
   ap_status_t ap_thread_join(ap_thread_t *thd, ap_status_t *); 
   ap_status_t ap_thread_detach(ap_thread_t *);
   
  @@ -94,22 +95,29 @@
   ap_status_t ap_setcanceltype(ap_context_t *, ap_int32_t);
   ap_status_t ap_setcancelstate(ap_context_t *, ap_int32_t);
   
  +ap_status_t ap_create_thread_private(ap_context_t *, void (*dest)(void *), 
  +                                     ap_key_t **);
  +ap_status_t ap_get_thread_private(ap_key_t *, void **);
  +ap_status_t ap_set_thread_private(ap_key_t *, void *);
  +ap_status_t ap_delete_thread_private(ap_key_t *);
   
   /* Process Function definitions */
  -ap_procattr_t *ap_createprocattr_init(ap_context_t *);
  -ap_status_t ap_setprocattr_io(ap_procattr_t *, ap_int32_t, ap_int32_t, ap_int32_t);
  +ap_status_t ap_createprocattr_init(ap_context_t *, ap_procattr_t **);
  +ap_status_t ap_setprocattr_io(ap_procattr_t *, ap_int32_t, ap_int32_t, 
  +                              ap_int32_t);
   ap_status_t ap_setprocattr_dir(ap_procattr_t *, char *);
   ap_status_t ap_setprocattr_cmdtype(ap_procattr_t *, ap_cmdtype_e);
   
  -ap_file_t *ap_get_childin(ap_proc_t *);
  -ap_file_t *ap_get_childout(ap_proc_t *);
  -ap_file_t *ap_get_childerr(ap_proc_t *);
  -
  -ap_int32_t ap_fork(ap_proc_t *);
  -ap_proc_t *ap_create_process(ap_context_t *, char *, char *const [], char **, ap_procattr_t *);
  +ap_status_t ap_get_childin(ap_proc_t *, ap_file_t **);
  +ap_status_t ap_get_childout(ap_proc_t *, ap_file_t **);
  +ap_status_t ap_get_childerr(ap_proc_t *, ap_file_t **);
  +
  +ap_status_t ap_fork(ap_proc_t *);
  +ap_status_t ap_create_process(ap_context_t *, char *, char *const [], char **, 
  +                              ap_procattr_t *, ap_proc_t **);
   ap_status_t ap_wait_proc(ap_proc_t *, ap_wait_how_e);
   
  -void ap_kill(ap_proc_t *, ap_int32_t);
  +ap_status_t ap_kill(ap_proc_t *, ap_int32_t);
   #ifdef __cplusplus
   }
   #endif
  
  
  
  1.3       +16 -16    apache-apr/include/apr_time.h
  
  Index: apr_time.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_time.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- apr_time.h	1999/05/24 02:04:24	1.2
  +++ apr_time.h	1999/05/25 17:04:10	1.3
  @@ -68,29 +68,29 @@
   typedef struct atime_t       ap_time_t;
   
   /* Function Definitions */
  -ap_time_t *ap_make_time(ap_context_t *);
  +ap_status_t ap_make_time(ap_context_t *, ap_time_t **);
   ap_status_t ap_current_time(ap_time_t *);
   ap_status_t ap_explode_time(ap_time_t *, ap_timetype_e);
   ap_status_t ap_implode_time(ap_time_t *);
   
   /* accessor functions */
  -ap_int64_t ap_get_curtime(ap_time_t *);
  +ap_status_t ap_get_curtime(ap_time_t *, ap_int64_t *);
   
  -ap_int32_t ap_get_sec(ap_time_t *);
  -ap_int32_t ap_get_min(ap_time_t *);
  -ap_int32_t ap_get_hour(ap_time_t *);
  -ap_int32_t ap_get_mday(ap_time_t *);
  -ap_int32_t ap_get_mon(ap_time_t *);
  -ap_int32_t ap_get_year(ap_time_t *);
  -ap_int32_t ap_get_wday(ap_time_t *);
  +ap_status_t ap_get_sec(ap_time_t *, ap_int32_t *);
  +ap_status_t ap_get_min(ap_time_t *, ap_int32_t *);
  +ap_status_t ap_get_hour(ap_time_t *, ap_int32_t *);
  +ap_status_t ap_get_mday(ap_time_t *, ap_int32_t *);
  +ap_status_t ap_get_mon(ap_time_t *, ap_int32_t *);
  +ap_status_t ap_get_year(ap_time_t *, ap_int32_t *);
  +ap_status_t ap_get_wday(ap_time_t *, ap_int32_t *);
   
  -void ap_set_sec(ap_time_t *, ap_int32_t);
  -void ap_set_min(ap_time_t *, ap_int32_t);
  -void ap_set_hour(ap_time_t *, ap_int32_t);
  -void ap_set_mday(ap_time_t *, ap_int32_t);
  -void ap_set_mon(ap_time_t *, ap_int32_t);
  -void ap_set_year(ap_time_t *, ap_int32_t);
  -void ap_set_wday(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_sec(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_min(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_hour(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_mday(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_mon(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_year(ap_time_t *, ap_int32_t);
  +ap_status_t ap_set_wday(ap_time_t *, ap_int32_t);
   
   #ifdef __cplusplus
   }