[libbluray-devel] Add bd_open_files()

hpi1 git at videolan.org
Sun Feb 21 17:59:09 CET 2016


libbluray | branch: master | hpi1 <hpi1 at anonymous.org> | Mon Feb  8 12:13:21 2016 +0200| [11dffdbce321446de6b8c41dd19b2c5d06ff667f] | committer: hpi1

Add bd_open_files()

This deprecates old per-process file system access hooks.

> http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=11dffdbce321446de6b8c41dd19b2c5d06ff667f
---

 src/file/filesystem.h  |    2 ++
 src/libbluray/bluray.c |   13 +++++++++++++
 src/libbluray/bluray.h |   16 ++++++++++++++++
 3 files changed, 31 insertions(+)

diff --git a/src/file/filesystem.h b/src/file/filesystem.h
index 8ec6f85..3fe54c8 100644
--- a/src/file/filesystem.h
+++ b/src/file/filesystem.h
@@ -71,6 +71,7 @@ typedef BD_DIR_H* (*BD_DIR_OPEN) (const char* dirname);
  * @param p function pointer
  * @return previous function pointer registered
  */
+/* deprecated - use bd_open_files() instead */
 BD_FILE_OPEN bd_register_file(BD_FILE_OPEN p);
 
 /**
@@ -80,6 +81,7 @@ BD_FILE_OPEN bd_register_file(BD_FILE_OPEN p);
  * @param p function pointer
  * @return previous function pointer registered
  */
+/* deprecated - use bd_open_files() instead */
 BD_DIR_OPEN bd_register_dir(BD_DIR_OPEN p);
 
 #ifdef __cplusplus
diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c
index f030f53..e3342e4 100644
--- a/src/libbluray/bluray.c
+++ b/src/libbluray/bluray.c
@@ -1470,6 +1470,19 @@ int bd_open_stream(BLURAY *bd,
     return _bd_open(bd, NULL, NULL, &fs);
 }
 
+int bd_open_files(BLURAY *bd,
+                  void *handle,
+                  struct bd_dir_s *(*open_dir)(void *handle, const char *rel_path),
+                  struct bd_file_s *(*open_file)(void *handle, const char *rel_path))
+{
+    if (!open_dir || !open_file) {
+        return 0;
+    }
+
+    fs_access fs = { handle, NULL, open_dir, open_file };
+    return _bd_open(bd, NULL, NULL, &fs);
+}
+
 BLURAY *bd_open(const char *device_path, const char *keyfile_path)
 {
     BLURAY *bd;
diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h
index 11e2eb6..41ba978 100644
--- a/src/libbluray/bluray.h
+++ b/src/libbluray/bluray.h
@@ -335,6 +335,22 @@ int bd_open_stream(BLURAY *bd,
                    int (*read_blocks)(void *handle, void *buf, int lba, int num_blocks));
 
 /**
+ *  Open BluRay disc
+ *
+ * @param bd  BLURAY object
+ * @param handle  opaque handle for open_dir and open_file
+ * @param open_dir  function used to open a directory
+ * @param open_file  function used to open a file
+ * @return 1 on success, 0 if error
+ */
+struct bd_dir_s;
+struct bd_file_s;
+int bd_open_files(BLURAY *bd,
+                  void *handle,
+                  struct bd_dir_s *(*open_dir)(void *handle, const char *rel_path),
+                  struct bd_file_s *(*open_file)(void *handle, const char *rel_path));
+
+/**
  *  Close BluRay disc
  *
  * @param bd  BLURAY object



More information about the libbluray-devel mailing list