This is an automated email from the ASF dual-hosted git repository. bodewig pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ant.git
commit 9b9b69504ccd1a7a281a435e12179cb41cf0b524 Author: Stefan Bodewig <bode...@apache.org> AuthorDate: Sun Jun 8 09:51:44 2025 +0200 use extracted logic for detecting and stripping leading path separators --- src/main/org/apache/tools/ant/taskdefs/Expand.java | 6 ++---- src/main/org/apache/tools/ant/types/ArchiveScanner.java | 11 ++++++----- src/main/org/apache/tools/ant/util/FileUtils.java | 8 ++++---- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Expand.java b/src/main/org/apache/tools/ant/taskdefs/Expand.java index 19f27fb4b..e607a6a4a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Expand.java +++ b/src/main/org/apache/tools/ant/taskdefs/Expand.java @@ -257,10 +257,8 @@ public class Expand extends Task { boolean isDirectory, FileNameMapper mapper) throws IOException { - final boolean entryNameStartsWithPathSpec = !entryName.isEmpty() - && (entryName.charAt(0) == File.separatorChar - || entryName.charAt(0) == '/' - || entryName.charAt(0) == '\\'); + final boolean entryNameStartsWithPathSpec = + FILE_UTILS.startsWithPathSeparator(entryName); if (stripAbsolutePathSpec && entryNameStartsWithPathSpec) { log("stripped absolute path spec from " + entryName, Project.MSG_VERBOSE); diff --git a/src/main/org/apache/tools/ant/types/ArchiveScanner.java b/src/main/org/apache/tools/ant/types/ArchiveScanner.java index ead0005e8..f5ab9f95e 100644 --- a/src/main/org/apache/tools/ant/types/ArchiveScanner.java +++ b/src/main/org/apache/tools/ant/types/ArchiveScanner.java @@ -28,6 +28,7 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.types.resources.FileProvider; import org.apache.tools.ant.types.resources.FileResource; import org.apache.tools.ant.types.resources.FileResourceIterator; +import org.apache.tools.ant.util.FileUtils; /** * ArchiveScanner accesses the pattern matching algorithm in DirectoryScanner, @@ -48,6 +49,8 @@ public abstract class ArchiveScanner extends DirectoryScanner { // CheckStyle:VisibilityModifier ON + private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); + /** * The archive resource which should be scanned. */ @@ -257,11 +260,9 @@ public abstract class ArchiveScanner extends DirectoryScanner { public boolean match(String path) { String vpath = path; if (!path.isEmpty()) { - vpath = path.replace('/', File.separatorChar) - .replace('\\', File.separatorChar); - if (vpath.charAt(0) == File.separatorChar) { - vpath = vpath.substring(1); - } + vpath = FILE_UTILS.stripLeadingPathSeparator(path) + .replace('/', File.separatorChar) + .replace('\\', File.separatorChar); } return isIncluded(vpath) && !isExcluded(vpath); } diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java index 1bf6d7e3e..087ab703d 100644 --- a/src/main/org/apache/tools/ant/util/FileUtils.java +++ b/src/main/org/apache/tools/ant/util/FileUtils.java @@ -684,13 +684,13 @@ public class FileUtils { if (filename.isEmpty()) { return false; } + if (!ON_DOS && !ON_NETWARE) { + return PRIMARY_INSTANCE.startsWithPathSeparator(filename); + } int len = filename.length(); char sep = File.separatorChar; filename = filename.replace('/', sep).replace('\\', sep); char c = filename.charAt(0); - if (!ON_DOS && !ON_NETWARE) { - return c == sep; - } if (c == sep) { // CheckStyle:MagicNumber OFF if (!ON_DOS || len <= 4 || filename.charAt(1) != sep) { @@ -859,7 +859,7 @@ public class FileUtils { String osPath; String path = normalize(f.getAbsolutePath()).getPath(); String name = f.getName(); - boolean isAbsolute = path.charAt(0) == File.separatorChar; + boolean isAbsolute = startsWithPathSeparator(path); // treat directories specified using .DIR syntax as files // CheckStyle:MagicNumber OFF boolean isDirectory = f.isDirectory()