From bbc9eed034bb9fa7ee0ff1039ca8b9dbf1f92b50 Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 22 Mar 2002 07:26:42 +0000 Subject: * the VMS support patch submitted by Akiyoshi, Masamichi is merged. * eval.c (exec_under): changing ruby_class is OK, but should not alter cbase. * eval.c (yield_under_i): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- process.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'process.c') diff --git a/process.c b/process.c index 4763a8763..a2b3d7ceb 100644 --- a/process.c +++ b/process.c @@ -713,7 +713,7 @@ static VALUE rb_f_fork(obj) VALUE obj; { -#if !defined(__human68k__) && !defined(NT) && !defined(__MACOS__) && !defined(__EMX__) +#if !defined(__human68k__) && !defined(NT) && !defined(__MACOS__) && !defined(__EMX__) && !defined(__VMS) int pid; rb_secure(2); @@ -885,6 +885,30 @@ rb_f_system(argc, argv) } last_status_set(status == -1 ? 127 : status); return status == 0 ? Qtrue : Qfalse; +#else +#if defined(__VMS) + VALUE cmd; + int status; + + if (argc == 0) { + rb_last_status = Qnil; + rb_raise(rb_eArgError, "wrong number of arguments"); + } + + if (TYPE(argv[0]) == T_ARRAY) { + if (RARRAY(argv[0])->len != 2) { + rb_raise(rb_eArgError, "wrong first argument"); + } + argv[0] = RARRAY(argv[0])->ptr[0]; + } + cmd = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" ")); + + SafeStringValue(cmd); + status = system(RSTRING(cmd)->ptr); + last_status_set((status & 0xff) << 8); + + if (status == 0) return Qtrue; + return Qfalse; #else volatile VALUE prog = 0; int pid; @@ -938,6 +962,7 @@ rb_f_system(argc, argv) if (NUM2INT(rb_last_status) == 0) return Qtrue; return Qfalse; +#endif /* __VMS */ #endif /* __human68k__ */ #endif /* DJGPP */ #endif /* NT */ -- cgit