diff options
author | Richard Jones <rjones@redhat.com> | 2009-05-08 14:28:03 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2009-05-08 14:28:03 +0100 |
commit | 0faa5dde7b992ba11bb88f77b3424676c7c492e4 (patch) | |
tree | 14948be793fca09223d7ca3022b9ac7e1fbebd81 /java | |
parent | fa7c8bb79b45aecdf65ed93635a42f3fdf301134 (diff) | |
download | libguestfs-0faa5dde7b992ba11bb88f77b3424676c7c492e4.tar.gz libguestfs-0faa5dde7b992ba11bb88f77b3424676c7c492e4.tar.xz libguestfs-0faa5dde7b992ba11bb88f77b3424676c7c492e4.zip |
Generated code to support previous 2 commits.
Diffstat (limited to 'java')
-rw-r--r-- | java/com/redhat/et/libguestfs/GuestFS.java | 79 | ||||
-rw-r--r-- | java/com_redhat_et_libguestfs_GuestFS.c | 90 |
2 files changed, 169 insertions, 0 deletions
diff --git a/java/com/redhat/et/libguestfs/GuestFS.java b/java/com/redhat/et/libguestfs/GuestFS.java index cd5fdeed..0d9ae9df 100644 --- a/java/com/redhat/et/libguestfs/GuestFS.java +++ b/java/com/redhat/et/libguestfs/GuestFS.java @@ -1487,6 +1487,11 @@ public class GuestFS { * calculated using "strlen" (so in this case the content * cannot contain embedded ASCII NULs). * + * *NB.* Owing to a bug, writing content containing ASCII + * NUL characters does *not* work, even if the length is + * specified. We hope to resolve this bug in a future + * version. In the meantime use "g.upload". + * * Because of the message protocol, there is a transfer * limit of somewhere between 2MB and 4MB. To transfer * large files you should use FTP. @@ -2578,4 +2583,78 @@ public class GuestFS { private native boolean _equal (long g, String file1, String file2) throws LibGuestFSException; + /** + * print the printable strings in a file + * + * This runs the strings(1) command on a file and returns + * the list of printable strings found. + * + * Because of the message protocol, there is a transfer + * limit of somewhere between 2MB and 4MB. To transfer + * large files you should use FTP. + * + * @throws LibGuestFSException + */ + public String[] strings (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("strings: handle is closed"); + return _strings (g, path); + } + private native String[] _strings (long g, String path) + throws LibGuestFSException; + + /** + * print the printable strings in a file + * + * This is like the "g.strings" command, but allows you to + * specify the encoding. + * + * See the strings(1) manpage for the full list of + * encodings. + * + * Commonly useful encodings are "l" (lower case L) which + * will show strings inside Windows/x86 files. + * + * The returned strings are transcoded to UTF-8. + * + * Because of the message protocol, there is a transfer + * limit of somewhere between 2MB and 4MB. To transfer + * large files you should use FTP. + * + * @throws LibGuestFSException + */ + public String[] strings_e (String encoding, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("strings_e: handle is closed"); + return _strings_e (g, encoding, path); + } + private native String[] _strings_e (long g, String encoding, String path) + throws LibGuestFSException; + + /** + * dump a file in hexadecimal + * + * This runs "hexdump -C" on the given "path". The result + * is the human-readable, canonical hex dump of the file. + * + * Because of the message protocol, there is a transfer + * limit of somewhere between 2MB and 4MB. To transfer + * large files you should use FTP. + * + * @throws LibGuestFSException + */ + public String hexdump (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("hexdump: handle is closed"); + return _hexdump (g, path); + } + private native String _hexdump (long g, String path) + throws LibGuestFSException; + } diff --git a/java/com_redhat_et_libguestfs_GuestFS.c b/java/com_redhat_et_libguestfs_GuestFS.c index da287b15..48cd60ff 100644 --- a/java/com_redhat_et_libguestfs_GuestFS.c +++ b/java/com_redhat_et_libguestfs_GuestFS.c @@ -2586,3 +2586,93 @@ Java_com_redhat_et_libguestfs_GuestFS__1equal return (jboolean) r; } +JNIEXPORT jobjectArray JNICALL +Java_com_redhat_et_libguestfs_GuestFS__1strings + (JNIEnv *env, jobject obj, jlong jg, jstring jpath) +{ + guestfs_h *g = (guestfs_h *) (long) jg; + jobjectArray jr; + int r_len; + jclass cl; + jstring jstr; + char **r; + const char *path; + int i; + + path = (*env)->GetStringUTFChars (env, jpath, NULL); + r = guestfs_strings (g, path); + (*env)->ReleaseStringUTFChars (env, jpath, path); + 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; +} + +JNIEXPORT jobjectArray JNICALL +Java_com_redhat_et_libguestfs_GuestFS__1strings_1e + (JNIEnv *env, jobject obj, jlong jg, jstring jencoding, jstring jpath) +{ + guestfs_h *g = (guestfs_h *) (long) jg; + jobjectArray jr; + int r_len; + jclass cl; + jstring jstr; + char **r; + const char *encoding; + const char *path; + int i; + + encoding = (*env)->GetStringUTFChars (env, jencoding, NULL); + path = (*env)->GetStringUTFChars (env, jpath, NULL); + r = guestfs_strings_e (g, encoding, path); + (*env)->ReleaseStringUTFChars (env, jencoding, encoding); + (*env)->ReleaseStringUTFChars (env, jpath, path); + 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; +} + +JNIEXPORT jstring JNICALL +Java_com_redhat_et_libguestfs_GuestFS__1hexdump + (JNIEnv *env, jobject obj, jlong jg, jstring jpath) +{ + guestfs_h *g = (guestfs_h *) (long) jg; + jstring jr; + char *r; + const char *path; + + path = (*env)->GetStringUTFChars (env, jpath, NULL); + r = guestfs_hexdump (g, path); + (*env)->ReleaseStringUTFChars (env, jpath, path); + if (r == NULL) { + throw_exception (env, guestfs_last_error (g)); + return NULL; + } + jr = (*env)->NewStringUTF (env, r); + free (r); + return jr; +} + |