X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=ruby%2Fext%2Fguestfs%2F_guestfs.c;h=4983932f98d3dc7c664c9e5d0d2eb7bba5f98209;hp=58f7532799b7b7cd214703b7d661855fb19bc605;hb=d1a1ab972bb22f4c38a21fcc73f81650aaa03b4e;hpb=c41fe04a652437c920acb0e820762c53bf44a139 diff --git a/ruby/ext/guestfs/_guestfs.c b/ruby/ext/guestfs/_guestfs.c index 58f7532..4983932 100644 --- a/ruby/ext/guestfs/_guestfs.c +++ b/ruby/ext/guestfs/_guestfs.c @@ -82,7 +82,7 @@ static VALUE ruby_guestfs_test0 (VALUE gv, VALUE strv, VALUE optstrv, VALUE strl if (!str) rb_raise (rb_eTypeError, "expected string for parameter %s of %s", "str", "test0"); - const char *optstr = StringValueCStr (optstrv); + const char *optstr = !NIL_P (optstrv) ? StringValueCStr (optstrv) : NULL; char **strlist; { int i, len; len = RARRAY_LEN (strlistv); @@ -93,7 +93,7 @@ static VALUE ruby_guestfs_test0 (VALUE gv, VALUE strv, VALUE optstrv, VALUE strl } strlist[len] = NULL; } - int b = NUM2INT (bv); + int b = RTEST (bv); int integer = NUM2INT (integerv); const char *filein = StringValueCStr (fileinv); if (!filein) @@ -941,6 +941,27 @@ static VALUE ruby_guestfs_add_cdrom (VALUE gv, VALUE filenamev) return Qnil; } +static VALUE ruby_guestfs_add_drive_ro (VALUE gv, VALUE filenamev) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "add_drive_ro"); + + const char *filename = StringValueCStr (filenamev); + if (!filename) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "filename", "add_drive_ro"); + + int r; + + r = guestfs_add_drive_ro (g, filename); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + static VALUE ruby_guestfs_config (VALUE gv, VALUE qemuparamv, VALUE qemuvaluev) { guestfs_h *g; @@ -952,7 +973,7 @@ static VALUE ruby_guestfs_config (VALUE gv, VALUE qemuparamv, VALUE qemuvaluev) if (!qemuparam) rb_raise (rb_eTypeError, "expected string for parameter %s of %s", "qemuparam", "config"); - const char *qemuvalue = StringValueCStr (qemuvaluev); + const char *qemuvalue = !NIL_P (qemuvaluev) ? StringValueCStr (qemuvaluev) : NULL; int r; @@ -1084,7 +1105,7 @@ static VALUE ruby_guestfs_set_autosync (VALUE gv, VALUE autosyncv) if (!g) rb_raise (rb_eArgError, "%s: used handle after closing it", "set_autosync"); - int autosync = NUM2INT (autosyncv); + int autosync = RTEST (autosyncv); int r; @@ -1119,7 +1140,7 @@ static VALUE ruby_guestfs_set_verbose (VALUE gv, VALUE verbosev) if (!g) rb_raise (rb_eArgError, "%s: used handle after closing it", "set_verbose"); - int verbose = NUM2INT (verbosev); + int verbose = RTEST (verbosev); int r; @@ -1746,7 +1767,7 @@ static VALUE ruby_guestfs_aug_defvar (VALUE gv, VALUE namev, VALUE exprv) if (!name) rb_raise (rb_eTypeError, "expected string for parameter %s of %s", "name", "aug_defvar"); - const char *expr = StringValueCStr (exprv); + const char *expr = !NIL_P (exprv) ? StringValueCStr (exprv) : NULL; int r; @@ -1853,7 +1874,7 @@ static VALUE ruby_guestfs_aug_insert (VALUE gv, VALUE pathv, VALUE labelv, VALUE if (!label) rb_raise (rb_eTypeError, "expected string for parameter %s of %s", "label", "aug_insert"); - int before = NUM2INT (beforev); + int before = RTEST (beforev); int r; @@ -3809,7 +3830,7 @@ static VALUE ruby_guestfs_vg_activate_all (VALUE gv, VALUE activatev) if (!g) rb_raise (rb_eArgError, "%s: used handle after closing it", "vg_activate_all"); - int activate = NUM2INT (activatev); + int activate = RTEST (activatev); int r; @@ -3827,7 +3848,7 @@ static VALUE ruby_guestfs_vg_activate (VALUE gv, VALUE activatev, VALUE volgroup if (!g) rb_raise (rb_eArgError, "%s: used handle after closing it", "vg_activate"); - int activate = NUM2INT (activatev); + int activate = RTEST (activatev); char **volgroups; { int i, len; len = RARRAY_LEN (volgroupsv); @@ -4016,6 +4037,8 @@ void Init__guestfs () ruby_guestfs_add_drive, 1); rb_define_method (c_guestfs, "add_cdrom", ruby_guestfs_add_cdrom, 1); + rb_define_method (c_guestfs, "add_drive_ro", + ruby_guestfs_add_drive_ro, 1); rb_define_method (c_guestfs, "config", ruby_guestfs_config, 2); rb_define_method (c_guestfs, "set_qemu",