Hello. I've noticed that some BluRay discs have the "backup" directory name stored in lower-case. The attached patch lets libbluray find it.
I'm pretty sure there are much better ways of getting the same
behaviour, but my C is quite rusty and this was the simplest way I
could come up with. Feel free to ignore my code and write something
better :)
--
Dakkar - <Mobilis in mobile>
GPG public key fingerprint = A071 E618 DD2C 5901 9574
6FE2 40EA 9883 7519 3F88
key id = 0x75193F88
A commune is where people join together to share their lack of wealth.
-- R. Stallman
From 10148ae04f67f6b4f5a249bd464d210e76d57c49 Mon Sep 17 00:00:00 2001 From: dakkar <[email protected]> Date: Fri, 19 Oct 2012 15:58:44 +0100 Subject: [PATCH] try 'backup' in addition to 'BACKUP' --- src/libbluray/bdnav/bdid_parse.c | 12 ++++++++++++ src/libbluray/bdnav/clpi_parse.c | 13 +++++++++++++ src/libbluray/bdnav/index_parse.c | 13 +++++++++++++ src/libbluray/bdnav/mpls_parse.c | 13 +++++++++++++ src/libbluray/hdmv/mobj_parse.c | 12 ++++++++++++ 5 files changed, 63 insertions(+), 0 deletions(-) diff --git a/src/libbluray/bdnav/bdid_parse.c b/src/libbluray/bdnav/bdid_parse.c index e2a79b3..573b275 100644 --- a/src/libbluray/bdnav/bdid_parse.c +++ b/src/libbluray/bdnav/bdid_parse.c @@ -109,6 +109,18 @@ BDID_DATA *bdid_parse(const char *file_name) X_FREE(backup); } + /* if failed, try backup file */ + if (!bdid) { + size_t len = strlen(file_name); + char *backup = malloc(len + 8); + + strcpy(backup, file_name); + strcpy(backup + len - 7, "backup/id.bdmv"); + + bdid = _bdid_parse(backup); + + X_FREE(backup); + } return bdid; } diff --git a/src/libbluray/bdnav/clpi_parse.c b/src/libbluray/bdnav/clpi_parse.c index ce0b27b..b12e0c1 100644 --- a/src/libbluray/bdnav/clpi_parse.c +++ b/src/libbluray/bdnav/clpi_parse.c @@ -724,6 +724,19 @@ clpi_parse(const char *path, int verbose) X_FREE(backup); } + /* if failed, try backup file */ + if (!cl) { + size_t len = strlen(path); + char *backup = malloc(len + 8); + + strncpy(backup, path, len - 18); + strcpy(backup + len - 18, "backup/"); + strcpy(backup + len - 18 + 7, path + len - 18); + + cl = _clpi_parse(backup, verbose); + + X_FREE(backup); + } return cl; } diff --git a/src/libbluray/bdnav/index_parse.c b/src/libbluray/bdnav/index_parse.c index 981024b..feb5250 100644 --- a/src/libbluray/bdnav/index_parse.c +++ b/src/libbluray/bdnav/index_parse.c @@ -210,6 +210,19 @@ INDX_ROOT *indx_parse(const char *file_name) X_FREE(backup); } + /* if failed, try backup file */ + if (!indx) { + size_t len = strlen(file_name); + char *backup = malloc(len + 8); + + strcpy(backup, file_name); + strcpy(backup + len - 10, "backup/index.bdmv"); + + indx = _indx_parse(backup); + + X_FREE(backup); + } + return indx; } diff --git a/src/libbluray/bdnav/mpls_parse.c b/src/libbluray/bdnav/mpls_parse.c index 2ae1e73..9c8310e 100644 --- a/src/libbluray/bdnav/mpls_parse.c +++ b/src/libbluray/bdnav/mpls_parse.c @@ -849,6 +849,19 @@ mpls_parse(const char *path, int verbose) X_FREE(backup); } + /* if failed, try backup file */ + if (!pl) { + size_t len = strlen(path); + char *backup = malloc(len + 8); + + strncpy(backup, path, len - 19); + strcpy(backup + len - 19, "backup/"); + strcpy(backup + len - 19 + 7, path + len - 19); + + pl = _mpls_parse(backup, verbose); + + X_FREE(backup); + } return pl; } diff --git a/src/libbluray/hdmv/mobj_parse.c b/src/libbluray/hdmv/mobj_parse.c index d6557a1..02c3c99 100644 --- a/src/libbluray/hdmv/mobj_parse.c +++ b/src/libbluray/hdmv/mobj_parse.c @@ -183,6 +183,18 @@ MOBJ_OBJECTS *mobj_parse(const char *file_name) X_FREE(backup); } + /* if failed, try backup file */ + if (!objects) { + int len = strlen(file_name); + char *backup = malloc(len + 8); + + strcpy(backup, file_name); + strcpy(backup + len - 16, "backup/MovieObject.bdmv"); + + objects = _mobj_parse(backup); + + X_FREE(backup); + } return objects; } -- 1.7.8.6
signature.asc
Description: PGP signature
_______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
