From 360486848fe1c7e10f47897fa7706ca3eb6d26ef Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sun, 2 Sep 2018 11:07:08 +0700 Subject: [PATCH] Correctly deal with broken symlinks when using --conflict override https://www.filebot.net/forums/viewtopic.php?f=6&t=6174 --- source/net/filebot/cli/CmdlineOperations.java | 2 +- source/net/filebot/util/FileUtilities.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/source/net/filebot/cli/CmdlineOperations.java b/source/net/filebot/cli/CmdlineOperations.java index 21e636de..887e9792 100644 --- a/source/net/filebot/cli/CmdlineOperations.java +++ b/source/net/filebot/cli/CmdlineOperations.java @@ -600,7 +600,7 @@ public class CmdlineOperations implements CmdlineInterface { destination = resolve(source, destination); } - if (!destination.equals(source) && destination.exists()) { + if (!destination.equals(source) && existsNoFollowLinks(destination)) { if (conflictAction == ConflictAction.FAIL) { throw new CmdlineException(String.format("Failed to process [%s] because [%s] already exists", source, destination)); } diff --git a/source/net/filebot/util/FileUtilities.java b/source/net/filebot/util/FileUtilities.java index 7bafea51..59ad6777 100644 --- a/source/net/filebot/util/FileUtilities.java +++ b/source/net/filebot/util/FileUtilities.java @@ -159,6 +159,10 @@ public final class FileUtilities { return destination.toFile(); } + public static boolean existsNoFollowLinks(File file) { + return Files.exists(file.toPath(), LinkOption.NOFOLLOW_LINKS); + } + public static void delete(File file) throws IOException { if (file.isDirectory()) { Files.walkFileTree(file.toPath(), new SimpleFileVisitor() { @@ -620,8 +624,7 @@ public final class FileUtilities { /** * Strip file name of invalid characters * - * @param filename - * original filename + * @param filename original filename * @return valid file name stripped of invalid characters */ public static String validateFileName(CharSequence filename) {