Generated code for 'find' command.

This commit is contained in:
Richard Jones
2009-05-19 12:05:43 +01:00
parent d1df2f3424
commit 1fc41b39da
22 changed files with 891 additions and 2 deletions

View File

@@ -2951,4 +2951,45 @@ public class GuestFS {
private native void _resize2fs (long g, String device)
throws LibGuestFSException;
/**
* find all files and directories
*
* This command lists out all files and directories,
* recursively, starting at "directory". It is essentially
* equivalent to running the shell command "find directory
* -print" but some post-processing happens on the output,
* described below.
*
* This returns a list of strings *without any prefix*.
* Thus if the directory structure was:
*
* /tmp/a
* /tmp/b
* /tmp/c/d
*
* then the returned list from "g.find" "/tmp" would be 4
* elements:
*
* a
* b
* c
* c/d
*
* If "directory" is not a directory, then this command
* returns an error.
*
* The returned list is sorted.
*
* @throws LibGuestFSException
*/
public String[] find (String directory)
throws LibGuestFSException
{
if (g == 0)
throw new LibGuestFSException ("find: handle is closed");
return _find (g, directory);
}
private native String[] _find (long g, String directory)
throws LibGuestFSException;
}

View File

@@ -2930,3 +2930,36 @@ Java_com_redhat_et_libguestfs_GuestFS__1resize2fs
}
}
JNIEXPORT jobjectArray JNICALL
Java_com_redhat_et_libguestfs_GuestFS__1find
(JNIEnv *env, jobject obj, jlong jg, jstring jdirectory)
{
guestfs_h *g = (guestfs_h *) (long) jg;
jobjectArray jr;
int r_len;
jclass cl;
jstring jstr;
char **r;
const char *directory;
int i;
directory = (*env)->GetStringUTFChars (env, jdirectory, NULL);
r = guestfs_find (g, directory);
(*env)->ReleaseStringUTFChars (env, jdirectory, directory);
if (r == NULL) {
throw_exception (env, guestfs_last_error (g));
return NULL;
}
for (r_len = 0; r[r_len] != NULL; ++r_len) ;
cl = (*env)->FindClass (env, "java/lang/String");
jstr = (*env)->NewStringUTF (env, "");
jr = (*env)->NewObjectArray (env, r_len, cl, jstr);
for (i = 0; i < r_len; ++i) {
jstr = (*env)->NewStringUTF (env, r[i]);
(*env)->SetObjectArrayElement (env, jr, i, jstr);
free (r[i]);
}
free (r);
return jr;
}