Call
guestfs_create[http://libguestfs.org/guestfs.3.html#guestfs_create]
to create a new libguestfs handle. The handle is represented in Ruby as an
instance of the Guestfs::Guestfs class.
static VALUE ruby_guestfs_create (int argc, VALUE *argv, VALUE m) { guestfs_h *g; if (argc > 1) rb_raise (rb_eArgError, "expecting 0 or 1 arguments"); volatile VALUE optargsv = argc == 1 ? argv[0] : rb_hash_new (); Check_Type (optargsv, T_HASH); unsigned flags = 0; volatile VALUE v; v = rb_hash_lookup (optargsv, ID2SYM (rb_intern ("environment"))); if (v != Qnil && !RTEST (v)) flags |= GUESTFS_CREATE_NO_ENVIRONMENT; v = rb_hash_lookup (optargsv, ID2SYM (rb_intern ("close_on_exit"))); if (v != Qnil && !RTEST (v)) flags |= GUESTFS_CREATE_NO_CLOSE_ON_EXIT; g = guestfs_create_flags (flags); if (!g) rb_raise (e_Error, "failed to create guestfs handle"); /* Don't print error messages to stderr by default. */ guestfs_set_error_handler (g, NULL, NULL); /* Wrap it, and make sure the close function is called when the * handle goes away. */ return Data_Wrap_Struct (c_guestfs, NULL, ruby_guestfs_free, g); }
Call
guestfs_event_to_string[http://libguestfs.org/guestfs.3.html#guestfs_event_to_string]
to convert an event or event bitmask into a printable string.
static VALUE ruby_event_to_string (VALUE modulev, VALUE eventsv) { uint64_t events; char *str; events = NUM2ULL (eventsv); str = guestfs_event_to_string (events); if (str == NULL) rb_raise (e_Error, "%s", strerror (errno)); volatile VALUE rv = rb_str_new2 (str); free (str); return rv; }