|
|
1.1 ! root 1: /* ! 2: * Copy data from one file to another for a length. ! 3: * Returns 1 on success, 0 on failure. ! 4: */ ! 5: #include <stdio.h> ! 6: ! 7: copyd(ofp, ifp, len) ! 8: FILE *ofp, *ifp; ! 9: unsigned long len; ! 10: { ! 11: register n, r; ! 12: char buf[BUFSIZ]; ! 13: ! 14: for (n = ftell(ifp) % BUFSIZ; len; (len -= n), (n = 0)) { ! 15: if ((n = BUFSIZ - n) > len) ! 16: n = len; ! 17: if (!(r = fread(buf, 1, n, ifp)) || ! 18: (r != fwrite(buf, 1, r, ofp)) || ! 19: (r != n)) ! 20: return (0); ! 21: } ! 22: return (1); ! 23: } ! 24: ! 25: #ifdef TEST ! 26: #include <misc.h> ! 27: ! 28: main(argc, argv) ! 29: char *argv[]; ! 30: { ! 31: extern long atol(); ! 32: ! 33: if (argc != 4) ! 34: fatal("test to from length"); ! 35: ! 36: if (!copyd(xopen(argv[1], "w"), xopen(argv[2], "r"), atol(argv[3]))) ! 37: fatal("Error in copy"); ! 38: } ! 39: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.