X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=ruby%2Fext%2Fguestfs%2F_guestfs.c;h=606e9a2afa3cb24c439d0339a790890bea60cedd;hp=679c5b0f81c3a286d3323fd31adefba30e914ca8;hb=0884d8bbae6d76a603ec1385ada2938f88981c5c;hpb=e492608f2f3809a824cb70ee03ff305964b69dd7 diff --git a/ruby/ext/guestfs/_guestfs.c b/ruby/ext/guestfs/_guestfs.c index 679c5b0..606e9a2 100644 --- a/ruby/ext/guestfs/_guestfs.c +++ b/ruby/ext/guestfs/_guestfs.c @@ -1329,6 +1329,41 @@ static VALUE ruby_guestfs_end_busy (VALUE gv) return Qnil; } +static VALUE ruby_guestfs_set_memsize (VALUE gv, VALUE memsizev) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "set_memsize"); + + int memsize = NUM2INT (memsizev); + + int r; + + r = guestfs_set_memsize (g, memsize); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_get_memsize (VALUE gv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "get_memsize"); + + + int r; + + r = guestfs_get_memsize (g); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return INT2NUM (r); +} + static VALUE ruby_guestfs_mount (VALUE gv, VALUE devicev, VALUE mountpointv) { guestfs_h *g; @@ -4581,6 +4616,255 @@ static VALUE ruby_guestfs_du (VALUE gv, VALUE pathv) return ULL2NUM (r); } +static VALUE ruby_guestfs_initrd_list (VALUE gv, VALUE pathv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "initrd_list"); + + Check_Type (pathv, T_STRING); + const char *path = StringValueCStr (pathv); + if (!path) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "path", "initrd_list"); + + char **r; + + r = guestfs_initrd_list (g, path); + if (r == NULL) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + int i, len = 0; + for (i = 0; r[i] != NULL; ++i) len++; + VALUE rv = rb_ary_new2 (len); + for (i = 0; r[i] != NULL; ++i) { + rb_ary_push (rv, rb_str_new2 (r[i])); + free (r[i]); + } + free (r); + return rv; +} + +static VALUE ruby_guestfs_mount_loop (VALUE gv, VALUE filev, VALUE mountpointv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mount_loop"); + + Check_Type (filev, T_STRING); + const char *file = StringValueCStr (filev); + if (!file) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "file", "mount_loop"); + Check_Type (mountpointv, T_STRING); + const char *mountpoint = StringValueCStr (mountpointv); + if (!mountpoint) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "mountpoint", "mount_loop"); + + int r; + + r = guestfs_mount_loop (g, file, mountpoint); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mkswap (VALUE gv, VALUE devicev) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mkswap"); + + Check_Type (devicev, T_STRING); + const char *device = StringValueCStr (devicev); + if (!device) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "device", "mkswap"); + + int r; + + r = guestfs_mkswap (g, device); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mkswap_L (VALUE gv, VALUE labelv, VALUE devicev) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mkswap_L"); + + Check_Type (labelv, T_STRING); + const char *label = StringValueCStr (labelv); + if (!label) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "label", "mkswap_L"); + Check_Type (devicev, T_STRING); + const char *device = StringValueCStr (devicev); + if (!device) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "device", "mkswap_L"); + + int r; + + r = guestfs_mkswap_L (g, label, device); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mkswap_U (VALUE gv, VALUE uuidv, VALUE devicev) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mkswap_U"); + + Check_Type (uuidv, T_STRING); + const char *uuid = StringValueCStr (uuidv); + if (!uuid) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "uuid", "mkswap_U"); + Check_Type (devicev, T_STRING); + const char *device = StringValueCStr (devicev); + if (!device) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "device", "mkswap_U"); + + int r; + + r = guestfs_mkswap_U (g, uuid, device); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mknod (VALUE gv, VALUE modev, VALUE devmajorv, VALUE devminorv, VALUE pathv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mknod"); + + int mode = NUM2INT (modev); + int devmajor = NUM2INT (devmajorv); + int devminor = NUM2INT (devminorv); + Check_Type (pathv, T_STRING); + const char *path = StringValueCStr (pathv); + if (!path) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "path", "mknod"); + + int r; + + r = guestfs_mknod (g, mode, devmajor, devminor, path); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mkfifo (VALUE gv, VALUE modev, VALUE pathv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mkfifo"); + + int mode = NUM2INT (modev); + Check_Type (pathv, T_STRING); + const char *path = StringValueCStr (pathv); + if (!path) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "path", "mkfifo"); + + int r; + + r = guestfs_mkfifo (g, mode, path); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mknod_b (VALUE gv, VALUE modev, VALUE devmajorv, VALUE devminorv, VALUE pathv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mknod_b"); + + int mode = NUM2INT (modev); + int devmajor = NUM2INT (devmajorv); + int devminor = NUM2INT (devminorv); + Check_Type (pathv, T_STRING); + const char *path = StringValueCStr (pathv); + if (!path) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "path", "mknod_b"); + + int r; + + r = guestfs_mknod_b (g, mode, devmajor, devminor, path); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_mknod_c (VALUE gv, VALUE modev, VALUE devmajorv, VALUE devminorv, VALUE pathv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "mknod_c"); + + int mode = NUM2INT (modev); + int devmajor = NUM2INT (devmajorv); + int devminor = NUM2INT (devminorv); + Check_Type (pathv, T_STRING); + const char *path = StringValueCStr (pathv); + if (!path) + rb_raise (rb_eTypeError, "expected string for parameter %s of %s", + "path", "mknod_c"); + + int r; + + r = guestfs_mknod_c (g, mode, devmajor, devminor, path); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return Qnil; +} + +static VALUE ruby_guestfs_umask (VALUE gv, VALUE maskv) +{ + guestfs_h *g; + Data_Get_Struct (gv, guestfs_h, g); + if (!g) + rb_raise (rb_eArgError, "%s: used handle after closing it", "umask"); + + int mask = NUM2INT (maskv); + + int r; + + r = guestfs_umask (g, mask); + if (r == -1) + rb_raise (e_Error, "%s", guestfs_last_error (g)); + + return INT2NUM (r); +} + /* Initialize the module. */ void Init__guestfs () { @@ -4695,6 +4979,10 @@ void Init__guestfs () ruby_guestfs_set_ready, 0); rb_define_method (c_guestfs, "end_busy", ruby_guestfs_end_busy, 0); + rb_define_method (c_guestfs, "set_memsize", + ruby_guestfs_set_memsize, 1); + rb_define_method (c_guestfs, "get_memsize", + ruby_guestfs_get_memsize, 0); rb_define_method (c_guestfs, "mount", ruby_guestfs_mount, 2); rb_define_method (c_guestfs, "sync", @@ -4949,4 +5237,24 @@ void Init__guestfs () ruby_guestfs_df_h, 0); rb_define_method (c_guestfs, "du", ruby_guestfs_du, 1); + rb_define_method (c_guestfs, "initrd_list", + ruby_guestfs_initrd_list, 1); + rb_define_method (c_guestfs, "mount_loop", + ruby_guestfs_mount_loop, 2); + rb_define_method (c_guestfs, "mkswap", + ruby_guestfs_mkswap, 1); + rb_define_method (c_guestfs, "mkswap_L", + ruby_guestfs_mkswap_L, 2); + rb_define_method (c_guestfs, "mkswap_U", + ruby_guestfs_mkswap_U, 2); + rb_define_method (c_guestfs, "mknod", + ruby_guestfs_mknod, 4); + rb_define_method (c_guestfs, "mkfifo", + ruby_guestfs_mkfifo, 2); + rb_define_method (c_guestfs, "mknod_b", + ruby_guestfs_mknod_b, 4); + rb_define_method (c_guestfs, "mknod_c", + ruby_guestfs_mknod_c, 4); + rb_define_method (c_guestfs, "umask", + ruby_guestfs_umask, 1); }