bjh 99/10/29 08:06:23
Modified: src/os/os2 iol_socket.c
Log:
Some cleaning up of OS/2 iol_socket.c.
Revision Changes Path
1.5 +2 -81 apache-2.0/src/os/os2/iol_socket.c
Index: iol_socket.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/os/os2/iol_socket.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- iol_socket.c 1999/10/29 14:37:28 1.4
+++ iol_socket.c 1999/10/29 15:06:22 1.5
@@ -97,96 +97,17 @@
return APR_SUCCESS;
}
-/* the timeout code is a separate routine because it requires
- a stack frame... and we don't want to pay that setup cost
- on every call */
-
-/* this macro expands into the four basic i/o methods */
-
-#define method(name, args, syscall, selread, selwrite) \
- static ap_status_t os2_##name##_timeout args \
- { \
- iol_socket *iol = (iol_socket *)viol; \
- fd_set fdset; \
- struct timeval tv; \
- int rv; \
- \
- FD_ZERO(&fdset); \
- FD_SET(iol->fd, &fdset); \
- tv.tv_sec = iol->timeout; \
- tv.tv_usec = 0; \
- do { \
- rv = ap_select(iol->fd + 1, selread, selwrite, NULL, iol->timeout <
0 ? NULL : &tv); \
- } while (rv == -1 && errno == EINTR); \
- if (!FD_ISSET(iol->fd, &fdset)) { \
- *nbytes = 0; \
- return APR_ETIMEDOUT; \
- } \
- do { \
- rv = syscall(iol->fd, arg1, arg2); \
- } while (rv == -1 && errno == EINTR); \
- if (rv >= 0) { \
- *nbytes = rv; \
- return APR_SUCCESS; \
- } \
- *nbytes = 0; \
- return errno; \
- \
- } \
- \
- static ap_status_t os2_##name args \
- { \
- iol_socket *iol = (iol_socket *)viol; \
- int rv; \
- \
- /* Preset to zero until some bytes are actually written */ \
- *nbytes = 0; \
- if (!(iol->flags & FD_NONBLOCKING_SET)) { \
- if (iol->timeout < 0) { \
- rv = syscall(iol->fd, arg1, arg2); \
- if (rv >= 0) { \
- *nbytes = rv; \
- return APR_SUCCESS; \
- } \
- return errno; \
- } \
- /* must shift descriptor to blocking mode now */ \
- if ((rv = set_nonblock(iol->fd)) != APR_SUCCESS) { \
- return rv; \
- } \
- iol->flags |= FD_NONBLOCKING_SET; \
- } \
- \
- /* try writing, ignoring EINTR, the upper layer has to handle \
- partial read/writes anyhow, so we can return early */ \
- do { \
- rv = syscall(iol->fd, arg1, arg2); \
- } while (rv == -1 && errno == EINTR); \
- if (rv >= 0) { \
- *nbytes = rv; \
- return APR_SUCCESS; \
- } \
- if ((errno == EWOULDBLOCK || errno == EAGAIN) && iol->timeout != 0) { \
- return os2_##name##_timeout(viol, arg1, arg2, nbytes); \
- } \
- return errno; \
- }
-
-// method(write, (ap_iol *viol, const char *arg1, ap_size_t arg2, ap_ssize_t
*nbytes), write, NULL, &fdset)
ap_status_t os2_write(ap_iol *viol, const char *buf, ap_size_t size,
ap_ssize_t *nbytes)
{
*nbytes = size;
return ap_send(((iol_socket *)viol)->sock, buf, nbytes);
}
-// method(writev, (ap_iol *viol, const struct iovec *arg1, int arg2,
ap_ssize_t *nbytes), writev, NULL, &fdset)
-ap_status_t os2_writev(ap_iol *viol, const struct iovec *vec, int size,
ap_ssize_t *nbytes)
+ap_status_t os2_writev(ap_iol *viol, const struct iovec *vec, int nvec,
ap_ssize_t *nbytes)
{
- *nbytes = size;
- return ap_sendv(((iol_socket *)viol)->sock, vec, size, nbytes);
+ return ap_sendv(((iol_socket *)viol)->sock, vec, nvec, nbytes);
}
-// method(read, (ap_iol *viol, char *arg1, ap_size_t arg2, ap_ssize_t
*nbytes), read, &fdset, NULL)
ap_status_t os2_read(ap_iol *viol, char *buf, ap_size_t size, ap_ssize_t
*nbytes)
{
*nbytes = size;