From 98c58557fea6582a6e6b84ee56d756fa3b5d14a1 Mon Sep 17 00:00:00 2001 From: vddCore Date: Wed, 11 Jan 2023 23:07:49 +0100 Subject: [PATCH 1/2] fix home directory resolution process --- signlink/src/main/java/rt4/SignLink.java | 51 +++++++++++------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/signlink/src/main/java/rt4/SignLink.java b/signlink/src/main/java/rt4/SignLink.java index 3baf2ef..54f8553 100644 --- a/signlink/src/main/java/rt4/SignLink.java +++ b/signlink/src/main/java/rt4/SignLink.java @@ -17,6 +17,7 @@ import java.net.InetAddress; import java.net.Socket; import java.net.URL; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Hashtable; @@ -193,38 +194,34 @@ public final class SignLink implements Runnable { } catch (@Pc(67) Exception local67) { osVersion = ""; } - try { - homeDir = System.getProperty("user.home"); - if (homeDir != null) { - homeDir = homeDir + "/"; - // 2009scape-specific behavior + + String homeDirOverride = System.getProperty("clientHomeOverride"); + if (homeDirOverride != null) { + homeDir = homeDirOverride; + } else { + try { + if (homeDir == null) + homeDir = System.getProperty("user.home") + File.separatorChar; + if (osName.startsWith("linux")) { - File oldCache = new File(homeDir + "/.runite_rs"); - // Use XDG_DATA_HOME if it exists, otherwise default to ~/.local/share - homeDir = System.getenv("XDG_DATA_HOME") != null ? System.getenv("XDG_DATA_HOME") : homeDir + ".local/share"; - homeDir = homeDir + "/2009scape/"; - File newCache = new File(homeDir + "cache"); - if (oldCache.isDirectory() && !newCache.exists()) { - Files.move(oldCache.toPath(), newCache.toPath(), StandardCopyOption.REPLACE_EXISTING); + String xdgHome = System.getenv("XDG_DATA_HOME"); + + if (xdgHome != null) { + homeDir = xdgHome + + File.separatorChar + + "2009scape/"; + } else { + homeDir += ".local/share/2009scape/"; } + } else if (osName.startsWith("mac")) { + homeDir += "Library/Application Support/2009scape/"; + } else if (osName.startsWith("windows")) { + homeDir += "2009scape\\"; } - } - } catch (@Pc(86) Exception ex) { - } - if (homeDir == null) { - homeDir = "~/"; - // 2009scape-specific behavior - if (osName.startsWith("linux")) { - File oldCache = new File(homeDir + "/.runite_rs"); - // Use XDG_DATA_HOME if it exists, otherwise default to ~/.local/share - homeDir = System.getenv("XDG_DATA_HOME") != null ? System.getenv("XDG_DATA_HOME") : homeDir + ".local/share"; - homeDir = homeDir + "/2009scape/"; - File newCache = new File(homeDir + "cache"); - if (oldCache.isDirectory() && !newCache.exists()) { - Files.move(oldCache.toPath(), newCache.toPath(), StandardCopyOption.REPLACE_EXISTING); - } + } catch (@Pc(86) Exception ex) { } } + try { this.eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue(); } catch (@Pc(97) Throwable ex) { From 8f0ce915a0cce3a38c8571413512f59c0d5c62ce Mon Sep 17 00:00:00 2001 From: vddCore Date: Wed, 11 Jan 2023 23:20:44 +0100 Subject: [PATCH 2/2] remove redundant file separator char for linux-specific branch --- signlink/src/main/java/rt4/SignLink.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/signlink/src/main/java/rt4/SignLink.java b/signlink/src/main/java/rt4/SignLink.java index 54f8553..fe733a0 100644 --- a/signlink/src/main/java/rt4/SignLink.java +++ b/signlink/src/main/java/rt4/SignLink.java @@ -207,9 +207,7 @@ public final class SignLink implements Runnable { String xdgHome = System.getenv("XDG_DATA_HOME"); if (xdgHome != null) { - homeDir = xdgHome - + File.separatorChar - + "2009scape/"; + homeDir = xdgHome + "/2009scape/"; } else { homeDir += ".local/share/2009scape/"; }