diff --git a/ext/lxc/lxc.c b/ext/lxc/lxc.c index b0ec634..6a1f394 100644 --- a/ext/lxc/lxc.c +++ b/ext/lxc/lxc.c @@ -41,8 +41,28 @@ extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, #define RELEASING_GVL2(func, arg, killfunc, killarg) func(arg) #endif -extern int lxc_wait_for_pid_status(pid_t pid); -extern long lxc_config_parse_arch(const char *arch); +//extern int lxc_wait_for_pid_status(pid_t pid); +#include +#include +int lxc_wait_for_pid_status(pid_t pid) +{ + int status, ret; + +again: + ret = waitpid(pid, &status, 0); + if (ret == -1) { + if (errno == EINTR) + goto again; + + return -1; + } + + if (ret != pid) + goto again; + + return status; +} +//extern long lxc_config_parse_arch(const char *arch); static VALUE Container; static VALUE Error; @@ -98,24 +118,24 @@ free_c_string_array(char **arr) * "personality", either +:linux32+ or +:linux+, for the 32-bit and 64-bit * architectures, respectively. */ -static VALUE -lxc_arch_to_personality(VALUE self, VALUE rb_arch) -{ - int ret; - char *arch; - - arch = StringValuePtr(rb_arch); - ret = lxc_config_parse_arch(arch); - - switch (ret) { - case PER_LINUX32: - return SYMBOL("linux32"); - case PER_LINUX: - return SYMBOL("linux"); - default: - rb_raise(Error, "unknown personality"); - } -} +//static VALUE +//lxc_arch_to_personality(VALUE self, VALUE rb_arch) +//{ +// int ret; +// char *arch; +// +// arch = StringValuePtr(rb_arch); +// ret = lxc_config_parse_arch(arch); +// +// switch (ret) { +// case PER_LINUX32: +// return SYMBOL("linux32"); +// case PER_LINUX: +// return SYMBOL("linux"); +// default: +// rb_raise(Error, "unknown personality"); +// } +//} /* * call-seq: @@ -2127,8 +2147,8 @@ Init_lxc(void) { VALUE LXC = rb_define_module("LXC"); - rb_define_singleton_method(LXC, "arch_to_personality", - lxc_arch_to_personality, 1); + //rb_define_singleton_method(LXC, "arch_to_personality", + // lxc_arch_to_personality, 1); rb_define_singleton_method(LXC, "run_command", lxc_run_command, 1); rb_define_singleton_method(LXC, "run_shell", lxc_run_shell, 0); rb_define_singleton_method(LXC, "global_config_item",