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