]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libjava/java/io/File.java
Imported gcc-4.4.3
[msp430-gcc.git] / libjava / java / io / File.java
diff --git a/libjava/java/io/File.java b/libjava/java/io/File.java
deleted file mode 100644 (file)
index 2086f10..0000000
+++ /dev/null
@@ -1,585 +0,0 @@
-// File.java - File name
-
-/* Copyright (C) 1998, 1999, 2000, 2001  Free Software Foundation
-
-   This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-details.  */
-
-package java.io;
-
-import java.util.*;
-import java.net.*;
-import gnu.gcj.runtime.FileDeleter;
-
-/**
- * @author Tom Tromey <tromey@cygnus.com>
- * @date September 24, 1998 
- */
-
-/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
- * "The Java Language Specification", ISBN 0-201-63451-1
- * Status:  Complete to version 1.3.
- */
-
-public class File implements Serializable, Comparable
-{
-  public boolean canRead ()
-  {
-    checkRead();
-    return _access (READ);
-  }
-
-  public boolean canWrite ()
-  {
-    checkWrite();
-    return _access (WRITE);
-  }
-  
-  private native boolean performCreate() throws IOException;
-
-  /** @since 1.2 */
-  public boolean createNewFile() throws IOException
-  {
-    checkWrite();
-    return performCreate();
-  }
-  
-  private native boolean performDelete ();
-  public boolean delete ()
-  {
-    SecurityManager s = System.getSecurityManager();
-    String name = path;
-    if (s != null)
-      s.checkDelete(path);
-    return performDelete ();
-  }
-
-  public boolean equals (Object obj)
-  {
-    if (! (obj instanceof File))
-      return false;
-    File other = (File) obj;
-    if (caseSensitive)
-      return (path.equals(other.path));
-    else
-      return (path.equalsIgnoreCase(other.path));      
-  }
-
-  public boolean exists ()
-  {
-    checkRead();
-    return _access (EXISTS);
-  }
-
-  public File (String p)
-  {
-    path = normalizePath(p);
-  }
-
-  // Remove duplicate and redundant separator characters.
-  private String normalizePath(String p)
-  {
-    // On Windows, convert any '/' to '\'.  This appears to be the same logic
-    // that Sun's Win32 Java performs.
-    if (separatorChar == '\\')
-      p = p.replace ('/', '\\');
-
-    int dupIndex = p.indexOf(dupSeparator);
-    int plen = p.length();
-
-    // Special case: permit Windows UNC path prefix.
-    if (dupSeparator.equals("\\\\") && dupIndex == 0)
-      dupIndex = p.indexOf(dupSeparator, 1);
-
-    if (dupIndex == -1)
-      {
-        // Ignore trailing separator.
-        if (plen > 1 && p.charAt(plen - 1) == separatorChar)
-         return p.substring(0, plen - 1);
-       else
-         return p;
-      }
-    
-    StringBuffer newpath = new StringBuffer(plen);
-    int last = 0;
-    while (dupIndex != -1)
-      {
-        newpath.append(p.substring(last, dupIndex));
-       // Ignore the duplicate path characters.
-       while (p.charAt(dupIndex) == separatorChar)
-         {
-           dupIndex++;
-           if (dupIndex == plen)
-             return newpath.toString();
-         }
-       newpath.append(separatorChar);
-       last = dupIndex;
-       dupIndex = p.indexOf(dupSeparator, last);
-      }
-    
-    // Again, ignore possible trailing separator.
-    int end;
-    if (plen > 1 && p.charAt(plen - 1) == separatorChar)
-      end = plen - 1;
-    else
-      end = plen;
-    newpath.append(p.substring(last, end));
-    
-    return newpath.toString();
-  }
-  
-  public File (String dirPath, String name)
-  {
-    if (name == null)
-      throw new NullPointerException ();
-    if (dirPath != null && 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(name);
-  }
-
-  public File (File dir, String name)
-  {
-    this (dir == null ? null : dir.path, name);
-  }
-
-  // FIXME  ???
-  public String getAbsolutePath ()
-  {
-    if (isAbsolute ())
-      return path;
-    return System.getProperty("user.dir") + separatorChar + path;
-  }
-
-  /** @since 1.2 */
-  public File getAbsoluteFile ()
-  {
-    return new File (getAbsolutePath());
-  }
-
-  public native String getCanonicalPath () throws IOException;
-
-  /** @since 1.2 */
-  public File getCanonicalFile () throws IOException
-  {
-    return new File (getCanonicalPath());
-  }
-
-  public String getName ()
-  {
-    int last = path.lastIndexOf(separatorChar);
-    return path.substring(last + 1);
-  }
-
-  public String getParent ()
-  {
-    int last = path.lastIndexOf(separatorChar);
-    if (last == -1)
-      return null;
-    // FIXME: POSIX assumption.
-    if (last == 0 && path.charAt (0) == '/')
-      ++last;
-    return path.substring(0, last);
-  }
-
-  /** @since 1.2 */
-  public File getParentFile ()
-  {
-    String parent = getParent ();
-    return (parent == null ? null : new File (parent));
-  }
-
-  public String getPath ()
-  {
-    return path;
-  }
-
-  public int hashCode ()
-  {
-    if (caseSensitive)
-      return (path.hashCode() ^ 1234321);
-    else
-      return (path.toLowerCase().hashCode() ^ 1234321);
-  }
-
-  public native boolean isAbsolute ();
-
-  public boolean isDirectory ()
-  {
-    checkRead();
-    return _stat (DIRECTORY);
-  }
-
-  public boolean isFile ()
-  {
-    checkRead();
-    return _stat (ISFILE);
-  }
-
-  /** @since 1.2 */
-  public boolean isHidden()
-  {
-    checkRead();
-    return _stat (ISHIDDEN);
-  }
-
-  public long lastModified ()
-  {
-    checkRead();
-    return attr (MODIFIED);
-  }
-
-  public long length ()
-  {
-    checkRead();
-    return attr (LENGTH);
-  }
-    
-  private final native Object[] performList (FilenameFilter filter,
-                                            FileFilter fileFilter,
-                                            Class result_type);
-
-  public String[] list (FilenameFilter filter)
-  {
-    checkRead();
-    return (String[]) performList (filter, null, String.class);
-  }
-
-  public String[] list ()
-  {
-    checkRead();
-    return (String[]) performList (null, null, String.class);
-  }
-
-  /** @since 1.2 */
-  public File[] listFiles()
-  {
-    checkRead();
-    return (File[]) performList (null, null, File.class);
-  }
-  
-  /** @since 1.2 */
-  public File[] listFiles(FilenameFilter filter)
-  {
-    checkRead();
-    return (File[]) performList (filter, null, File.class);
-  }
-  
-  /** @since 1.2 */
-  public File[] listFiles(FileFilter filter)
-  {
-    checkRead();
-    return (File[]) performList (null, filter, File.class);
-  }
-
-  public String toString ()
-  {
-    return path;
-  }
-
-  public URL toURL () throws MalformedURLException
-  {
-    return new URL ("file://" + getAbsolutePath ()
-                   + (isDirectory() ? "/" : ""));
-  }
-
-  private final native boolean performMkdir ();
-
-  public boolean mkdir ()
-  {
-    checkWrite();
-    return performMkdir ();
-  }
-
-  private static boolean mkdirs (File x)
-  {
-    if (x.isDirectory())
-      return true;
-    String p = x.getPath();
-    String parent = x.getParent();
-    if (parent != null)
-      {
-       x.path = parent;
-       if (! mkdirs (x))
-         return false;
-       x.path = p;
-      }
-    return x.mkdir();
-  }
-
-  public boolean mkdirs ()
-  {
-    checkWrite();
-    if (isDirectory ())
-      return false;
-    return mkdirs (new File (path));
-  }
-
-  private static synchronized String nextValue ()
-  {
-    return Long.toString(counter++, Character.MAX_RADIX);
-  }
-
-  /** @since 1.2 */
-  public static File createTempFile (String prefix, String suffix,
-                                    File directory)
-    throws IOException
-  {
-    // Grab the system temp directory if necessary
-    if (directory == null)
-      {
-       String dirname = tmpdir;
-       if (dirname == null)
-         throw 
-           new IOException("Cannot determine system temporary directory"); 
-       
-       directory = new File(dirname);
-       if (!directory.exists())
-         throw new IOException("System temporary directory " 
-                               + directory.getName() + " does not exist.");
-       if (!directory.isDirectory())
-         throw new IOException("System temporary directory " 
-                               + directory.getName() 
-                               + " is not really a directory.");
-      }
-
-    if (prefix.length () < 3)
-      throw new IllegalArgumentException ("Prefix too short: " + prefix);
-    if (suffix == null)
-      suffix = ".tmp";
-
-    // Truncation rules.
-    // `6' is the number of characters we generate.
-    if (prefix.length () + 6 + suffix.length () > maxPathLen)
-      {
-       int suf_len = 0;
-       if (suffix.charAt(0) == '.')
-         suf_len = 4;
-       suffix = suffix.substring(0, suf_len);
-       if (prefix.length () + 6 + suf_len > maxPathLen)
-         prefix = prefix.substring(0, maxPathLen - 6 - suf_len);
-      }
-
-    File f;
-
-    // How many times should we try?  We choose 100.
-    for (int i = 0; i < 100; ++i)
-      {
-       // This is ugly.
-       String t = "ZZZZZZ" + nextValue ();
-       String l = prefix + t.substring(t.length() - 6) + suffix;
-       try
-         {
-           f = new File(directory, l);
-           if (f.createNewFile())
-             return f;
-         }
-       catch (IOException ignored)
-         {
-         }
-      }
-
-    throw new IOException ("cannot create temporary file");
-  }
-
-  private native boolean performSetReadOnly();
-
-  /** @since 1.2 */
-  public boolean setReadOnly()
-  {
-    checkWrite();
-    return performSetReadOnly();
-  }
-
-  private static native File[] performListRoots();
-
-  /** @since 1.2 */
-  public static File[] listRoots()
-  {
-    File[] roots = performListRoots();
-    
-    SecurityManager s = System.getSecurityManager();
-    if (s != null)
-      {
-       // Only return roots to which the security manager permits read access.
-       int count = roots.length;
-       for (int i = 0; i < roots.length; i++)
-         {
-           try
-             {
-               s.checkRead(roots[i].path);             
-             }
-           catch (SecurityException sx)
-             {
-               roots[i] = null;
-               count--;
-             }
-         }
-       if (count != roots.length)
-         {
-           File[] newRoots = new File[count];
-           int k = 0;
-           for (int i=0; i < roots.length; i++)
-             {
-               if (roots[i] != null)
-                 newRoots[k++] = roots[i];
-             }
-           roots = newRoots;
-         }
-      }
-    return roots;
-  }
-
-  public static File createTempFile (String prefix, String suffix)
-    throws IOException
-  {
-    return createTempFile (prefix, suffix, null);
-  }
-
-  /** @since 1.2 */
-  public int compareTo(File other)
-  {
-    if (caseSensitive)
-      return path.compareTo (other.path);
-    else
-      return path.compareToIgnoreCase (other.path);
-  }
-
-  /** @since 1.2 */
-  public int compareTo(Object o)
-  {
-    File other = (File) o;
-    return compareTo (other);
-  }
-
-  private native boolean performRenameTo (File dest);
-  public boolean renameTo (File dest)
-  {
-    SecurityManager s = System.getSecurityManager();
-    String sname = getName();
-    String dname = dest.getName();
-    if (s != null)
-      {
-       s.checkWrite(sname);
-       s.checkWrite(dname);
-      }
-    return performRenameTo (dest);
-  }
-
-  private native boolean performSetLastModified(long time);
-  
-  /** @since 1.2 */
-  public boolean setLastModified(long time)
-  {
-    checkWrite();
-    return performSetLastModified(time);
-  }
-
-  public static final String pathSeparator
-    = System.getProperty("path.separator");
-  public static final char pathSeparatorChar = pathSeparator.charAt(0);
-  public static final String separator = System.getProperty("file.separator");
-  public static final char separatorChar = separator.charAt(0);
-
-  static final String tmpdir = System.getProperty("java.io.tmpdir");
-  static int maxPathLen;
-  static boolean caseSensitive;
-  static String dupSeparator = separator + separator;
-  
-  static
-  {
-    init_native();
-  }
-  
-  // Native function called at class initialization. This should should
-  // set the maxPathLen and caseSensitive variables.
-  private static native void init_native();
-
-  // The path.
-  private String path;
-
-  // We keep a counter for use by createTempFile.  We choose the first
-  // value randomly to try to avoid clashes with other VMs.
-  private static long counter = Double.doubleToLongBits (Math.random ());
-
-  private void checkWrite ()
-  {
-    SecurityManager s = System.getSecurityManager();
-    if (s != null)
-      s.checkWrite(path);
-  }
-
-  private void checkRead ()
-  {
-    SecurityManager s = System.getSecurityManager();
-    if (s != null)
-      s.checkRead(path);
-  }
-
-  /** 
-    * Add this File to the set of files to be deleted upon normal
-    * termination.
-    *
-    * @since 1.2 
-    */
-  // FIXME: This should use the ShutdownHook API once we implement that.
-  public void deleteOnExit ()
-  {
-    SecurityManager sm = System.getSecurityManager ();
-    if (sm != null)
-      sm.checkDelete (getName ());
-
-    FileDeleter.add (this);
-  }
-
-  private void writeObject (ObjectOutputStream oos) throws IOException
-  {
-    oos.defaultWriteObject ();
-    oos.writeChar (separatorChar);
-  }
-
-  private void readObject (ObjectInputStream ois)
-    throws ClassNotFoundException, IOException
-  {
-    ois.defaultReadObject ();
-
-    // If the file was from an OS with a different dir separator,
-    // fixup the path to use the separator on this OS.
-    char oldSeparatorChar = ois.readChar ();
-    if (oldSeparatorChar != separatorChar)
-      path = path.replace (oldSeparatorChar, separatorChar);
-  }
-
-  // QUERY arguments to access function.
-  private final static int READ = 0;
-  private final static int WRITE = 1;
-  private final static int EXISTS = 2;
-
-  // QUERY arguments to stat function.
-  private final static int DIRECTORY = 0;
-  private final static int ISFILE = 1;
-  private final static int ISHIDDEN = 2;
-
-  // QUERY arguments to attr function.
-  private final static int MODIFIED = 0;
-  private final static int LENGTH = 1;
-  
-  private final native long attr (int query);
-  // On OSF1 V5.0, `stat' is a macro.  It is easiest to use the name
-  // `_stat' instead.  We do the same thing for `_access' just in
-  // case.
-  private final native boolean _access (int query);
-  private final native boolean _stat (int query);
-
-  private static final long serialVersionUID = 301077366599181567L;
-}