libbluray | branch: master | hpi1 <[email protected]> | Fri Nov 7 15:36:47 2014 +0200| [094eb2f92381c158a9c4c3261e721c4657bbe672] | committer: hpi1
BD-J: resolve relative paths to Xlet home directory > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=094eb2f92381c158a9c4c3261e721c4657bbe672 --- src/libbluray/bdj/java/java/io/BDFileSystem.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/libbluray/bdj/java/java/io/BDFileSystem.java b/src/libbluray/bdj/java/java/io/BDFileSystem.java index 39478e2..64c2f69 100644 --- a/src/libbluray/bdj/java/java/io/BDFileSystem.java +++ b/src/libbluray/bdj/java/java/io/BDFileSystem.java @@ -85,7 +85,27 @@ public abstract class BDFileSystem extends FileSystem { return fs.prefixLength(pathname); } + private boolean isAbsolutePath(String path) { + return path.startsWith("/") || path.indexOf(":\\") == 1 || + path.startsWith("\\"); + } + + private String getHomeDir() { + String home = BDJXletContext.getCurrentXletHome(); + if (home == null) + return ""; + return home; + } + public String resolve(String parent, String child) { + if (parent == null || parent.equals("") || parent.equals(".")) { + parent = getHomeDir(); + } + else if (!isAbsolutePath(parent)) { + logger.info("resolve relative file at " + parent); + parent = getHomeDir() + parent; + } + String resolvedPath = fs.resolve(parent, child); String cachePath = BDJLoader.getCachedFile(resolvedPath); if (cachePath != resolvedPath) { @@ -108,7 +128,8 @@ public abstract class BDFileSystem extends FileSystem { public String resolve(File f) { if (!f.isAbsolute()) { - System.err.println("***** resolve " + f + " -> " + fs.resolve(f)); + logger.info("resolve relative file " + f.getPath()); + return resolve(BDJXletContext.getCurrentXletHome(), f.getPath()); } String resolvedPath = fs.resolve(f); _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
