|
|
1.1 root 1: /* devcopy.c */
2: #define BSIZE 1024
3: char dev[50];
4: char disk[50];
5: char blocks[50] ;
6: int fsi;
7: int fso;
8: char buffer[BSIZE];
9:
10: main()
11: {
12: int j, c, i, n;
13: char buf[50];
14: int input, output;
15:
16: do {
17: printf("Source device : ");
18: gets(dev);
19: printf("Copy to device : ");
20: gets(disk);
21: printf("Number of blocks : ");
22: gets(blocks);
23: j = number(blocks);
24: input = open(dev, 0);
25: if (input <= 0) printf("Cannot open %s\n", dev);
26: output = open(disk, 1);
27: if (output <= 0) printf("Cannot open output\n", disk);
28: } while (input <= 0 || output <= 0);
29:
30: i = 0; /* Block number */
31: n = BSIZE;
32: while (n == BSIZE && i < j) {
33: if (i > 0 && (i%500 == 0) ) printf("%d blocks\n", i);
34: lseek (input, i*BSIZE, 0);
35: n = read (input, buffer, BSIZE);
36: if (n == BSIZE) {
37: lseek (output, i*BSIZE, 0);
38: n = write(output, buffer, BSIZE);
39: if (n != BSIZE) printf("Short write, block %d, %d bytes only\n",i,n);
40: i++;
41: }
42: else printf("Short read, block %d, %d bytes only\n",i,n);
43: }
44: printf ("Total of %d blocks copied\n",i);
45: }
46:
47: int number (response)
48: char *response;
49: {
50: int i, j;
51:
52: j = 0; /* Total */
53: while (*response == ' ' || *response == '\t') response++;
54: while (*response >= '0' && *response <= '9') {
55: j = j*10 + *response - '0';
56: response++;
57: }
58: return (j);
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.