[kaffe] CVS kaffe (dalibor): Resynced with GNU Classpath
Kaffe CVS
cvs-commits at kaffe.org
Wed Dec 3 12:22:01 PST 2003
PatchSet 4183
Date: 2003/12/03 20:19:23
Author: dalibor
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath
Members:
ChangeLog:1.1774->1.1775
libraries/javalib/gnu/java/io/PlatformHelper.java:1.1->1.2
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1774 kaffe/ChangeLog:1.1775
--- kaffe/ChangeLog:1.1774 Wed Dec 3 20:09:32 2003
+++ kaffe/ChangeLog Wed Dec 3 20:19:23 2003
@@ -1,5 +1,21 @@
2003-12-03 Dalibor Topic <robilad at kaffe.org>
+ * libraries/javalib/gnu/java/io/PlatformHelper.java:
+ Resynced with GNU Classpath.
+
+ 2003-12-02 Michael Koch <konqueror at gmx.de>
+
+ * gnu/java/io/PlatformHelper.java: Reformated.
+
+ 2002-10-18 Mark Wielaard <mark at klomp.org>
+
+ Merged patches from Wu Gansha <gansha.wu at intel.com>:
+ * gnu/java/io/PlatformHelper.java (INITIAL_MAX_PATH): new constant.
+ (toCanonicalForm): Use new constant to optimize StringBuffer usage.
+ Return lowercase path when isWindows == true.
+
+2003-12-03 Dalibor Topic <robilad at kaffe.org>
+
* libraries/javalib/gnu/java/nio/DatagramChannelImpl.java,
libraries/javalib/gnu/java/nio/NIODatagramSocket.java,
libraries/javalib/gnu/java/nio/NIOSocket.java,
Index: kaffe/libraries/javalib/gnu/java/io/PlatformHelper.java
diff -u kaffe/libraries/javalib/gnu/java/io/PlatformHelper.java:1.1 kaffe/libraries/javalib/gnu/java/io/PlatformHelper.java:1.2
--- kaffe/libraries/javalib/gnu/java/io/PlatformHelper.java:1.1 Sat Aug 30 14:18:30 2003
+++ kaffe/libraries/javalib/gnu/java/io/PlatformHelper.java Wed Dec 3 20:19:24 2003
@@ -37,91 +37,97 @@
package gnu.java.io;
-import java.io.*;
import java.util.StringTokenizer;
/**
- * We had many cahnges in File.java, URLStreamHandler.java etc. to handle
+ * We had many changes in File.java, URLStreamHandler.java etc. to handle
* path representations on different platforms (Windows/Unix-family).
* Finally we'd like to collect all these ad hoc codes into this utility class.
* --Gansha
*/
-
-public class PlatformHelper{
+public class PlatformHelper
+{
+ public static final boolean isWindows = System.getProperty("os.name").indexOf("Windows") >= 0;
+ public static final String separator = System.getProperty("file.separator");
+ public static final char separatorChar = separator.charAt(0);
+ public static final String pathSeparator = System.getProperty("path.separator");
+ public static final char pathSeparatorChar = pathSeparator.charAt(0);
+
+ /**
+ * On most platforms 260 is equal or greater than a max path value,
+ * so we can set the initial buffer size of StringBuffer to half of this value
+ * to improve performance.
+ */
+ public static final int INITIAL_MAX_PATH = 260/2;
+
+ /**
+ * This routine checks the input param "path" whether it begins with root path
+ * prefix.
+ * if not, return 0;
+ * if yes, return the len of root path prefix;
+ * --for Unix-family platform, root path begins with "/" and len is 1
+ * --for Windows platform, root path begins with "drive:\\" and len is 3
+ */
+ public static final int beginWithRootPathPrefix(String path)
+ {
+ if (path.startsWith("/") || path.startsWith("\\"))
+ return 1;
+
+ if (!isWindows)
+ return 0;
+
+ if (path.length() > 2
+ && Character.isLetter(path.charAt(0))
+ && path.charAt(1) == ':'
+ && (path.charAt(2) == '/' || path.charAt(2) == '\\'))
+ return 3;
-public static final boolean isWindows
- = System.getProperty("os.name").indexOf("Windows") >= 0;
-
-public static final String separator = System.getProperty("file.separator");
-public static final char separatorChar = separator.charAt(0);
-public static final String pathSeparator = System.getProperty("path.separator");
-public static final char pathSeparatorChar = pathSeparator.charAt(0);
-
-/**
- * On most platforms 260 is equal or greater than a max path value,
- * so we can set the initial buffer size of StringBuffer to half of this value
- * to improve performance.
- */
-public static final int INITIAL_MAX_PATH = 260/2;
-
-/**
- * This routine checks the input param "path" whether it begins with root path
- * prefix.
- * if not, return 0;
- * if yes, return the len of root path prefix;
- * --for Unix-family platform, root path begins with "/" and len is 1
- * --for Windows platform, root path begins with "drive:\\" and len is 3
- */
-public static final int beginWithRootPathPrefix(String path){
- if(path.startsWith("/") || path.startsWith("\\"))
- return 1;
- if(!isWindows)
- return 0;
- if( path.length() > 2 &&
- Character.isLetter(path.charAt(0)) &&
- path.charAt(1) == ':' &&
- ( path.charAt(2) == '/' || path.charAt(2) == '\\')
- )
- return 3;
return 0;
-}
+ }
-/**
- * This routine checks the input param "path" whether it's root directory.
- * --for Unix-family platform, root directory is "/"
- * --for Windows platform, root directory is "\\" or "drive:\\".
- */
-public static final boolean isRootDirectory(String path){
+ /**
+ * This routine checks the input param "path" whether it's root directory.
+ * --for Unix-family platform, root directory is "/"
+ * --for Windows platform, root directory is "\\" or "drive:\\".
+ */
+ public static final boolean isRootDirectory(String path)
+ {
if (path.equals("/") || path.equals("\\"))
- return true;
+ return true;
+
if(!isWindows)
- return false;
- if( path.length() > 2 &&
- path.length() <= 3 &&
- Character.isLetter(path.charAt(0))
- )
- return true;
+ return false;
+
+ if (path.length() > 2
+ && path.length() <= 3
+ && Character.isLetter(path.charAt(0)))
+ return true;
+
return false;
-}
+ }
-/**
- * This routine canonicalizes input param "path" to formal path representation
- * for current platform, including interpreting ".." and "." .
- */
-public static final String toCanonicalForm(String path){
+ /**
+ * This routine canonicalizes input param "path" to formal path representation
+ * for current platform, including interpreting ".." and "." .
+ */
+ public static final String toCanonicalForm(String path)
+ {
/*??
if(path.indexOf('.') < 0 && path.indexOf("..") < 0)
return path;
*/
String tmppath = path.replace('/', separatorChar);
StringBuffer canonpath;
+
// We found it'll be more efficient and easy to handle to
// return a lowercased canonical path
if(isWindows)
- tmppath = tmppath.toLowerCase();
+ tmppath = tmppath.toLowerCase();
+
int i;
+
if ((i = beginWithRootPathPrefix(tmppath)) == 0 )
- return path;
+ return path;
/* The original
"canonpath = new StringBuffer(tmppath.substring(0, i))"
@@ -140,82 +146,93 @@
// Traverse each element of the path, handling "." and ".."
// Should handle "~" too?
if (st.hasMoreTokens())
- do {
- String s = st.nextToken();
-
- // Handle "." or an empty element.
- if (s.equals(".") || s.equals(""))
- continue;
+ do
+ {
+ String s = st.nextToken();
- // Handle ".." by deleting the last element from the path
- if (s.equals("..")) {
- if (pathdepth == 0)
- continue;
- // Strip of trailing separator
- canonpath.setLength(canonpath.length() - 1/*separator.length()*/);
- String tmpstr = canonpath.toString();
- int idx = tmpstr.lastIndexOf(separator);
- if ((idx == -1) || ((idx + 1/*separator.length()*/) > tmpstr.length()))
- //throw new IOException("Can't happen error");
- return path; // Shouldn't happen
+ // Handle "." or an empty element.
+ if (s.equals(".") || s.equals(""))
+ continue;
- canonpath.setLength(idx + 1/*separator.length()*/);
- pathdepth--;
+ // Handle ".." by deleting the last element from the path
+ if (s.equals(".."))
+ {
+ if (pathdepth == 0)
continue;
- }
+
+ // Strip of trailing separator
+ canonpath.setLength(canonpath.length() - 1/*separator.length()*/);
+ String tmpstr = canonpath.toString();
+ int idx = tmpstr.lastIndexOf(separator);
+
+ if ((idx == -1) || ((idx + 1/*separator.length()*/) > tmpstr.length()))
+ //throw new IOException("Can't happen error");
+ return path; // Shouldn't happen
- canonpath.append(s);
- pathdepth++; //now it's more than root path
- if (st.hasMoreTokens())
- canonpath.append(separator);
+ canonpath.setLength(idx + 1/*separator.length()*/);
+ pathdepth--;
+ continue;
+ }
+
+ canonpath.append(s);
+ pathdepth++; //now it's more than root path
+
+ if (st.hasMoreTokens())
+ canonpath.append(separator);
}
- while(st.hasMoreTokens());
+ while (st.hasMoreTokens());
- if(endWithSeparator(path))
- canonpath.append(separator);
+ if (endWithSeparator(path))
+ canonpath.append(separator);
String tmpstr = canonpath.toString();
//if (pathdepth > 0 && endWithSeparator(tmpstr) )
// tmpstr = tmpstr.substring(0, tmpstr.length() - 1/*separator.length()*/);
return tmpstr;
-}
+ }
-/**
- * This routine canonicalizes input param "path" to formal path representation
- * for current platform, and normalize all separators to "sepchar".
- */
-public static final String toCanonicalForm(String path, char sepchar){
+ /**
+ * This routine canonicalizes input param "path" to formal path representation
+ * for current platform, and normalize all separators to "sepchar".
+ */
+ public static final String toCanonicalForm(String path, char sepchar)
+ {
String tmpstr = toCanonicalForm(path);
tmpstr = tmpstr.replace(separatorChar, sepchar);
return tmpstr;
-}
+ }
-/**
- * This routine checks whether input param "path" ends with separator
- */
-public static final boolean endWithSeparator(String path){
+ /**
+ * This routine checks whether input param "path" ends with separator
+ */
+ public static final boolean endWithSeparator(String path)
+ {
if (path.endsWith("\\") || path.endsWith("/"))
- return true;
+ return true;
+
return false;
-}
+ }
-/**
- * This routine removes from input param "path" the tail separator if it exists,
- * and return the remain part.
- */
-public static final String removeTailSeparator(String path){
+ /**
+ * This routine removes from input param "path" the tail separator if it exists,
+ * and return the remain part.
+ */
+ public static final String removeTailSeparator(String path)
+ {
if (endWithSeparator(path) && !isRootDirectory(path))
- return path.substring(0, path.length() - 1);
+ return path.substring(0, path.length() - 1);
+
return path;
-}
+ }
-/**
- * This routine returns last index of separator in input param "path",
- * and return it.
- */
-public static final int lastIndexOfSeparator(String path){
+ /**
+ * This routine returns last index of separator in input param "path",
+ * and return it.
+ */
+ public static final int lastIndexOfSeparator(String path)
+ {
return Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
-}
+ }
}
More information about the kaffe
mailing list