fd -> vn
[unix-history] / usr / src / sys / hp300 / stand / copy.c
CommitLineData
a8fd2d0d
KM
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) %G%
8 */
9
10/*
11 * Copy from to in 10K units.
12 * Intended for use in system
13 * installation.
14 */
15main()
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
60getdev(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}