1 /*
2 * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
4 */
5
6 #pragma ident "%Z%%M% %I% %E% SMI"
7
8 #include <stdio.h>
9 #include <unistd.h>
10 #include "proxy-io.h"
11
12 int
13 proxy_read_write_loop(int readfd, int writefd)
14 {
15 int rbytes, bytes_to_write, bytes_written;
16 char readbuf[BUFFER_SIZ];
17 char *ptr;
18
19 rbytes = read(readfd, readbuf, sizeof (readbuf));
20
21 if (rbytes > 0) {
22 bytes_to_write = rbytes;
23 ptr = readbuf;
24 while (bytes_to_write > 0) {
25 if ((bytes_written =
26 write(writefd, ptr, bytes_to_write)) < 0) {
27 perror("write");
28 return (0);
29 }
30 bytes_to_write -= bytes_written;
31 ptr += bytes_written;
32 }
33 } else if (rbytes <= 0) {
34 return (0);
35 }
36 /* Read and write successful */
37 return (1);
38 }