add proc_env
This commit is contained in:
		
							parent
							
								
									4434a2f877
								
							
						
					
					
						commit
						ac6d7b9a81
					
				@ -22,6 +22,7 @@
 | 
			
		||||
#include "sigar_format.h"
 | 
			
		||||
 | 
			
		||||
#define RB_SIGAR_CROAK rb_raise(rb_eArgError, "%s", sigar_strerror(sigar, status))
 | 
			
		||||
#define NUM2PID NUM2UINT
 | 
			
		||||
 | 
			
		||||
static sigar_t *rb_sigar_get(VALUE obj)
 | 
			
		||||
{
 | 
			
		||||
@ -215,7 +216,8 @@ static VALUE rb_sigar_proc_args(VALUE obj, VALUE pid)
 | 
			
		||||
    sigar_proc_args_t args;
 | 
			
		||||
    VALUE RETVAL;
 | 
			
		||||
 | 
			
		||||
    status = sigar_proc_args_get(sigar, NUM2UINT(pid), &args);
 | 
			
		||||
    status = sigar_proc_args_get(sigar, NUM2PID(pid), &args);
 | 
			
		||||
 | 
			
		||||
    if (status != SIGAR_OK) {
 | 
			
		||||
        RB_SIGAR_CROAK;
 | 
			
		||||
    }
 | 
			
		||||
@ -227,6 +229,35 @@ static VALUE rb_sigar_proc_args(VALUE obj, VALUE pid)
 | 
			
		||||
    return RETVAL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rb_sigar_env_getall(void *data,
 | 
			
		||||
                               const char *key, int klen,
 | 
			
		||||
                               char *val, int vlen)
 | 
			
		||||
{
 | 
			
		||||
    rb_hash_aset(*((VALUE*)data),
 | 
			
		||||
                 rb_str_new(key, klen),
 | 
			
		||||
                 rb_str_new(val, vlen));
 | 
			
		||||
    return SIGAR_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static VALUE rb_sigar_proc_env(VALUE obj, VALUE pid)
 | 
			
		||||
{
 | 
			
		||||
    int status;
 | 
			
		||||
    sigar_t *sigar = rb_sigar_get(obj);
 | 
			
		||||
    sigar_proc_env_t procenv;
 | 
			
		||||
    VALUE RETVAL = rb_hash_new();
 | 
			
		||||
 | 
			
		||||
    procenv.type = SIGAR_PROC_ENV_ALL;
 | 
			
		||||
    procenv.env_getter = rb_sigar_env_getall;
 | 
			
		||||
    procenv.data = &RETVAL;
 | 
			
		||||
 | 
			
		||||
    status = sigar_proc_env_get(sigar, NUM2PID(pid), &procenv);
 | 
			
		||||
    if (status != SIGAR_OK) {
 | 
			
		||||
        RB_SIGAR_CROAK;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return RETVAL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#include "./rbsigar_generated.rx"
 | 
			
		||||
 | 
			
		||||
#define RB_SIGAR_CONST_INT(name) \
 | 
			
		||||
@ -261,6 +292,7 @@ void Init_rbsigar(void)
 | 
			
		||||
    rb_define_method(rclass, "net_interface_list", rb_sigar_net_interface_list, 0);
 | 
			
		||||
    rb_define_method(rclass, "who_list", rb_sigar_who_list, 0);
 | 
			
		||||
    rb_define_method(rclass, "proc_args", rb_sigar_proc_args, 1);
 | 
			
		||||
    rb_define_method(rclass, "proc_env", rb_sigar_proc_env, 1);
 | 
			
		||||
 | 
			
		||||
    rb_define_singleton_method(rclass, "new", rb_sigar_new, 0);
 | 
			
		||||
    rb_define_singleton_method(rclass, "format_size", rb_sigar_format_size, 1);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user