int main (int argc, char *argv[]) { guestfs_h *g; int r, default_memsize; /* What's the default memsize? */ g = guestfs_create (); if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); default_memsize = guestfs_get_memsize (g); if (default_memsize == -1) exit (EXIT_FAILURE); guestfs_close (g); /* Check that guestfs_create parses the environment. */ setenv ("LIBGUESTFS_MEMSIZE", "799", 1); g = guestfs_create (); if (!g) error (EXIT_FAILURE, errno, "guestfs_create"); assert (guestfs_get_memsize (g) == 799); guestfs_close (g); /* Check that guestfs_create_flags with no flags parses the environment. */ setenv ("LIBGUESTFS_MEMSIZE", "798", 1); g = guestfs_create_flags (0); if (!g) error (EXIT_FAILURE, errno, "guestfs_create_flags"); assert (guestfs_get_memsize (g) == 798); guestfs_close (g); /* Check guestfs_create_flags + explicit guestfs_parse_environment. */ setenv ("LIBGUESTFS_MEMSIZE", "797", 1); g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT); assert (guestfs_get_memsize (g) == default_memsize); if (!g) error (EXIT_FAILURE, errno, "guestfs_create_flags"); setenv ("LIBGUESTFS_MEMSIZE", "796", 1); r = guestfs_parse_environment (g); if (r == -1) exit (EXIT_FAILURE); assert (guestfs_get_memsize (g) == 796); guestfs_close (g); /* Check guestfs_parse_environment_list. */ setenv ("LIBGUESTFS_MEMSIZE", "795", 1); g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT); assert (guestfs_get_memsize (g) == default_memsize); if (!g) error (EXIT_FAILURE, errno, "guestfs_create_flags"); setenv ("LIBGUESTFS_MEMSIZE", "794", 1); const char *local_environment[] = { "LIBGUESTFS_MEMSIZE=793", "LIBGUESTFS_MEMSIZE_NOT_REALLY_A_VARIABLE=1", "FOO=bar", "HOME=/homes", "BLAH", NULL }; r = guestfs_parse_environment_list (g, (char **) local_environment); if (r == -1) exit (EXIT_FAILURE); assert (guestfs_get_memsize (g) == 793); guestfs_close (g); exit (EXIT_SUCCESS); }
/* Guestfs.create */ value ocaml_guestfs_create (value environmentv, value close_on_exitv, value unitv) { CAMLparam3 (environmentv, close_on_exitv, unitv); CAMLlocal1 (gv); unsigned flags = 0; guestfs_h *g; if (environmentv != Val_int (0) && !Bool_val (Field (environmentv, 0))) flags |= GUESTFS_CREATE_NO_ENVIRONMENT; if (close_on_exitv != Val_int (0) && !Bool_val (Field (close_on_exitv, 0))) flags |= GUESTFS_CREATE_NO_CLOSE_ON_EXIT; g = guestfs_create_flags (flags); if (g == NULL) caml_failwith ("failed to create guestfs handle"); guestfs_set_error_handler (g, NULL, NULL); gv = Val_guestfs (g); CAMLreturn (gv); }
JNIEXPORT jlong JNICALL Java_com_redhat_et_libguestfs_GuestFS__1create (JNIEnv *env, jobject obj_unused, jint flags) { guestfs_h *g; g = guestfs_create_flags ((int) flags); if (g == NULL) { throw_exception (env, "GuestFS.create: failed to allocate handle"); return 0; } guestfs_set_error_handler (g, NULL, NULL); return (jlong) (long) g; }
/* Guestfs.create */ value ocaml_guestfs_create (value environmentv, value close_on_exitv, value unitv) { CAMLparam3 (environmentv, close_on_exitv, unitv); CAMLlocal1 (gv); unsigned flags = 0; guestfs_h *g; value *v; if (environmentv != Val_int (0) && !Bool_val (Field (environmentv, 0))) flags |= GUESTFS_CREATE_NO_ENVIRONMENT; if (close_on_exitv != Val_int (0) && !Bool_val (Field (close_on_exitv, 0))) flags |= GUESTFS_CREATE_NO_CLOSE_ON_EXIT; g = guestfs_create_flags (flags); if (g == NULL) caml_failwith ("failed to create guestfs handle"); guestfs_set_error_handler (g, NULL, NULL); gv = Val_guestfs (g); /* Store the OCaml handle into the C handle. This is only so we can * map the C handle to the OCaml handle in event_callback_wrapper. */ v = guestfs_int_safe_malloc (g, sizeof *v); *v = gv; /* XXX This global root is generational, but we cannot rely on every * user having the OCaml 3.11 version which supports this. */ caml_register_global_root (v); guestfs_set_private (g, "_ocaml_g", v); CAMLreturn (gv); }
guestfs_h * guestfs_create (void) { return guestfs_create_flags (0); }