chiark / gitweb /
dvd-cache-keys.c: Move the existence check into `kick_vob'.
[dvdrip] / dvd-cache-keys.c
CommitLineData
dc53ebfa
MW
1#include "lib.h"
2
3static void usage(FILE *fp) { fprintf(fp, "usage: %s DEVICE\n", prog); }
4
5static dvd_reader_t *dvd;
6
a8cedff8 7static 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
23int main(int argc, char *argv[])
24{
dc53ebfa
MW
25 int opt;
26 unsigned i, f = 0;
27 secaddr start, len;
28#define f_bogus 1u
29
30 set_prog(argv[0]);
31 for (;;) {
32 opt = getopt(argc, argv, "h"); if (opt < 0) break;
33 switch (opt) {
34 case 'h': usage(stderr); exit(0);
35 default: f |= f_bogus; break;
36 }
37 }
38 if (argc - optind != 1) f |= f_bogus;
39 if (f&f_bogus) { usage(stderr); exit(2); }
40
41 setlocale(LC_ALL, "");
42 progress_init(&progress);
43
44 open_dvd(argv[optind], 0, &dvd);
45
46 for (i = 0; i < 100; i++) {
584dfdf8
MW
47 kick_vob(i, 0);
48 if (i) kick_vob(i, 1);
dc53ebfa
MW
49 }
50
51 if (dvd) DVDClose(dvd);
52 progress_free(&progress);
53 return (0);
54}