From e6acec227319d2c28b9fcc721f6d006c5632ec69 Mon Sep 17 00:00:00 2001 From: pgweiss Date: Thu, 23 Apr 2009 16:16:29 +0000 Subject: [PATCH] Update isSymlink to be closer to the current version in apache. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@17429 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/Util.java | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/hudson/Util.java b/core/src/main/java/hudson/Util.java index e6fffb75cb..e8ed8f0c89 100644 --- a/core/src/main/java/hudson/Util.java +++ b/core/src/main/java/hudson/Util.java @@ -268,14 +268,19 @@ public class Util { */ //Taken from http://svn.apache.org/viewvc/maven/shared/trunk/file-management/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java?view=markup public static boolean isSymlink(File file) throws IOException { - File parent = file.getParentFile(); - File canonicalFile = file.getCanonicalFile(); - - return parent != null - && (!canonicalFile.getName().equals(file.getName()) || !canonicalFile.getPath().startsWith( - parent.getCanonicalPath())); - } - + String name = file.getName(); + if (name.equals(".") || name.equals("..")) + return false; + + File fileInCanonicalParent = null; + File parentDir = file.getParentFile(); + if ( parentDir == null ) { + fileInCanonicalParent = file; + } else { + fileInCanonicalParent = new File( parentDir.getCanonicalPath(), name ); + } + return !fileInCanonicalParent.getCanonicalFile().equals( fileInCanonicalParent.getAbsoluteFile() ); + } /** * Creates a new temporary directory. -- GitLab