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