From 8cdea3ac79f5d890ba765665624c981990076c98 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Thu, 17 Dec 2020 15:55:53 -0500 Subject: [PATCH] chmod not supported on windows --- .../java/org/cobbzilla/util/io/TempDir.java | 17 ++++++++++++----- .../java/org/cobbzilla/util/system/OsType.java | 4 ++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/cobbzilla/util/io/TempDir.java b/src/main/java/org/cobbzilla/util/io/TempDir.java index 8f481a3..b7c3a0b 100644 --- a/src/main/java/org/cobbzilla/util/io/TempDir.java +++ b/src/main/java/org/cobbzilla/util/io/TempDir.java @@ -23,6 +23,7 @@ import static org.cobbzilla.util.daemon.ZillaRuntime.*; import static org.cobbzilla.util.io.FileUtil.abs; import static org.cobbzilla.util.io.FileUtil.getDefaultTempDir; import static org.cobbzilla.util.system.CommandShell.chmod; +import static org.cobbzilla.util.system.OsType.isWindows; import static org.cobbzilla.util.system.Sleep.sleep; /** @@ -105,21 +106,27 @@ public class TempDir extends File implements Closeable { public TempDir () { this("700"); } - public TempDir (File dir) { this(dir, "700"); } + public TempDir (File dir) { this(dir, "700", !isWindows()); } + public TempDir (File dir, boolean doChmod) { this(dir, "700", doChmod); } - public TempDir (String chmod) { this(null, chmod); } + public TempDir (String chmod) { this(null, chmod, !isWindows()); } - public TempDir (File dir, String chmod) { + public TempDir (File dir, String chmod) { this(dir, chmod, !isWindows()); } + + public TempDir (File dir, String chmod, boolean doChmod) { super(abs(_tempdir(dir))); file = new File(super.getPath()); - chmod(file, chmod); + if (doChmod) { + if (isWindows()) die("TempDir: chmod not supported on Windows"); + chmod(file, chmod); + } } private static Path _tempdir(File dir) { try { final Set perms = PosixFilePermissions.fromString("rwx------"); return dir == null - ? Files.createTempDirectory("tempDir", PosixFilePermissions.asFileAttribute(perms)) + ? Files.createTempDirectory( "tempDir", PosixFilePermissions.asFileAttribute(perms)) : Files.createTempDirectory(dir.toPath(), "tempDir", PosixFilePermissions.asFileAttribute(perms)); } catch (IOException e) { return die("_tempdir: "+shortError(e), e); diff --git a/src/main/java/org/cobbzilla/util/system/OsType.java b/src/main/java/org/cobbzilla/util/system/OsType.java index 0dbd0fa..4a4a820 100644 --- a/src/main/java/org/cobbzilla/util/system/OsType.java +++ b/src/main/java/org/cobbzilla/util/system/OsType.java @@ -13,6 +13,10 @@ public enum OsType { public static final OsType CURRENT_OS = initCurrentOs(); + public static boolean isWindows () { return CURRENT_OS == windows; } + public static boolean isMac () { return CURRENT_OS == macosx; } + public static boolean isLinux () { return CURRENT_OS == linux; } + private static OsType initCurrentOs() { if (Platform.isWindows()) return windows; if (Platform.isMac()) return macosx;