diff options
Diffstat (limited to 'ruby_2_2/goruby.c')
-rw-r--r-- | ruby_2_2/goruby.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/ruby_2_2/goruby.c b/ruby_2_2/goruby.c deleted file mode 100644 index 99042f8440..0000000000 --- a/ruby_2_2/goruby.c +++ /dev/null @@ -1,60 +0,0 @@ -void Init_golf(void); -#define ruby_options goruby_options -#define ruby_run_node goruby_run_node -#include "main.c" -#undef ruby_options -#undef ruby_run_node - -#if defined _WIN32 -#include <io.h> -#include <fcntl.h> -#define pipe(p) _pipe(p, 32L, _O_NOINHERIT) -#elif defined HAVE_UNISTD_H -#include <unistd.h> -#endif - -RUBY_EXTERN void *ruby_options(int argc, char **argv); -RUBY_EXTERN int ruby_run_node(void*); -RUBY_EXTERN void ruby_init_ext(const char *name, void (*init)(void)); - -static VALUE -init_golf(VALUE arg) -{ - ruby_init_ext("golf.so", Init_golf); - return arg; -} - -void * -goruby_options(int argc, char **argv) -{ - static const char cmd[] = "END{require 'irb';IRB.start}"; - int rw[2], infd; - void *ret; - - if ((isatty(0) && isatty(1) && isatty(2)) && (pipe(rw) == 0)) { - ssize_t n; - infd = dup(0); - if (infd < 0) return NULL; - dup2(rw[0], 0); - close(rw[0]); - n = write(rw[1], cmd, sizeof(cmd) - 1); - close(rw[1]); - ret = n > 0 ? ruby_options(argc, argv) : NULL; - dup2(infd, 0); - close(infd); - return ret; - } - else { - return ruby_options(argc, argv); - } -} - -int -goruby_run_node(void *arg) -{ - int state; - if (NIL_P(rb_protect(init_golf, Qtrue, &state))) { - return state == EXIT_SUCCESS ? EXIT_FAILURE : state; - } - return ruby_run_node(arg); -} |