1 /*-
2 * Copyright (c) 1982, 1986, 1988, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 *
7 * @(#)copy.c 8.1 (Berkeley) 06/11/93
8 */
9
10 #define BSIZE 10240
11
12 /*
13 * Copy from from to to. Intended for use in system installation.
14 */
main()15 main()
16 {
17 extern int errno;
18 register int from, to, record, rcc, wcc, bsize = BSIZE;
19 char buf[BSIZE];
20
21 from = getfile("From", 0);
22 to = getfile("To", 1);
23 for (record = 0;; ++record) {
24 if (!(rcc = read(from, buf, bsize)))
25 break;
26 if (rcc < 0) {
27 printf("Record %d: read error, errno=%d\n",
28 record, errno);
29 break;
30 }
31 if (rcc != bsize) {
32 if (record == 0) {
33 bsize = rcc;
34 printf("Block size set from input; %d bytes\n",
35 bsize);
36 } else
37 printf("Record %d: read short; expected %d, got %d\n",
38 record, bsize, rcc);
39 }
40 #ifdef vax
41 /* For bug in ht driver. */
42 if (rcc > bsize)
43 rcc = bsize;
44 #endif
45 if ((wcc = write(to, buf, rcc)) < 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 }
58