Catching hanging qemu in tests (RHBZ#505329).
[libguestfs.git] / java / com_redhat_et_libguestfs_GuestFS.c
index 37683bf..91e3cf1 100644 (file)
@@ -78,7 +78,7 @@ Java_com_redhat_et_libguestfs_GuestFS__1test0
   int i;
 
   str = (*env)->GetStringUTFChars (env, jstr, NULL);
-  optstr = (*env)->GetStringUTFChars (env, joptstr, NULL);
+  optstr = joptstr ? (*env)->GetStringUTFChars (env, joptstr, NULL) : NULL;
   strlist_len = (*env)->GetArrayLength (env, jstrlist);
   strlist = guestfs_safe_malloc (g, sizeof (char *) * (strlist_len+1));
   for (i = 0; i < strlist_len; ++i) {
@@ -92,7 +92,8 @@ Java_com_redhat_et_libguestfs_GuestFS__1test0
   fileout = (*env)->GetStringUTFChars (env, jfileout, NULL);
   r = guestfs_test0 (g, str, optstr, strlist, b, integer, filein, fileout);
   (*env)->ReleaseStringUTFChars (env, jstr, str);
-  (*env)->ReleaseStringUTFChars (env, joptstr, optstr);
+  if (joptstr)
+    (*env)->ReleaseStringUTFChars (env, joptstr, optstr);
   for (i = 0; i < strlist_len; ++i) {
     jobject o = (*env)->GetObjectArrayElement (env, jstrlist, i);
     (*env)->ReleaseStringUTFChars (env, o, strlist[i]);
@@ -1088,6 +1089,23 @@ Java_com_redhat_et_libguestfs_GuestFS__1add_1cdrom
 }
 
 JNIEXPORT void JNICALL
+Java_com_redhat_et_libguestfs_GuestFS__1add_1drive_1ro
+  (JNIEnv *env, jobject obj, jlong jg, jstring jfilename)
+{
+  guestfs_h *g = (guestfs_h *) (long) jg;
+  int r;
+  const char *filename;
+
+  filename = (*env)->GetStringUTFChars (env, jfilename, NULL);
+  r = guestfs_add_drive_ro (g, filename);
+  (*env)->ReleaseStringUTFChars (env, jfilename, filename);
+  if (r == -1) {
+    throw_exception (env, guestfs_last_error (g));
+    return ;
+  }
+}
+
+JNIEXPORT void JNICALL
 Java_com_redhat_et_libguestfs_GuestFS__1config
   (JNIEnv *env, jobject obj, jlong jg, jstring jqemuparam, jstring jqemuvalue)
 {
@@ -1097,10 +1115,11 @@ Java_com_redhat_et_libguestfs_GuestFS__1config
   const char *qemuvalue;
 
   qemuparam = (*env)->GetStringUTFChars (env, jqemuparam, NULL);
-  qemuvalue = (*env)->GetStringUTFChars (env, jqemuvalue, NULL);
+  qemuvalue = jqemuvalue ? (*env)->GetStringUTFChars (env, jqemuvalue, NULL) : NULL;
   r = guestfs_config (g, qemuparam, qemuvalue);
   (*env)->ReleaseStringUTFChars (env, jqemuparam, qemuparam);
-  (*env)->ReleaseStringUTFChars (env, jqemuvalue, qemuvalue);
+  if (jqemuvalue)
+    (*env)->ReleaseStringUTFChars (env, jqemuvalue, qemuvalue);
   if (r == -1) {
     throw_exception (env, guestfs_last_error (g));
     return ;
@@ -1928,10 +1947,11 @@ Java_com_redhat_et_libguestfs_GuestFS__1aug_1defvar
   const char *expr;
 
   name = (*env)->GetStringUTFChars (env, jname, NULL);
-  expr = (*env)->GetStringUTFChars (env, jexpr, NULL);
+  expr = jexpr ? (*env)->GetStringUTFChars (env, jexpr, NULL) : NULL;
   r = guestfs_aug_defvar (g, name, expr);
   (*env)->ReleaseStringUTFChars (env, jname, name);
-  (*env)->ReleaseStringUTFChars (env, jexpr, expr);
+  if (jexpr)
+    (*env)->ReleaseStringUTFChars (env, jexpr, expr);
   if (r == -1) {
     throw_exception (env, guestfs_last_error (g));
     return 0;
@@ -3930,3 +3950,39 @@ Java_com_redhat_et_libguestfs_GuestFS__1e2fsck_1f
   }
 }
 
+JNIEXPORT void JNICALL
+Java_com_redhat_et_libguestfs_GuestFS__1sleep
+  (JNIEnv *env, jobject obj, jlong jg, jint jsecs)
+{
+  guestfs_h *g = (guestfs_h *) (long) jg;
+  int r;
+  int secs;
+
+  secs = jsecs;
+  r = guestfs_sleep (g, secs);
+  if (r == -1) {
+    throw_exception (env, guestfs_last_error (g));
+    return ;
+  }
+}
+
+JNIEXPORT jint JNICALL
+Java_com_redhat_et_libguestfs_GuestFS__1ntfs_13g_1probe
+  (JNIEnv *env, jobject obj, jlong jg, jboolean jrw, jstring jdevice)
+{
+  guestfs_h *g = (guestfs_h *) (long) jg;
+  int r;
+  int rw;
+  const char *device;
+
+  rw = jrw;
+  device = (*env)->GetStringUTFChars (env, jdevice, NULL);
+  r = guestfs_ntfs_3g_probe (g, rw, device);
+  (*env)->ReleaseStringUTFChars (env, jdevice, device);
+  if (r == -1) {
+    throw_exception (env, guestfs_last_error (g));
+    return 0;
+  }
+  return (jint) r;
+}
+