# #define BUFSIZ 512 /* * CPCMNT copies COUNT characters from file descriptors FDIN to FDOUT, * returning the number of bytes copied or -1 on errors. * cc -c -O cpcmnt.c * Written by Joe Pallas and Robert L. Kirby on September 18, 1980. */ int cpcmnt(fdin, fdout, count) int count; /* an unsigned(?) integer */ int fdin, fdout; { register char *p; register unsigned int numread; register int total; char buf[BUFSIZ]; p = buf; for(total = 0; numread = count - total; total += numread) { if(numread > BUFSIZ) numread = BUFSIZ; if((numread = read(fdin, p, numread)) == 0) break; if(numread == -1 || write(fdout, p, numread) != numread) return(-1); } return(total); }