summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorRichard Jones <rjones@trick.home.annexia.org>2009-05-19 12:05:43 +0100
committerRichard Jones <rjones@trick.home.annexia.org>2009-05-19 12:05:43 +0100
commit1fc41b39dac877ccec1284da8bb14baa4df368b8 (patch)
tree74d0693b6d97d796b75847ace4815109c17b3198 /java
parentd1df2f342489bbbba086cae2bb95971c8e404cad (diff)
downloadlibguestfs-1fc41b39dac877ccec1284da8bb14baa4df368b8.tar.gz
libguestfs-1fc41b39dac877ccec1284da8bb14baa4df368b8.tar.xz
libguestfs-1fc41b39dac877ccec1284da8bb14baa4df368b8.zip
Generated code for 'find' command.
Diffstat (limited to 'java')
-rw-r--r--java/com/redhat/et/libguestfs/GuestFS.java41
-rw-r--r--java/com_redhat_et_libguestfs_GuestFS.c33
2 files changed, 74 insertions, 0 deletions
diff --git a/java/com/redhat/et/libguestfs/GuestFS.java b/java/com/redhat/et/libguestfs/GuestFS.java
index 2846a80b..f4cec79c 100644
--- a/java/com/redhat/et/libguestfs/GuestFS.java
+++ b/java/com/redhat/et/libguestfs/GuestFS.java
@@ -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;
+
}
diff --git a/java/com_redhat_et_libguestfs_GuestFS.c b/java/com_redhat_et_libguestfs_GuestFS.c
index 1850f214..1e7f9de5 100644
--- a/java/com_redhat_et_libguestfs_GuestFS.c
+++ b/java/com_redhat_et_libguestfs_GuestFS.c
@@ -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;
+}
+