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);
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
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 */
}
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
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.
*
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;
*/
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);
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;
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;
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;
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;
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;
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;
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;
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;
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;
*/
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;
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;