X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/7443225d96fd830c8abb2afd49381f6b38ce5aec..50b6174dd68b51c659111f3712b77e3d3e8cf2e6:/src/main/java/org/asamk/signal/util/IOUtils.java diff --git a/src/main/java/org/asamk/signal/util/IOUtils.java b/src/main/java/org/asamk/signal/util/IOUtils.java index 69128d01..434669de 100644 --- a/src/main/java/org/asamk/signal/util/IOUtils.java +++ b/src/main/java/org/asamk/signal/util/IOUtils.java @@ -12,7 +12,9 @@ import java.nio.file.attribute.PosixFilePermissions; import java.util.EnumSet; import java.util.Set; -import static java.nio.file.attribute.PosixFilePermission.*; +import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE; +import static java.nio.file.attribute.PosixFilePermission.OWNER_READ; +import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE; public class IOUtils { @@ -33,13 +35,18 @@ public class IOUtils { return output.toString(); } - public static void createPrivateDirectories(String path) throws IOException { - final Path file = new File(path).toPath(); + public static void createPrivateDirectories(String directoryPath) throws IOException { + final File file = new File(directoryPath); + if (file.exists()) { + return; + } + + final Path path = file.toPath(); try { Set perms = EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE); - Files.createDirectories(file, PosixFilePermissions.asFileAttribute(perms)); + Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms)); } catch (UnsupportedOperationException e) { - Files.createDirectories(file); + Files.createDirectories(path); } } @@ -52,4 +59,13 @@ public class IOUtils { Files.createFile(file); } } + + public static String getDataHomeDir() { + String dataHome = System.getenv("XDG_DATA_HOME"); + if (dataHome != null) { + return dataHome; + } + + return System.getProperty("user.home") + "/.local/share"; + } }