aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorAnthony Green <green@gcc.gnu.org>2000-09-04 16:55:48 +0000
committerAnthony Green <green@gcc.gnu.org>2000-09-04 16:55:48 +0000
commit890a31f478d6c419093c54b53111809540f4b9c4 (patch)
tree0e11c3202467de16f9293623c00841fbe6ad2149 /libjava/java
parent4993ddc14f3be5f5a4c858b16f237602262ba360 (diff)
downloadgcc-890a31f478d6c419093c54b53111809540f4b9c4.zip
gcc-890a31f478d6c419093c54b53111809540f4b9c4.tar.gz
gcc-890a31f478d6c419093c54b53111809540f4b9c4.tar.bz2
File.java (deleteOnExit): New method.
* java/io/File.java (deleteOnExit): New method. * gnu/gcj/runtime/FileDeleter.java: New class. * java/lang/natRuntime.cc (exit): Call FileDeleter.deleteOnExitNow() * Makefile.am: Add FileDeleter.java. * Makefile.in: Rebuilt. From-SVN: r36141
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/io/File.java16
-rw-r--r--libjava/java/lang/natRuntime.cc4
2 files changed, 19 insertions, 1 deletions
diff --git a/libjava/java/io/File.java b/libjava/java/io/File.java
index b9ff9ff..9043660 100644
--- a/libjava/java/io/File.java
+++ b/libjava/java/io/File.java
@@ -10,6 +10,9 @@ details. */
package java.io;
+import java.util.*;
+import gnu.gcj.runtime.FileDeleter;
+
/**
* @author Tom Tromey <tromey@cygnus.com>
* @date September 24, 1998
@@ -42,7 +45,7 @@ public class File implements Serializable
return access (p, WRITE);
}
- private final native boolean performDelete (String canon);
+ private final native static boolean performDelete (String canon);
public boolean delete ()
{
SecurityManager s = System.getSecurityManager();
@@ -347,6 +350,17 @@ public class File implements Serializable
return p;
}
+ // Add this File to the set of files to be deleted upon normal
+ // termination.
+ public void deleteOnExit ()
+ {
+ SecurityManager sm = System.getSecurityManager ();
+ if (sm != null)
+ sm.checkDelete (getName ());
+
+ FileDeleter.add (this);
+ }
+
// QUERY arguments to access function.
private final static int READ = 0;
private final static int WRITE = 1;
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc
index ad45066..9377165 100644
--- a/libjava/java/lang/natRuntime.cc
+++ b/libjava/java/lang/natRuntime.cc
@@ -17,6 +17,7 @@ details. */
#include <java/lang/Runtime.h>
#include <java/lang/UnknownError.h>
#include <java/lang/UnsatisfiedLinkError.h>
+#include <gnu/gcj/runtime/FileDeleter.h>
#include <jni.h>
@@ -85,6 +86,9 @@ java::lang::Runtime::exit (jint status)
if (finalize_on_exit)
_Jv_RunAllFinalizers ();
+ // Delete all files registered with File.deleteOnExit()
+ gnu::gcj::runtime::FileDeleter::deleteOnExitNow ();
+
::exit (status);
}