Commit | Line | Data |
---|---|---|
a4b3f291 BJ |
1 | #include <stdio.h> |
2 | ||
3 | char *from = "/dev/rrp0c"; | |
4 | char *to = "/dev/rrp1c"; | |
5 | char *buf; | |
6 | int bsize = 19*22; | |
7 | int start = 0; | |
8 | int count = 815; | |
9 | ||
10 | main(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 | } |