File.java File (String,String): Fixed handling of empty path.

2004-08-30  Jeroen Frijters  <jeroen@frijters.net>

	* java/io/File.java File(String,String): Fixed handling of empty
	path.

From-SVN: r86774
This commit is contained in:
Jeroen Frijters 2004-08-30 14:19:57 +00:00 committed by Andreas Tobler
parent 89b8abbf7d
commit 2c64dead9e
2 changed files with 34 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2004-08-30 Jeroen Frijters <jeroen@frijters.net>
* java/io/File.java File(String,String): Fixed handling of empty
path.
2004-08-30 Casey Marshall <csm@gnu.org>
Author e-mail updated for all files.

View File

@ -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);