diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-11-06 16:34:41 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-11-07 08:38:26 +0100 |
commit | 88fb8dccc75454cee484a9ba177ff006c7fc77b9 (patch) | |
tree | 5d2a4e7671c98bac3a5d1707a780a9c89a7f1476 /node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java | |
parent | 4187b1391bf383028a3ffd1480aacd70c1db287b (diff) |
Do not follow links when deleting recursively
...like the Javadoc already says.
Diffstat (limited to 'node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java index 20a02e91bce..abb3318d31a 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java @@ -178,10 +178,19 @@ public class UnixPath { return this; } + /** + * Returns whether this path is a directory. Symlinks are followed, so this returns true for symlinks pointing to a + * directory. + */ public boolean isDirectory() { return uncheck(() -> Files.isDirectory(path)); } + /** Returns whether this is a symlink */ + public boolean isSymbolicSymlink() { + return Files.isSymbolicLink(path); + } + /** * Similar to rm -rf file: * - It's not an error if file doesn't exist @@ -189,12 +198,11 @@ public class UnixPath { * - For symlinks: Only the symlink is removed, not what the symlink points to */ public boolean deleteRecursively() { - if (isDirectory()) { + if (!isSymbolicSymlink() && isDirectory()) { for (UnixPath path : listContentsOfDirectory()) { path.deleteRecursively(); } } - return uncheck(() -> Files.deleteIfExists(path)); } |