Commit | Line | Data |
---|---|---|
dc53ebfa MW |
1 | #include "lib.h" |
2 | ||
3 | static void usage(FILE *fp) { fprintf(fp, "usage: %s DEVICE\n", prog); } | |
4 | ||
5 | static dvd_reader_t *dvd; | |
6 | ||
7 | static void kick_vob(int index, int titlep) | |
8 | { | |
9 | dvd_file_t *vob; | |
10 | ||
11 | vob = DVDOpenFile(dvd, index, | |
12 | titlep ? DVD_READ_TITLE_VOBS : DVD_READ_MENU_VOBS); | |
13 | if (!vob) bail("failed to open %s %d", titlep ? "title" : "menu", index); | |
14 | DVDCloseFile(vob); | |
15 | } | |
16 | ||
17 | int main(int argc, char *argv[]) | |
18 | { | |
19 | char fn[MAXFNSZ]; | |
20 | int opt; | |
21 | unsigned i, f = 0; | |
22 | secaddr start, len; | |
23 | #define f_bogus 1u | |
24 | ||
25 | set_prog(argv[0]); | |
26 | for (;;) { | |
27 | opt = getopt(argc, argv, "h"); if (opt < 0) break; | |
28 | switch (opt) { | |
29 | case 'h': usage(stderr); exit(0); | |
30 | default: f |= f_bogus; break; | |
31 | } | |
32 | } | |
33 | if (argc - optind != 1) f |= f_bogus; | |
34 | if (f&f_bogus) { usage(stderr); exit(2); } | |
35 | ||
36 | setlocale(LC_ALL, ""); | |
37 | progress_init(&progress); | |
38 | ||
39 | open_dvd(argv[optind], 0, &dvd); | |
40 | ||
41 | for (i = 0; i < 100; i++) { | |
42 | store_filename(fn, mkident(VOB, i, 0)); | |
43 | start = UDFFindFile(dvd, fn, &len); if (start) kick_vob(i, 0); | |
44 | if (i) { | |
45 | store_filename(fn, mkident(VOB, i, 1)); | |
46 | start = UDFFindFile(dvd, fn, &len); if (start) kick_vob(i, 1); | |
47 | } | |
48 | } | |
49 | ||
50 | if (dvd) DVDClose(dvd); | |
51 | progress_free(&progress); | |
52 | return (0); | |
53 | } |