|
|
1.1 ! root 1: /* copy.c 6.1 83/07/29 */ ! 2: ! 3: /* ! 4: * Copy from to in 10K units. ! 5: * Intended for use in system ! 6: * installation. ! 7: */ ! 8: main() ! 9: { ! 10: int from, to; ! 11: char fbuf[50], tbuf[50]; ! 12: char buffer[10240]; ! 13: register int record; ! 14: extern int errno; ! 15: ! 16: from = getdev("From", fbuf, 0); ! 17: to = getdev("To", tbuf, 1); ! 18: for (record = 0; ; record++) { ! 19: int rcc, wcc; ! 20: ! 21: rcc = read(from, buffer, sizeof (buffer)); ! 22: if (rcc == 0) ! 23: break; ! 24: if (rcc < 0) { ! 25: printf("Record %d: read error, errno=%d\n", ! 26: record, errno); ! 27: break; ! 28: } ! 29: if (rcc < sizeof (buffer)) ! 30: printf("Record %d: read short; expected %d, got %d\n", ! 31: record, sizeof (buffer), rcc); ! 32: /* ! 33: * For bug in ht driver. ! 34: */ ! 35: if (rcc > sizeof (buffer)) ! 36: rcc = sizeof (buffer); ! 37: wcc = write(to, buffer, rcc); ! 38: if (wcc < 0) { ! 39: printf("Record %d: write error: errno=%d\n", ! 40: record, errno); ! 41: break; ! 42: } ! 43: if (wcc < rcc) { ! 44: printf("Record %d: write short; expected %d, got %d\n", ! 45: record, rcc, wcc); ! 46: break; ! 47: } ! 48: } ! 49: printf("Copy completed: %d records copied\n", record); ! 50: /* can't call exit here */ ! 51: } ! 52: ! 53: getdev(prompt, buf, mode) ! 54: char *prompt, *buf; ! 55: int mode; ! 56: { ! 57: register int i; ! 58: ! 59: do { ! 60: printf("%s: ", prompt); ! 61: gets(buf); ! 62: i = open(buf, mode); ! 63: } while (i <= 0); ! 64: return (i); ! 65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.