date and time created 83/02/18 00:50:12 by sam
[unix-history] / usr / src / sys / stand.att / copy.c
CommitLineData
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 */
8main()
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
45getdev(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}