BSD 4 development
[unix-history] / bill / dcopy.c
CommitLineData
a4b3f291
BJ
1#include <stdio.h>
2
3char *from = "/dev/rrp0c";
4char *to = "/dev/rrp1c";
5char *buf;
6int bsize = 19*22;
7int start = 0;
8int count = 815;
9
10main(argc, argv)
11 int argc;
12 char **argv;
13{
14
15 argc--, argv++;
16 if (argc > 0)
17 start = atoi(*argv++), argc--;
18 if (argc > 0)
19 bsize = atoi(*argv++), argc--;
20 if (argc > 0)
21 count = atoi(*argv++), argc--;
22 fprintf(stderr, "from %s to %s, %d groups of %d blocks offset %d\n",
23 from, to, count, bsize, start);
24 close(0);
25 if (open(from, 0) != 0)
26 perror(from), exit(1);
27 close(1);
28 if (open(to, 1) != 1)
29 perror(to), exit(1);
30 start *= 512;
31 bsize *= 512;
32 buf = (char *)sbrk(bsize);
33 while (count > 0) {
34 if (lseek(0, start, 0) < 0)
35 perror("seek 0"), exit(1);
36 if (lseek(1, start, 0) < 0)
37 perror("seek 1"), exit(1);
38 if (count % 25 == 0)
39 fprintf(stderr, "%d\n", count);
40 if (read(0, buf, bsize) != bsize) {
41 fprintf(stderr, "read block %d: ", start / 512);
42 perror("read 0");
43 } else if (write(1, buf, bsize) != bsize) {
44 fprintf(stderr, "write block %d: ", start / 512);
45 perror("write 1");
46 }
47 start += bsize;
48 count--;
49 }
50 fprintf(stderr, "DONE!\n");
51}