xref: /original-bsd/sys/i386/floppy/cp/cp.c (revision af60fb2a)
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 
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