xref: /csrg-svn/sys/stand.att/copy.c (revision 11178)
1 /*	copy.c	4.4	83/02/20	*/
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 		wcc = write(to, buffer, rcc);
33 		if (wcc < 0) {
34 			printf("Record %d: write error: errno=%d\n",
35 				record, errno);
36 			break;
37 		}
38 		if (wcc < rcc) {
39 			printf("Record %d: write short; expected %d, got %d\n",
40 				record, rcc, wcc);
41 			break;
42 		}
43 	}
44 	printf("Copy completed: %d records copied\n", record);
45 	/* can't call exit here */
46 }
47 
48 getdev(prompt, buf, mode)
49 	char *prompt, *buf;
50 	int mode;
51 {
52 	register int i;
53 
54 	do {
55 		printf("%s: ", prompt);
56 		gets(buf);
57 		i = open(buf, mode);
58 	} while (i <= 0);
59 	return (i);
60 }
61