Initial revision
From-SVN: r102074
This commit is contained in:
parent
6f4434b39b
commit
f911ba985a
4557 changed files with 1000262 additions and 0 deletions
56
libjava/classpath/gnu/java/io/ASN1ParsingException.java
Normal file
56
libjava/classpath/gnu/java/io/ASN1ParsingException.java
Normal file
|
@ -0,0 +1,56 @@
|
|||
/* ASN1ParsingException.java -- ASN.1 parsing exception.
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.io;
|
||||
|
||||
/**
|
||||
* Signals a malformed ASN.1 sequence.
|
||||
*/
|
||||
public class ASN1ParsingException extends java.io.IOException
|
||||
{
|
||||
|
||||
public ASN1ParsingException()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
public ASN1ParsingException(String msg)
|
||||
{
|
||||
super(msg);
|
||||
}
|
||||
}
|
216
libjava/classpath/gnu/java/io/Base64InputStream.java
Normal file
216
libjava/classpath/gnu/java/io/Base64InputStream.java
Normal file
|
@ -0,0 +1,216 @@
|
|||
/* Base64InputStream.java -- base-64 input stream.
|
||||
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.io;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.FilterInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* A filter input stream that decodes data encoded in the Base-64
|
||||
* encoding scheme.
|
||||
*
|
||||
* @author Casey Marshall (rsdio@metastatic.org)
|
||||
*/
|
||||
public class Base64InputStream extends FilterInputStream
|
||||
{
|
||||
|
||||
// Constants and fields.
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/** Base-64 digits. */
|
||||
private static final String BASE_64 =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
/** Base-64 padding character. */
|
||||
private static final char BASE_64_PAD = '=';
|
||||
|
||||
/** Decoding state. */
|
||||
private int state;
|
||||
|
||||
/** Intermediate decoded value. */
|
||||
private int temp;
|
||||
|
||||
/** EOF flag. */
|
||||
private boolean eof;
|
||||
|
||||
private final byte[] one = new byte[1];
|
||||
|
||||
// Constructors.
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a new Base-64 input stream. The input bytes must be the
|
||||
* ASCII characters A-Z, a-z, 0-9, + and /, with optional whitespace,
|
||||
* and will be decoded into a byte stream.
|
||||
*
|
||||
* @param in The source of Base-64 input.
|
||||
*/
|
||||
public Base64InputStream(InputStream in)
|
||||
{
|
||||
super(in);
|
||||
state = 0;
|
||||
temp = 0;
|
||||
eof = false;
|
||||
}
|
||||
|
||||
// Class method.
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Decode a single Base-64 string to a byte array.
|
||||
*
|
||||
* @param base64 The Base-64 encoded data.
|
||||
* @return The decoded bytes.
|
||||
* @throws IOException If the given data do not compose a valid Base-64
|
||||
* sequence.
|
||||
*/
|
||||
public static byte[] decode(String base64) throws IOException
|
||||
{
|
||||
Base64InputStream in =
|
||||
new Base64InputStream(new ByteArrayInputStream(base64.getBytes()));
|
||||
ByteArrayOutputStream out =
|
||||
new ByteArrayOutputStream((int) (base64.length() / 0.666));
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
while ((len = in.read(buf)) != -1)
|
||||
out.write(buf, 0, len);
|
||||
return out.toByteArray();
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
public int available()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int read() throws IOException
|
||||
{
|
||||
if (read(one) == 1)
|
||||
return one[0];
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int read(byte[] buf, int off, int len) throws IOException
|
||||
{
|
||||
if (eof)
|
||||
return -1;
|
||||
int count = 0;
|
||||
while (count < len)
|
||||
{
|
||||
int i;
|
||||
while (Character.isWhitespace((char) (i = in.read())));
|
||||
int pos = BASE_64.indexOf((char) i);
|
||||
if (pos >= 0)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
temp = pos << 2;
|
||||
state = 1;
|
||||
break;
|
||||
case 1:
|
||||
buf[count++] = (byte) (temp | (pos >>> 4));
|
||||
temp = (pos & 0x0F) << 4;
|
||||
state = 2;
|
||||
break;
|
||||
case 2:
|
||||
buf[count++] = (byte) (temp | (pos >>> 2));
|
||||
temp = (pos & 0x03) << 6;
|
||||
state = 3;
|
||||
break;
|
||||
case 3:
|
||||
buf[count++] = (byte) (temp | pos);
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (i == BASE_64_PAD)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
throw new IOException("malformed Base-64 input");
|
||||
case 2:
|
||||
while (Character.isWhitespace((char) (i = in.read())));
|
||||
if (i != BASE_64_PAD)
|
||||
throw new IOException("malformed Base-64 input");
|
||||
case 3:
|
||||
while (Character.isWhitespace((char) (i = in.read())));
|
||||
}
|
||||
eof = true;
|
||||
break;
|
||||
}
|
||||
else // First non-Base-64 character, consider it end-of-stream.
|
||||
{
|
||||
if (state != 0)
|
||||
throw new IOException("malformed Base-64 input");
|
||||
eof = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
public boolean markSupported()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void mark(int markLimit) { }
|
||||
|
||||
public void reset() throws IOException
|
||||
{
|
||||
throw new IOException("reset not supported");
|
||||
}
|
||||
|
||||
public long skip(long n) throws IOException
|
||||
{
|
||||
long skipped;
|
||||
for (skipped = 0; skipped < n; skipped++)
|
||||
if (read() == -1)
|
||||
break;
|
||||
return skipped;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/* gnu.java.io.ClassLoaderObjectInputStream
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.io;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.StreamCorruptedException;
|
||||
|
||||
/**
|
||||
* ClassLoaderObjectInputStream is ObjectInputStream, with
|
||||
* the ability to use a specific ClassLoader.
|
||||
*
|
||||
* @author Geoff Berry
|
||||
* @version 1.1.0, 29 Jul 1998
|
||||
*/
|
||||
|
||||
public class ClassLoaderObjectInputStream extends ObjectInputStream {
|
||||
ClassLoader myClassLoader;
|
||||
|
||||
/** Create the new ClassLoaderObjectInputStream.
|
||||
* @param in the InputStream to read the Objects from.
|
||||
* @param myClassLoader the ClassLoader to load classes
|
||||
* with.
|
||||
*/
|
||||
public ClassLoaderObjectInputStream(InputStream in, ClassLoader myClassLoader) throws IOException,StreamCorruptedException {
|
||||
super(in);
|
||||
this.myClassLoader = myClassLoader;
|
||||
}
|
||||
|
||||
/** Overriden method to use the loadClass() method from
|
||||
* the ClassLoader.
|
||||
*/
|
||||
public Class resolveClass(String name) throws IOException, ClassNotFoundException {
|
||||
return myClassLoader.loadClass(name);
|
||||
}
|
||||
}
|
56
libjava/classpath/gnu/java/io/NullOutputStream.java
Normal file
56
libjava/classpath/gnu/java/io/NullOutputStream.java
Normal file
|
@ -0,0 +1,56 @@
|
|||
/* NullOutputStream.java -- OutputStream that does absolutely nothing
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.io;
|
||||
|
||||
import java.io.OutputStream;
|
||||
|
||||
/**
|
||||
This is a placeholder OutputStream that does absolutley nothing
|
||||
when written to. It is intended to be used in the same manner as
|
||||
/dev/null. None of this class's methods do anything at all.
|
||||
*/
|
||||
public class NullOutputStream extends OutputStream
|
||||
{
|
||||
public NullOutputStream() {}
|
||||
public void write( int b ) {}
|
||||
public void write( byte b[] ) {}
|
||||
public void write( byte b[], int off, int len ) {}
|
||||
public void flush() {}
|
||||
public void close() {}
|
||||
}
|
100
libjava/classpath/gnu/java/io/ObjectIdentityWrapper.java
Normal file
100
libjava/classpath/gnu/java/io/ObjectIdentityWrapper.java
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* ObjectIdentityWrapper.java -- Wrapper class used to override equals()
|
||||
and hashCode() to be as discriminating as possible
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.io;
|
||||
|
||||
/**
|
||||
This class is a thin wrapper around <code>Object</code> that makes
|
||||
the methods <code>hashCode()</code> and <code>equals(Object)</code>
|
||||
as discriminating as possible.
|
||||
*/
|
||||
public class ObjectIdentityWrapper
|
||||
{
|
||||
|
||||
/**
|
||||
Constructs a <code>ObjectIdentityWrapper</code> that is wrapped
|
||||
around o.
|
||||
*/
|
||||
public ObjectIdentityWrapper( Object o )
|
||||
{
|
||||
object = o;
|
||||
}
|
||||
|
||||
/**
|
||||
Uses <code>System.identityHashCode(Object)</code> to compute a
|
||||
hash code for the object wrapped by this
|
||||
<code>ObjectIdentityWrapper</code>.
|
||||
|
||||
@see java.lang.System#identityHashCode(java.lang.Object)
|
||||
@see java.util.Hashtable
|
||||
@see java.lang.Object#hashCode()
|
||||
*/
|
||||
public int hashCode()
|
||||
{
|
||||
return System.identityHashCode( object );
|
||||
}
|
||||
|
||||
/**
|
||||
Uses the <code>==</code> operator to test for equality between
|
||||
the object wrapped by this <code>ObjectIdentityWrapper</code> and
|
||||
the object wrapped by the <code>ObjectIdentityWrapper</code> o.
|
||||
Returns false if o is not a <code>ObjectIdentityWrapper</code>.
|
||||
|
||||
@see java.util.Hashtable
|
||||
@see java.lang.Object#equals()
|
||||
*/
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if( o instanceof ObjectIdentityWrapper )
|
||||
return object == ((ObjectIdentityWrapper)o).object;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return "ObjectIdentityWrapper< " + object + ", " + hashCode() + " >";
|
||||
}
|
||||
|
||||
/**
|
||||
The <code>Object</code> wrapped by this
|
||||
<code>ObjectIdentityWrapper</code>.
|
||||
*/
|
||||
public Object object;
|
||||
}
|
228
libjava/classpath/gnu/java/io/PlatformHelper.java
Normal file
228
libjava/classpath/gnu/java/io/PlatformHelper.java
Normal file
|
@ -0,0 +1,228 @@
|
|||
/* PlatformHelper.java -- Isolate OS-specific IO helper methods and variables
|
||||
Copyright (C) 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
package gnu.java.io;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
/**
|
||||
* 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 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)
|
||||
{
|
||||
int len = path.length();
|
||||
return len > 0 && beginWithRootPathPrefix(path) == len;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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();
|
||||
|
||||
int i;
|
||||
|
||||
if ((i = beginWithRootPathPrefix(tmppath)) == 0 )
|
||||
return path;
|
||||
|
||||
/* The original
|
||||
"canonpath = new StringBuffer(tmppath.substring(0, i))"
|
||||
isn't very efficient because StringBuffer's
|
||||
ensureCapacity_unsynchronized will fail definitely each time
|
||||
and will enlarge buffer and copy contents. .
|
||||
*/
|
||||
canonpath = new StringBuffer(INITIAL_MAX_PATH);
|
||||
canonpath.append(tmppath.substring(0, i));
|
||||
tmppath = tmppath.substring(i);
|
||||
// pathdepth==0 indicates there're only root path in the buffer
|
||||
int pathdepth = 0;
|
||||
|
||||
StringTokenizer st = new StringTokenizer(tmppath, separator);
|
||||
|
||||
// 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;
|
||||
|
||||
// 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.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());
|
||||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
if (path.endsWith("\\") || path.endsWith("/"))
|
||||
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)
|
||||
{
|
||||
if (endWithSeparator(path) && !isRootDirectory(path))
|
||||
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)
|
||||
{
|
||||
return Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
|
||||
}
|
||||
|
||||
}
|
75
libjava/classpath/gnu/java/io/class-dependencies.conf
Normal file
75
libjava/classpath/gnu/java/io/class-dependencies.conf
Normal file
|
@ -0,0 +1,75 @@
|
|||
# This property file contains dependencies of classes, methods, and
|
||||
# field on other methods or classes.
|
||||
#
|
||||
# Syntax:
|
||||
#
|
||||
# <used>: <needed 1> [... <needed N>]
|
||||
#
|
||||
# means that when <used> is included, <needed 1> (... <needed N>) must
|
||||
# be included as well.
|
||||
#
|
||||
# <needed X> and <used> are of the form
|
||||
#
|
||||
# <class.methodOrField(signature)>
|
||||
#
|
||||
# or just
|
||||
#
|
||||
# <class>
|
||||
#
|
||||
# Within dependencies, variables can be used. A variable is defined as
|
||||
# follows:
|
||||
#
|
||||
# {variable}: value1 value2 ... value<n>
|
||||
#
|
||||
# variables can be used on the right side of dependencies as follows:
|
||||
#
|
||||
# <used>: com.bla.blu.{variable}.Class.m()V
|
||||
#
|
||||
# The use of the variable will expand to <n> dependencies of the form
|
||||
#
|
||||
# <used>: com.bla.blu.value1.Class.m()V
|
||||
# <used>: com.bla.blu.value2.Class.m()V
|
||||
# ...
|
||||
# <used>: com.bla.blu.value<n>.Class.m()V
|
||||
#
|
||||
# Variables can be redefined when building a system to select the
|
||||
# required support for features like encodings, protocols, etc.
|
||||
#
|
||||
# Hints:
|
||||
#
|
||||
# - For methods and fields, the signature is mandatory. For
|
||||
# specification, please see the Java Virtual Machine Specification by
|
||||
# SUN. Unlike in the spec, field signatures (types) are in brackets.
|
||||
#
|
||||
# - Package names must be separated by '/' (and not '.'). E.g.,
|
||||
# java/lang/Class (this is necessary, because the '.' is used to
|
||||
# separate method or field names from classes)
|
||||
#
|
||||
# - In case <needed> refers to a class, only the class itself will be
|
||||
# included in the resulting binary, NOT necessarily all its methods
|
||||
# and fields. If you want to refer to all methods and fields, you can
|
||||
# write class.* as an abbreviation.
|
||||
#
|
||||
# - Abbreviations for packages are also possible: my/package/* means all
|
||||
# methods and fields of all classes in my/package.
|
||||
#
|
||||
# - A line with a trailing '\' continues in the next line.
|
||||
|
||||
|
||||
# All encodings supported are loaded via gnu/java/io/EncodingManager.findEncoderConstructor
|
||||
# or gnu/java/io/EncodingManager.findDecoderConstructor from class
|
||||
# gnu/java/io/decode/Decoder<encoding>.
|
||||
#
|
||||
# This introduces a dependency for all encodings. To allow an easy selection
|
||||
# and addition of encodings, the library variable {encodings} can be set to
|
||||
# the set of supported encodings.
|
||||
#
|
||||
{encodings}: 8859_1 8859_2 8859_3 8859_4 8859_5 UTF8
|
||||
|
||||
gnu/java/io/EncodingManager.findEncoderConstructor(Ljava/lang/String;Z)Ljava/lang/reflect/Constructor;: \
|
||||
gnu/java/io/decode/Decoder{encodings}.*
|
||||
|
||||
gnu/java/io/EncodingManager.findDecoderConstructor(Ljava/lang/String;Z)Ljava/lang/reflect/Constructor;: \
|
||||
gnu/java/io/encode/Encoder{encodings}.* \
|
||||
|
||||
# end of file
|
46
libjava/classpath/gnu/java/io/package.html
Normal file
46
libjava/classpath/gnu/java/io/package.html
Normal file
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<!-- package.html - describes classes in gnu.java.io package.
|
||||
Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. -->
|
||||
|
||||
<html>
|
||||
<head><title>GNU Classpath - gnu.java.io</title></head>
|
||||
|
||||
<body>
|
||||
<p></p>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue