1 /*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 *
7 * @(#)cp.c 8.1 (Berkeley) 06/11/93
8 */
9
10 #include <fcntl.h>
11
12 int eval;
13
main(argc,argv)14 main(argc, argv)
15 int argc;
16 char **argv;
17 {
18 register int from, to, nr;
19 char buf[2048];
20
21 if (*++argv && **argv == '-') {
22 err("no options available", 0);
23 _exit(1);
24 }
25 if (argc != 3) {
26 err("usage: cp file1 file2", 0);
27 _exit(1);
28 }
29 if ((from = open(argv[0], O_RDONLY, 0)) < 0)
30 err(argv[0], 1);
31 else if ((to = open(argv[1], O_CREAT|O_TRUNC|O_WRONLY, 0666)) < 0)
32 err(argv[1], 1);
33 else {
34 while ((nr = read(from, buf, sizeof(buf))) > 0)
35 if (write(to, buf, nr) != nr) {
36 err(argv[1], 1);
37 break;
38 }
39 if (nr == -1)
40 err(argv[0], 1);
41 }
42 _exit(eval);
43 }
44
45 #define PROGNAME "cp: "
46 #include "errfunction"
47