summaryrefslogtreecommitdiffstats
path: root/libjava/java
diff options
context:
space:
mode:
authorandreast <andreast@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-30 14:19:57 +0000
committerandreast <andreast@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-30 14:19:57 +0000
commita5d400f38b1b09ff059ec8ac4c784d2954be9d7f (patch)
tree395f94b22565caec425ef043fad9455eb7a70d37 /libjava/java
parent31b04dee8eb4afbb67f914bf9286b1adb271e820 (diff)
downloadppe42-gcc-a5d400f38b1b09ff059ec8ac4c784d2954be9d7f.tar.gz
ppe42-gcc-a5d400f38b1b09ff059ec8ac4c784d2954be9d7f.zip
2004-08-30 Jeroen Frijters <jeroen@frijters.net>
* java/io/File.java File(String,String): Fixed handling of empty path. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86774 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/io/File.java35
1 files changed, 29 insertions, 6 deletions
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);
OpenPOWER on IntegriCloud