From: Jeroen Frijters Date: Mon, 30 Aug 2004 14:19:57 +0000 (+0000) Subject: File.java File (String,String): Fixed handling of empty path. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2c64dead9efc260f0c60d24960d463e56034e797;p=gcc.git File.java File (String,String): Fixed handling of empty path. 2004-08-30 Jeroen Frijters * java/io/File.java File(String,String): Fixed handling of empty path. From-SVN: r86774 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 5093b39beb8..96b505b1641 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2004-08-30 Jeroen Frijters + + * java/io/File.java File(String,String): Fixed handling of empty + path. + 2004-08-30 Casey Marshall Author e-mail updated for all files. diff --git a/libjava/java/io/File.java b/libjava/java/io/File.java index 1d930d59b84..2626d47e9e1 100644 --- a/libjava/java/io/File.java +++ b/libjava/java/io/File.java @@ -361,14 +361,37 @@ public class File implements Serializable, Comparable { if (name == null) throw new NullPointerException(); - if (dirPath != null && dirPath.length() > 0) + if (dirPath != null) { - // Try to be smart about the number of separator characters. - if (dirPath.charAt(dirPath.length() - 1) == separatorChar - || name.length() == 0) - path = normalizePath(dirPath + name); + if (dirPath.length() > 0) + { + // Try to be smart about the number of separator characters. + if (dirPath.charAt(dirPath.length() - 1) == separatorChar + || name.length() == 0) + path = normalizePath(dirPath + name); + else + path = normalizePath(dirPath + separatorChar + name); + } else - path = normalizePath(dirPath + separatorChar + name); + { + // If dirPath is empty, use a system dependant + // default prefix. + // Note that the leading separators in name have + // to be chopped off, to prevent them forming + // a UNC prefix on Windows. + if (separatorChar == '\\' /* TODO use ON_WINDOWS */) + { + int skip = 0; + while(name.length() > skip + && (name.charAt(skip) == separatorChar + || name.charAt(skip) == '/')) + { + skip++; + } + name = name.substring(skip); + } + path = normalizePath(separatorChar + name); + } } else path = normalizePath(name);