Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/dvdrip
[dvdrip] / lib.h
diff --git a/lib.h b/lib.h
index dc8d7de..069cd37 100644 (file)
--- a/lib.h
+++ b/lib.h
@@ -43,6 +43,7 @@
 
 #define STRCMP(a, op, b) (strcmp((a), (b)) op 0)
 #define STRNCMP(a, op, b, n) (strncmp((a), (b), (n)) op 0)
+#define MEMCMP(a, op, b, n) (memcmp((a), (b), (n)) op 0)
 
 #ifdef DEBUG
 #  define D(x) x
@@ -72,6 +73,12 @@ extern PRINTF_LIKE(1, 2) NORETURN void bail(const char *fmt, ...);
 extern PRINTF_LIKE(2, 3) NORETURN
   void bail_syserr(int err, const char *fmt, ...);
 
+#define PNF_JUNK 1u
+extern double parse_float(const char **p_inout, unsigned f,
+                         double min, double max, const char *what);
+extern long parse_int(const char **p_inout, unsigned f,
+                     long min, long max, const char *what);
+
 extern void sit(double t);
 
 extern void carefully_write(int fd, const void *buf, size_t sz);
@@ -79,6 +86,7 @@ extern void open_file_on_demand(const char *file, FILE **fp_inout,
                                const char *what);
 extern void check_write(FILE *fp, const char *what);
 extern void carefully_fclose(FILE *fp, const char *what);
+extern off_t device_size(int fd, const char *file, int *blksz_out);
 
 enum { RAW, IFO, VOB, BUP };
 typedef uint_least32_t ident;
@@ -92,6 +100,11 @@ static inline unsigned id_part(ident id) { return ((id >> 16)&0x0ff); }
 #define MAXFNSZ (1 + 8 + 1 + 12 + 1)
 extern void store_filename(char *buf, ident id);
 
+#define DIF_MUSTVOLINF 1u
+#define DIF_MUSTIFOHASH 2u
+#define MAXIDSZ 99
+extern int dvd_id(char *p, dvd_reader_t *dvd, unsigned f, const char *file);
+
 struct banner_progress_item {
   struct progress_item _base;
   const char *msg;
@@ -102,7 +115,7 @@ extern struct progress_state progress;
 extern void show_banner(const char *msg);
 extern void hide_banner(void);
 
-extern void open_dvd(const char *device,
+extern void open_dvd(const char *device, int mode,
                     int *fd_out, dvd_reader_t **dvd_out);
 
 #endif