Index: FileUtils.java
===================================================================
RCS file: /home/cvspublic/jakarta-ant/src/main/org/apache/tools/ant/util/FileUtils.java,v
retrieving revision 1.5
diff -u -r1.5 FileUtils.java
--- FileUtils.java	2001/10/01 13:32:36	1.5
+++ FileUtils.java	2001/10/11 17:44:45
@@ -329,6 +329,11 @@
             return normalize(filename);
         }
 
+        if (System.getProperty("os.name").toLowerCase().equals("netware")) {
+            if (filename.indexOf(':') != -1) {
+                return normalize(filename);
+            }
+        }
         if (file == null) {
             return new File(filename);
         }
@@ -377,15 +382,27 @@
         path = path.replace('/', File.separatorChar)
             .replace('\\', File.separatorChar);
 
-        // make sure we are dealing with an absolute path
-        if (!path.startsWith(File.separator) &&
-            ! (path.length() >= 2 &&
-               Character.isLetter(path.charAt(0)) &&
-               path.charAt(1) == ':')
-            ) {             
-            String msg = path + " is not an absolute path";
-            throw new BuildException(msg);
+        String myos = System.getProperty("os.name");
+        boolean isNetWare = (myos.toLowerCase().indexOf("netware")!=-1);
+
+        if (!isNetWare) {
+            if (!path.startsWith(File.separator) &&
+                ! (path.length() >= 2 &&
+                   Character.isLetter(path.charAt(0)) &&
+                   path.charAt(1) == ':')) {
+                String msg = path + " is not an absolute path";
+                throw new BuildException(msg);
+            }
+        } else {
+            // NetWare volume names are typically more than one character,
+            // unlike dos-based system drive names
+            if (!path.startsWith(File.separator) &&
+                (path.indexOf(':') == -1)) {
+                String msg = path + " is not an absolute path";
+                throw new BuildException(msg);
+            }
         }
+        // make sure we are dealing with an absolute path
             
         boolean dosWithDrive = false;
         String root = null;
@@ -418,16 +435,27 @@
             }
             
         } else {
-            if (path.length() == 1) {
-                root = File.separator;
-                path = "";
-            } else if (path.charAt(1) == File.separatorChar) {
-                // UNC drive
-                root = File.separator+File.separator;
-                path = path.substring(2);
+            if (!isNetWare) {
+                if (path.length() == 1) {
+                    root = File.separator;
+                    path = "";
+                } else if (path.charAt(1) == File.separatorChar) {
+                    // UNC drive
+                    root = File.separator+File.separator;
+                    path = path.substring(2);
+                } else {
+                    root = File.separator;
+                    path = path.substring(1);
+                }
             } else {
-                root = File.separator;
-                path = path.substring(1);
+                int colon = path.indexOf(':');
+                if (colon != -1) {
+                    root = path.substring(0, colon);
+                    path = path.substring(colon);
+                } else {
+                    root = File.separator;
+                    path = path.substring(1);
+                }
             }
         }
