aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/File.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/io/File.java')
-rw-r--r--libjava/java/io/File.java360
1 files changed, 0 insertions, 360 deletions
diff --git a/libjava/java/io/File.java b/libjava/java/io/File.java
deleted file mode 100644
index c8aaddfac2a..00000000000
--- a/libjava/java/io/File.java
+++ /dev/null
@@ -1,360 +0,0 @@
-// File.java - File name
-
-/* Copyright (C) 1998, 1999, 2000 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;
-
-/**
- * @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.1; 1.2 functionality missing.
- * A known bug: most calls to the security manager can generate
- * IOException since we use the canonical path.
- */
-
-public class File implements Serializable
-{
- public boolean canRead ()
- {
- return access (checkRead (), READ);
- }
-
- public boolean canWrite ()
- {
- SecurityManager s = System.getSecurityManager();
- String p = safeCanonicalPath ();
- // FIXME: it isn't entirely clear what to do if we can't find the
- // canonical path.
- if (p == null)
- return false;
- if (s != null)
- s.checkWrite(p);
- return access (p, WRITE);
- }
-
- private final native boolean performDelete (String canon);
- public boolean delete ()
- {
- SecurityManager s = System.getSecurityManager();
- String p = safeCanonicalPath ();
- // FIXME: what is right?
- if (p == null)
- return false;
- if (s != null)
- s.checkDelete(p);
- return performDelete (p);
- }
-
- public boolean equals (Object obj)
- {
- if (! (obj instanceof File))
- return false;
- File other = (File) obj;
- return path.compareTo(other.path) == 0;
- }
-
- public boolean exists ()
- {
- return access (checkRead (), EXISTS);
- }
-
- public File (String p)
- {
- if (p == null)
- throw new NullPointerException ();
- path = p;
- }
-
- 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)
- path = dirPath + name;
- else
- path = dirPath + separatorChar + name;
- }
- else
- path = name;
- }
-
- public File (File dir, String name)
- {
- this (dir == null ? null : dir.path, name);
- }
-
- public String getAbsolutePath ()
- {
- if (isAbsolute ())
- return path;
- return System.getProperty("user.dir") + separatorChar + path;
- }
-
- public native String getCanonicalPath () throws IOException;
-
- 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;
- return path.substring(0, last);
- }
-
- public String getPath ()
- {
- return path;
- }
-
- public int hashCode ()
- {
- // FIXME: test.
- return path.hashCode();
- }
-
- public native boolean isAbsolute ();
-
- public boolean isDirectory ()
- {
- return stat (checkRead (), DIRECTORY);
- }
-
- public boolean isFile ()
- {
- return stat (checkRead (), ISFILE);
- }
-
- public long lastModified ()
- {
- return attr (checkRead (), MODIFIED);
- }
-
- public long length ()
- {
- return attr (checkRead (), LENGTH);
- }
-
- private final native String[] performList (String canon,
- FilenameFilter filter);
- public String[] list (FilenameFilter filter)
- {
- return performList (checkRead (), filter);
- }
-
- public String[] list ()
- {
- return performList (checkRead (), null);
- }
-
- public String toString ()
- {
- return path;
- }
-
- private final native boolean performMkdir ();
- public boolean mkdir ()
- {
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- {
- // NOTE: in theory we should use the canonical path. In
- // practice, we can't compute the canonical path until we've
- // made this completely. Lame.
- s.checkWrite(path);
- }
- 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.setPath(parent);
- if (! mkdirs (x))
- return false;
- x.setPath(p);
- }
- return x.mkdir();
- }
-
- public boolean mkdirs ()
- {
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- {
- // NOTE: in theory we should use the canonical path. In
- // practice, we can't compute the canonical path until we've
- // made this completely. Lame.
- s.checkWrite(path);
- }
-
- if (isDirectory ())
- return false;
- return mkdirs (new File (path));
- }
-
- private static synchronized String nextValue ()
- {
- return Long.toString(counter++, Character.MAX_RADIX);
- }
-
- public static File createTempFile (String prefix, String suffix,
- File directory)
- throws IOException
- {
- FileDescriptor desc = new FileDescriptor ();
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkWrite (desc);
-
- if (prefix.length () < 3)
- throw new IllegalArgumentException ();
- if (suffix == null)
- suffix = ".tmp";
-
- // FIXME: filename length varies by architecture and filesystem.
- int max_length = 255;
-
- // Truncation rules.
- // `6' is the number of characters we generate.
- if (prefix.length () + 6 + suffix.length () > max_length)
- {
- int suf_len = 0;
- if (suffix.charAt(0) == '.')
- suf_len = 4;
- suffix = suffix.substring(0, suf_len);
- if (prefix.length () + 6 + suf_len > max_length)
- prefix = prefix.substring(0, max_length - 6 - suf_len);
- }
-
- // We don't care about the name because we set it later.
- File ret = new File ("");
- // 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
- {
- desc = new FileDescriptor
- (l, FileDescriptor.WRITE | FileDescriptor.EXCL);
- desc.close ();
- ret.setPath(l);
- return ret;
- }
- catch (IOException _)
- {
- }
- }
-
- throw new IOException ("couldn't make temp file");
- }
-
- public static File createTempFile (String prefix, String suffix)
- throws IOException
- {
- return createTempFile (prefix, suffix, null);
- }
-
- private final native boolean performRenameTo (File dest);
- public boolean renameTo (File dest)
- {
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- {
- // FIXME: JCL doesn't specify which path to check. We check the
- // source since we can canonicalize it.
- s.checkWrite(safeCanonicalPath());
- }
- return performRenameTo (dest);
- }
-
- 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);
-
- private static final String tmpdir = System.getProperty("java.io.tmpdir");
-
- // 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 ());
-
- // mkdirs() uses this to avoid repeated allocations.
- private final void setPath (String n)
- {
- path = n;
- }
-
-
- private final String checkRead ()
- {
- SecurityManager s = System.getSecurityManager();
- String p = safeCanonicalPath ();
- if (p == null)
- return null;
- if (s != null)
- s.checkRead(p);
- return p;
- }
-
- // Return canonical path, or null.
- private final String safeCanonicalPath ()
- {
- String p = null;
- try
- {
- p = getCanonicalPath ();
- }
- catch (IOException x)
- {
- // Nothing.
- }
- return p;
- }
-
- // 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;
-
- // QUERY arguments to attr function.
- private final static int MODIFIED = 0;
- private final static int LENGTH = 1;
-
- private final native long attr (String p, int query);
- private final native boolean access (String p, int query);
- private final native boolean stat (String p, int query);
-}