OSDN Git Service

libjava/ChangeLog:
[pf3gnuchains/gcc-fork.git] / libjava / classpath / native / jni / java-io / java_io_VMFile.c
index e79704f..a15cec7 100644 (file)
@@ -97,7 +97,7 @@ Java_java_io_VMFile_create (JNIEnv * env,
   if (result != CPNATIVE_OK)
     {
       if (result != EEXIST)
-       JCL_ThrowException (env,
+        JCL_ThrowException (env,
                            "java/io/IOException",
                            cpnative_getErrorString (result));
       JCL_free_cstring (env, name, filename);
@@ -124,12 +124,11 @@ Java_java_io_VMFile_create (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_canRead (JNIEnv * env,
-                            jobject obj __attribute__ ((__unused__)),
-                            jstring name)
+                             jclass clazz __attribute__ ((__unused__)),
+                             jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
-  int fd;
   int result;
 
   /* Don't use the JCL convert function because it throws an exception
@@ -137,20 +136,18 @@ Java_java_io_VMFile_canRead (JNIEnv * env,
   filename = (*env)->GetStringUTFChars (env, name, 0);
   if (filename == NULL)
     {
-      return 0;
+      return JNI_FALSE;
     }
 
-  /* The lazy man's way out.  We actually do open the file for reading
-     briefly to verify it can be done */
-  result = cpio_openFile (filename, &fd, CPFILE_FLAG_READ, 0);
+  result = cpio_checkAccess (filename, CPFILE_FLAG_READ);
+  
   (*env)->ReleaseStringUTFChars (env, name, filename);
   if (result != CPNATIVE_OK)
-    return 0;
-  cpio_closeFile (fd);
+    return JNI_FALSE;
 
-  return 1;
+  return JNI_TRUE;
 #else /* not WITHOUT_FILESYSTEM */
-  return 0;
+  return JNI_FALSE;
 #endif /* not WITHOUT_FILESYSTEM */
 }
 
@@ -166,12 +163,11 @@ Java_java_io_VMFile_canRead (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_canWrite (JNIEnv * env,
-                             jobject obj __attribute__ ((__unused__)),
-                             jstring name)
+                              jclass clazz __attribute__ ((__unused__)),
+                              jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
-  int fd;
   int result;
 
   /* Don't use the JCL convert function because it throws an exception
@@ -179,27 +175,34 @@ Java_java_io_VMFile_canWrite (JNIEnv * env,
   filename = (*env)->GetStringUTFChars (env, name, 0);
   if (filename == NULL)
     {
-      return 0;
+      return JNI_FALSE;
     }
 
-  /* The lazy man's way out.  We actually do open the file for writing
-     briefly to verify it can be done */
-  result = cpio_openFile (filename, &fd, CPFILE_FLAG_READWRITE, 0);
+  result = cpio_checkAccess (filename, CPFILE_FLAG_WRITE);
+  
   (*env)->ReleaseStringUTFChars (env, name, filename);
   if (result != CPNATIVE_OK)
     {
-      return 0;
+      return JNI_FALSE;
     }
-  cpio_closeFile (fd);
 
-  return 1;
+  return JNI_TRUE;
 #else /* not WITHOUT_FILESYSTEM */
-  return 0;
+  return JNI_FALSE;
 #endif /* not WITHOUT_FILESYSTEM */
 }
 
 /*************************************************************************/
 
+JNIEXPORT jboolean JNICALL
+Java_java_io_VMFile_canWriteDirectory (JNIEnv *env, jclass clazz, jstring path)
+{
+  /* this is only valid on *nix systems  */
+  return Java_java_io_VMFile_canWrite(env, clazz, path);
+}
+
+/*************************************************************************/
+
 /*
  * This method checks to see if we have execute permission on a file.
  *
@@ -250,8 +253,8 @@ Java_java_io_VMFile_canExecute (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_setReadOnly (JNIEnv * env,
-                                jobject obj __attribute__ ((__unused__)),
-                                jstring name)
+                                 jclass clazz __attribute__ ((__unused__)),
+                                 jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -326,10 +329,10 @@ Java_java_io_VMFile_setWritable (JNIEnv *env,
  */
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_setExecutable (JNIEnv *env,
-                                 jclass clazz __attribute__ ((__unused__)),
-                                 jstring name,
-                                 jboolean executable,
-                                 jboolean ownerOnly)
+                                   jclass clazz __attribute__ ((__unused__)),
+                                   jstring name,
+                                   jboolean executable,
+                                   jboolean ownerOnly)
 {
   return set_file_permissions (env, name, executable, ownerOnly,
                                CPFILE_FLAG_EXEC);
@@ -434,8 +437,8 @@ Java_java_io_VMFile_getUsableSpace (JNIEnv *env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_exists (JNIEnv * env,
-                           jobject obj __attribute__ ((__unused__)),
-                           jstring name)
+                            jclass clazz __attribute__ ((__unused__)),
+                                       jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -471,8 +474,8 @@ Java_java_io_VMFile_exists (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_isFile (JNIEnv * env,
-                           jobject obj __attribute__ ((__unused__)),
-                           jstring name)
+                            jclass clazz __attribute__ ((__unused__)),
+                            jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -508,8 +511,8 @@ Java_java_io_VMFile_isFile (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_isDirectory (JNIEnv * env,
-                                jobject obj __attribute__ ((__unused__)),
-                                jstring name)
+                                 jclass clazz __attribute__ ((__unused__)),
+                                 jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -545,8 +548,8 @@ Java_java_io_VMFile_isDirectory (JNIEnv * env,
 
 JNIEXPORT jlong JNICALL
 Java_java_io_VMFile_length (JNIEnv * env,
-                           jobject obj __attribute__ ((__unused__)),
-                           jstring name)
+                            jclass clazz __attribute__ ((__unused__)),
+                            jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -593,8 +596,8 @@ Java_java_io_VMFile_length (JNIEnv * env,
 
 JNIEXPORT jlong JNICALL
 Java_java_io_VMFile_lastModified (JNIEnv * env,
-                                 jobject obj __attribute__ ((__unused__)),
-                                 jstring name)
+                                  jclass clazz __attribute__ ((__unused__)),
+                                  jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -630,8 +633,8 @@ Java_java_io_VMFile_lastModified (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_setLastModified (JNIEnv * env,
-                                    jobject obj __attribute__ ((__unused__)),
-                                    jstring name, jlong newtime)
+                                     jclass clazz __attribute__ ((__unused__)),
+                                     jstring name, jlong newtime)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -667,8 +670,8 @@ Java_java_io_VMFile_setLastModified (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_delete (JNIEnv * env,
-                           jobject obj __attribute__ ((__unused__)),
-                           jstring name)
+                            jclass clazz __attribute__ ((__unused__)),
+                            jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *filename;
@@ -703,8 +706,8 @@ Java_java_io_VMFile_delete (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_mkdir (JNIEnv * env,
-                          jobject obj __attribute__ ((__unused__)),
-                          jstring name)
+                           jclass clazz __attribute__ ((__unused__)),
+                           jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *pathname;
@@ -739,8 +742,8 @@ Java_java_io_VMFile_mkdir (JNIEnv * env,
 
 JNIEXPORT jboolean JNICALL
 Java_java_io_VMFile_renameTo (JNIEnv * env,
-                             jobject obj __attribute__ ((__unused__)),
-                             jstring t, jstring d)
+                              jclass clazz __attribute__ ((__unused__)),
+                              jstring t, jstring d)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *old_filename, *new_filename;
@@ -783,8 +786,9 @@ Java_java_io_VMFile_renameTo (JNIEnv * env,
  */
 
 JNIEXPORT jobjectArray JNICALL
-Java_java_io_VMFile_list (JNIEnv * env, jobject obj
-                         __attribute__ ((__unused__)), jstring name)
+Java_java_io_VMFile_list (JNIEnv * env,
+                          jclass clazz __attribute__ ((__unused__)),
+                          jstring name)
 {
 #ifndef WITHOUT_FILESYSTEM
   const int REALLOC_SIZE = 10;
@@ -991,8 +995,8 @@ maybeGrowBuf (JNIEnv *env, char *buf, int *size, int required)
 
 JNIEXPORT jstring JNICALL
 Java_java_io_VMFile_toCanonicalForm (JNIEnv *env,
-                                    jclass class __attribute__ ((__unused__)),
-                                    jstring jpath)
+                                                    jclass class __attribute__ ((__unused__)),
+                                                    jstring jpath)
 {
 #ifndef WITHOUT_FILESYSTEM
   const char *path;