tests: remove udf/101
[xfstests-dev.git] / src / itrash.c
1 /*
2  * Bulkstat test case from Roger Willcocks <willcor@gmail.com>
3  */
4 #include <sys/types.h>
5 #include <unistd.h>
6 #include <stdlib.h>
7 #include <stdio.h>
8 #include <fcntl.h>
9
10 char buffer[32768];
11 int overwrote;
12
13 void die(char *func)
14 {
15         perror(func);
16         exit(1);
17 }
18
19 void nuke()
20 {
21         int i;
22         for (i = 2048; i < 32768-1; i++)
23                 if (buffer[i] == 'I' && buffer[i+1] == 'N') {
24                         buffer[i] = buffer[i+1] = 'X';
25                         overwrote = 1;
26                 }
27 }
28
29 int main(int argc, char* argv[])
30 {
31         int f;
32         loff_t offset;
33
34         if (argc != 3) {
35                 printf("%s <device> <offset>\n", argv[0]);
36                 exit(1);
37         }
38
39         f = open(argv[1], O_RDWR);
40         offset = atoll(argv[2]);
41
42         if (f < 0) die("open");
43         if (lseek(f, offset, SEEK_SET) < 0) die("lseek");
44         if (read(f, buffer, 32768) != 32768) die("read");
45         printf("Starting overwrite\n");
46         nuke();
47         if (lseek(f, offset, SEEK_SET) < 0) die("lseek");
48         if (write(f, buffer, 32768) != 32768) die("write");
49         if (!overwrote)
50                 printf("Did not overwrite any inodes\n");
51         printf("Overwrite complete\n");
52         close(f);
53         return 0;
54 }