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 } 39