--- /dev/null
+#include "lib.h"
+
+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)
+{
+ dvd_file_t *vob;
+
+ vob = DVDOpenFile(dvd, index,
+ titlep ? DVD_READ_TITLE_VOBS : DVD_READ_MENU_VOBS);
+ if (!vob) bail("failed to open %s %d", titlep ? "title" : "menu", index);
+ DVDCloseFile(vob);
+}
+
+int main(int argc, char *argv[])
+{
+ char fn[MAXFNSZ];
+ int opt;
+ unsigned i, f = 0;
+ secaddr start, len;
+#define f_bogus 1u
+
+ set_prog(argv[0]);
+ for (;;) {
+ opt = getopt(argc, argv, "h"); if (opt < 0) break;
+ switch (opt) {
+ case 'h': usage(stderr); exit(0);
+ default: f |= f_bogus; break;
+ }
+ }
+ 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 = 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);
+ }
+ }
+
+ if (dvd) DVDClose(dvd);
+ progress_free(&progress);
+ return (0);
+}