Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/dvdrip
[dvdrip] / dvd-cache-keys.c
CommitLineData
dc53ebfa
MW
1#include "lib.h"
2
93ade121 3static void usage(FILE *fp) { fprintf(fp, "usage: %s DEVICE ...\n", prog); }
dc53ebfa
MW
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{
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 43 for (i = optind; i < argc; i++) {
972381af 44 open_dvd(argv[i], O_RDONLY, 0, &dvd);
93ade121
MW
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}