Commit | Line | Data |
---|---|---|
b8e44ba3 | 1 | /* copy.c 4.2 83/02/16 */ |
4fb3673c SL |
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]; | |
b8e44ba3 SL |
13 | register int record; |
14 | extern int errno; | |
4fb3673c SL |
15 | |
16 | from = getdev("From", fbuf, 0); | |
17 | to = getdev("To", tbuf, 1); | |
b8e44ba3 SL |
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("Read error, errno=%d\n", errno); | |
26 | break; | |
27 | } | |
28 | if (rcc != sizeof (buffer)) | |
29 | printf("Record %d: read short; expected %d, got %d\n", | |
30 | sizeof (buffer), rcc); | |
31 | wcc = write(to, buffer, rcc); | |
32 | if (wcc < 0) { | |
33 | printf("Write error: errno=%d\n", errno); | |
34 | break; | |
35 | } | |
36 | if (wcc != rcc) { | |
37 | printf("Write short; expected %d, got %d\n", rcc, wcc); | |
4fb3673c | 38 | break; |
b8e44ba3 | 39 | } |
4fb3673c | 40 | } |
b8e44ba3 | 41 | printf("Copy completed: %d records copied\n", record); |
4fb3673c SL |
42 | /* can't call exit here */ |
43 | } | |
44 | ||
45 | getdev(prompt, buf, mode) | |
46 | char *prompt, *buf; | |
47 | int mode; | |
48 | { | |
49 | register int i; | |
50 | ||
51 | do { | |
52 | printf("%s: ", prompt); | |
53 | gets(buf); | |
54 | i = open(buf, mode); | |
55 | } while (i <= 0); | |
56 | return (i); | |
57 | } |