X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Futil%2FOS.java;h=8d7e693e9f85841d7dcb4bc9045c179cf0fb886f;hb=9f5f29a5d5e961fb55d579d1dbf7f4af182344f7;hp=56a5fdfd46d3691704ca15d886ba2ba6dec96a55;hpb=7f1b071dd54b9c3b85fc82d64993e1450cb99a12;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/util/OS.java b/org.argeo.cms/src/org/argeo/cms/util/OS.java index 56a5fdfd4..8d7e693e9 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/OS.java +++ b/org.argeo.cms/src/org/argeo/cms/util/OS.java @@ -1,6 +1,7 @@ package org.argeo.cms.util; import java.io.File; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -62,10 +63,17 @@ public class OS { // TODO support multiple names runDir = Paths.get(xdgRunDir); } else { - if (System.getProperty("user.name").equals("root")) { + String username = System.getProperty("user.name"); + if (username.equals("root")) { runDir = Paths.get("/run"); } else { - runDir = Paths.get(System.getProperty("user.home"), ".cache/argeo"); + Path homeDir = Paths.get(System.getProperty("user.home")); + if (!Files.isWritable(homeDir)) { + // typically, dameon's home (/usr/sbin) is not writable + runDir = Paths.get("/tmp/" + username + "/run"); + } else { + runDir = homeDir.resolve(".cache/argeo"); + } } } return runDir;