]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/util/IOUtils.java
Ignore closed channel exception when closing the channel lock
[signal-cli] / src / main / java / org / asamk / signal / util / IOUtils.java
index 9b8c3b5b3291b8f301782fa67744f7c0ce472efa..f21c1572b57334735b483cba7d827c377483d8d1 100644 (file)
@@ -1,5 +1,8 @@
 package org.asamk.signal.util;
 
+import org.whispersystems.signalservice.internal.util.Util;
+
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -12,7 +15,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,6 +38,12 @@ public class IOUtils {
         return output.toString();
     }
 
+    public static byte[] readFully(InputStream in) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        Util.copy(in, baos);
+        return baos.toByteArray();
+    }
+
     public static void createPrivateDirectories(String directoryPath) throws IOException {
         final File file = new File(directoryPath);
         if (file.exists()) {
@@ -57,4 +68,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";
+    }
 }