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