xref: /original-bsd/sys/hp300/stand/copy.c (revision e59fb703)
1 /*
2  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)copy.c	7.1 (Berkeley) 05/08/90
8  */
9 
10 /*
11  * Copy from to in 10K units.
12  * Intended for use in system
13  * installation.
14  */
15 main()
16 {
17 	int from, to;
18 	char fbuf[50], tbuf[50];
19 	char buffer[10240];
20 	register int record;
21 	extern int errno;
22 
23 	from = getdev("From", fbuf, 0);
24 	to = getdev("To", tbuf, 1);
25 	for (record = 0; ; record++) {
26 		int rcc, wcc;
27 
28 		rcc = read(from, buffer, sizeof (buffer));
29 		if (rcc == 0)
30 			break;
31 		if (rcc < 0) {
32 			printf("Record %d: read error, errno=%d\n",
33 				record, errno);
34 			break;
35 		}
36 		if (rcc < sizeof (buffer))
37 			printf("Record %d: read short; expected %d, got %d\n",
38 				record, sizeof (buffer), rcc);
39 		/*
40 		 * For bug in ht driver.
41 		 */
42 		if (rcc > sizeof (buffer))
43 			rcc = sizeof (buffer);
44 		wcc = write(to, buffer, rcc);
45 		if (wcc < 0) {
46 			printf("Record %d: write error: errno=%d\n",
47 				record, errno);
48 			break;
49 		}
50 		if (wcc < rcc) {
51 			printf("Record %d: write short; expected %d, got %d\n",
52 				record, rcc, wcc);
53 			break;
54 		}
55 	}
56 	printf("Copy completed: %d records copied\n", record);
57 	/* can't call exit here */
58 }
59 
60 getdev(prompt, buf, mode)
61 	char *prompt, *buf;
62 	int mode;
63 {
64 	register int i;
65 
66 	do {
67 		printf("%s: ", prompt);
68 		gets(buf);
69 		i = open(buf, mode);
70 	} while (i <= 0);
71 	return (i);
72 }
73