#include #include "sigar.h" #include "sigar_fileinfo.h" #include "sigar_format.h" #define RB_SIGAR_CROAK rb_raise(rb_eArgError, "%s", sigar_strerror(sigar, status)) static sigar_t *rb_sigar_get(VALUE obj) { sigar_t *sigar; Data_Get_Struct(obj, sigar_t, sigar); return sigar; } static void rb_sigar_free(void *obj) { free(obj); } static void rb_sigar_close(void *obj) { sigar_close((sigar_t *)obj); } static VALUE rb_sigar_new(VALUE module) { sigar_t *sigar; sigar_open(&sigar); return Data_Wrap_Struct(module, 0, rb_sigar_close, sigar); } static VALUE rb_sigar_format_size(VALUE rclass, VALUE size) { char buffer[56]; return rb_str_new2(sigar_format_size(NUM2LL(size), buffer)); } static VALUE rb_sigar_net_address_to_string(sigar_net_address_t address) { char addr_str[SIGAR_INET6_ADDRSTRLEN]; sigar_net_address_to_string(NULL, &address, addr_str); return rb_str_new2(addr_str); } static VALUE rb_sigar_new_list(char *data, unsigned long number, int size, VALUE rclass) { unsigned long i; VALUE av = rb_ary_new2(number); for (i=0; i