chiark / gitweb /
dvd-sector-copy.c: Reinterpret the `step' as being beyond the high bound.
[dvdrip] / dvd-cache-keys.c
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 }