1 /* Corrupt a file in controllable ways, to test vdmfec. */
2
3 #include "defs.h"
4 #include "util.h"
5
6 char Usage[] = "usage: %s -o<offset> -n<nbytes> file\n";
7 #define USAGE() msg(Usage, Progname)
8
9 long Offset;
10 int Nbytes;
11
12 void doit(char *);
13
main(int argc,char ** argv)14 int main(int argc, char **argv)
15 {
16 int c;
17
18 Progname = *argv;
19
20 /* Parse option arguments. */
21
22 while ((c = getopt(argc, argv, "o:n:")) != EOF) {
23 switch (c) {
24
25 case 'o':
26 Offset = atoik(optarg);
27 break;
28
29 case 'n':
30 Nbytes = atoik(optarg);
31 break;
32
33 default:
34 USAGE();
35 exit(1);
36 }
37 }
38 argc -= optind;
39 argv += optind;
40
41 if (argc != 1) {
42 USAGE();
43 exit(1);
44 }
45
46 doit(argv[0]);
47
48 return 0;
49 }
50
doit(char * name)51 void doit(char *name)
52 {
53 u_char *block;
54 FILE *file, *random;
55
56 block = new_array(u_char, Nbytes);
57 file = fileopen(name, "r+");
58 fseek(file, Offset, SEEK_SET);
59 random = fileopen("/dev/urandom", "r");
60 fread(block, 1, Nbytes, random);
61 fwrite(block, 1, Nbytes, file);
62 fclose(file);
63 fclose(random);
64 }
65