/* netio/fget_netio_send.c. Generated from netio_send.c.in by configure. */ /* ** Copyright 2000-2004 University of Illinois Board of Trustees ** Copyright 2000-2004 Mark D. Roth ** All rights reserved. ** ** fget_netio_write.c - NETIO data write code ** ** Mark D. Roth */ #include #include #include #include #ifdef STDC_HEADERS # include # include # include #endif #ifdef HAVE_UNISTD_H # include #endif ssize_t fget_netio_write(NETIO *nio, time_t timeout, char *buf, size_t bufsize, unsigned int flags) { int i; ssize_t sz; i = fget_netio_wait(nio, 1, timeout); if (i == 1) { errno = ETIMEDOUT; return -1; } if (i == -1) return -1; #ifdef DEBUG printf(" fget_netio_write(): calling write()...\n"); #endif if (BIT_ISSET(flags, NETIO_WRITE_OOB)) sz = send(nio->n_fd, buf, bufsize, MSG_OOB); else sz = write(nio->n_fd, buf, bufsize); #ifdef DEBUG printf("<== fget_netio_vwrite_line(): write() == %ld\n", (long)sz); #endif return sz; } /* variable-argument interface for netio_write_line() */ ssize_t fget_netio_vwrite_line(NETIO *nio, time_t timeout, char *fmt, va_list args) { char buf[NETIOBUFSIZE]; vsnprintf(buf, sizeof(buf), fmt, args); #ifdef DEBUG printf(" fget_netio_vwrite_line(): writeing \"%s\"\n", buf); #endif /* execute the write hook, if set */ if (nio->n_sendhook != NULL) (*(nio->n_sendhook))(buf, nio->n_hook_handle, nio->n_hook_data); strlcat(buf, "\r\n", sizeof(buf)); return fget_netio_write(nio, timeout, buf, strlen(buf), 0); } /* netio_write_line() - write a line over the network */ ssize_t fget_netio_write_line(NETIO *nio, time_t timeout, char *fmt, ...) { va_list args; ssize_t sz; va_start(args, fmt); sz = fget_netio_vwrite_line(nio, timeout, fmt, args); va_end(args); return sz; }