diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-16 00:30:23 +0000 | 
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-16 00:30:23 +0000 | 
| commit | c8875fb97fc03779a5bba09872227b1d08e5d52a (patch) | |
| tree | a0b991cf5866ae1d616639b906ac001811d74508 /libjava/classpath/gnu/java/io | |
| parent | c40c1730800ed292b6db39a83d592476fa59623c (diff) | |
| download | ppe42-gcc-c8875fb97fc03779a5bba09872227b1d08e5d52a.tar.gz ppe42-gcc-c8875fb97fc03779a5bba09872227b1d08e5d52a.zip  | |
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102074 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/gnu/java/io')
| -rw-r--r-- | libjava/classpath/gnu/java/io/ASN1ParsingException.java | 56 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/Base64InputStream.java | 216 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/ClassLoaderObjectInputStream.java | 73 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/NullOutputStream.java | 56 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/ObjectIdentityWrapper.java | 100 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/PlatformHelper.java | 228 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/class-dependencies.conf | 75 | ||||
| -rw-r--r-- | libjava/classpath/gnu/java/io/package.html | 46 | 
8 files changed, 850 insertions, 0 deletions
diff --git a/libjava/classpath/gnu/java/io/ASN1ParsingException.java b/libjava/classpath/gnu/java/io/ASN1ParsingException.java new file mode 100644 index 00000000000..5d2c64ab54f --- /dev/null +++ b/libjava/classpath/gnu/java/io/ASN1ParsingException.java @@ -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); +	} +} diff --git a/libjava/classpath/gnu/java/io/Base64InputStream.java b/libjava/classpath/gnu/java/io/Base64InputStream.java new file mode 100644 index 00000000000..b0824ab6935 --- /dev/null +++ b/libjava/classpath/gnu/java/io/Base64InputStream.java @@ -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; +  } +} diff --git a/libjava/classpath/gnu/java/io/ClassLoaderObjectInputStream.java b/libjava/classpath/gnu/java/io/ClassLoaderObjectInputStream.java new file mode 100644 index 00000000000..238ab26b1b9 --- /dev/null +++ b/libjava/classpath/gnu/java/io/ClassLoaderObjectInputStream.java @@ -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); +	} +} diff --git a/libjava/classpath/gnu/java/io/NullOutputStream.java b/libjava/classpath/gnu/java/io/NullOutputStream.java new file mode 100644 index 00000000000..526bd26e830 --- /dev/null +++ b/libjava/classpath/gnu/java/io/NullOutputStream.java @@ -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() {} +} diff --git a/libjava/classpath/gnu/java/io/ObjectIdentityWrapper.java b/libjava/classpath/gnu/java/io/ObjectIdentityWrapper.java new file mode 100644 index 00000000000..6db2e3a52a6 --- /dev/null +++ b/libjava/classpath/gnu/java/io/ObjectIdentityWrapper.java @@ -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; +} diff --git a/libjava/classpath/gnu/java/io/PlatformHelper.java b/libjava/classpath/gnu/java/io/PlatformHelper.java new file mode 100644 index 00000000000..d2c60123192 --- /dev/null +++ b/libjava/classpath/gnu/java/io/PlatformHelper.java @@ -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("\\")); +  } + +} diff --git a/libjava/classpath/gnu/java/io/class-dependencies.conf b/libjava/classpath/gnu/java/io/class-dependencies.conf new file mode 100644 index 00000000000..2500f6b14b5 --- /dev/null +++ b/libjava/classpath/gnu/java/io/class-dependencies.conf @@ -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 diff --git a/libjava/classpath/gnu/java/io/package.html b/libjava/classpath/gnu/java/io/package.html new file mode 100644 index 00000000000..74da8277f4c --- /dev/null +++ b/libjava/classpath/gnu/java/io/package.html @@ -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>  | 

