From 12f4db94f9123f69d021280c820d1998ac8b75b8 Mon Sep 17 00:00:00 2001 From: Vhati Date: Sun, 26 Nov 2017 01:19:44 -0500 Subject: [PATCH] Fixed unresolved symlinks when locating FTL resources --- .../java/net/vhati/modmanager/core/FTLUtilities.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/vhati/modmanager/core/FTLUtilities.java b/src/main/java/net/vhati/modmanager/core/FTLUtilities.java index 2bd0d7e..c66df4e 100644 --- a/src/main/java/net/vhati/modmanager/core/FTLUtilities.java +++ b/src/main/java/net/vhati/modmanager/core/FTLUtilities.java @@ -16,11 +16,13 @@ public class FTLUtilities { /** * Confirms the FTL resources dir exists and contains the dat files. + * + * Note: Do d.getCanonicalFile() to resolve any symlinks first! */ public static boolean isDatsDirValid( File d ) { if ( !d.exists() || !d.isDirectory() ) return false; - if ( !new File(d, "data.dat").exists() ) return false; - if ( !new File(d, "resource.dat").exists() ) return false; + if ( !new File( d, "data.dat" ).exists() ) return false; + if ( !new File( d, "resource.dat" ).exists() ) return false; return true; } @@ -59,6 +61,10 @@ public class FTLUtilities { File result = null; for ( File candidate : candidates ) { + // Resolve symlinks. + try {candidate = candidate.getCanonicalFile();} + catch ( IOException e ) {continue;} + if ( isDatsDirValid( candidate ) ) { result = candidate; break;