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()

Reply via email to