X-Git-Url: https://git.distorted.org.uk/~mdw/dvdrip/blobdiff_plain/dc53ebfaa3fb887f962b574c6bafa45b160fc765..f82e4cd7e57df2071f281ebdc9553f5970658c6d:/dvd-cache-keys.c diff --git a/dvd-cache-keys.c b/dvd-cache-keys.c index 6a4a7a0..a5fa895 100644 --- a/dvd-cache-keys.c +++ b/dvd-cache-keys.c @@ -1,12 +1,18 @@ #include "lib.h" -static void usage(FILE *fp) { fprintf(fp, "usage: %s DEVICE\n", prog); } +static void usage(FILE *fp) { fprintf(fp, "usage: %s DEVICE ...\n", prog); } static dvd_reader_t *dvd; -static void kick_vob(int index, int titlep) +static void kick_vob(unsigned index, unsigned titlep) { + char fn[MAXFNSZ]; dvd_file_t *vob; + secaddr start, len; + + store_filename(fn, mkident(VOB, index, titlep)); + start = UDFFindFile(dvd, fn, &len); + if (!start) return; vob = DVDOpenFile(dvd, index, titlep ? DVD_READ_TITLE_VOBS : DVD_READ_MENU_VOBS); @@ -16,10 +22,8 @@ static void kick_vob(int index, int titlep) int main(int argc, char *argv[]) { - char fn[MAXFNSZ]; - int opt; - unsigned i, f = 0; - secaddr start, len; + int opt, i; + unsigned j, f = 0; #define f_bogus 1u set_prog(argv[0]); @@ -30,24 +34,23 @@ int main(int argc, char *argv[]) default: f |= f_bogus; break; } } - if (argc - optind != 1) f |= f_bogus; + if (argc - optind < 1) f |= f_bogus; if (f&f_bogus) { usage(stderr); exit(2); } setlocale(LC_ALL, ""); progress_init(&progress); - open_dvd(argv[optind], 0, &dvd); + for (i = optind; i < argc; i++) { + open_dvd(argv[i], 0, &dvd); - for (i = 0; i < 100; i++) { - store_filename(fn, mkident(VOB, i, 0)); - start = UDFFindFile(dvd, fn, &len); if (start) kick_vob(i, 0); - if (i) { - store_filename(fn, mkident(VOB, i, 1)); - start = UDFFindFile(dvd, fn, &len); if (start) kick_vob(i, 1); + for (j = 0; j < 100; j++) { + kick_vob(j, 0); + if (j) kick_vob(j, 1); } + + DVDClose(dvd); } - if (dvd) DVDClose(dvd); progress_free(&progress); return (0); }