summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-02 07:30:35 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-03-02 07:30:35 +0000
commit5aad8206044f98b28bc303d5bd7d3e4f935e96ec (patch)
tree4873263f227dc109031fcfcc1db0a54cbf298c57 /process.c
parent95ce90a87ed0a058386eea410aeac0aac2ee2dc8 (diff)
* io.c (pipe_open): erred program name should be reported by
exceptions, instead of the first argument. * process.c (rb_spawn): ditto. * process.c (proc_spawn_v): use first argument as program name. * win32/win32.c (rb_w32_aspawn): ditto. * win32/win32.c (CreateChild): search executable file if no program name given. * lib/drb/extservm.rb (invoke_service_command): use Process.spawn. [ruby-dev:23103] * lib/rdoc/ri/ri_display.rb (setup_pager): use IO.popen. [ruby-dev:23086], [ruby-dev:23103] * lib/rdoc/diagram.rb (convert_to_png): ditto. * lib/rdoc/generators/chm_generator.rb (compile_project): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/process.c b/process.c
index 8917d3b01c..4c9bd7618b 100644
--- a/process.c
+++ b/process.c
@@ -1066,6 +1066,7 @@ proc_spawn_v(argv, prog)
{
#if defined(_WIN32)
char *cmd = ALLOCA_N(char, rb_w32_argv_size(argv));
+ if (!prog) prog = argv[0];
return rb_w32_spawn(P_NOWAIT, rb_w32_join_argv(cmd, argv), prog);
#else
char *extension;
@@ -1476,6 +1477,7 @@ rb_spawn(argc, argv)
earg.argv = argv;
earg.prog = prog ? RSTRING(prog)->ptr : 0;
status = rb_fork(&status, (int (*)_((void*)))rb_exec, &earg);
+ if (prog) argv[0] = prog;
#elif defined HAVE_SPAWNV
if (!argc) {
status = proc_spawn(RSTRING(prog)->ptr);
@@ -1483,7 +1485,9 @@ rb_spawn(argc, argv)
else {
status = proc_spawn_n(argc, argv, prog);
}
+ if (prog) argv[0] = prog;
#else
+ if (prog) argv[0] = prog;
prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
status = system(StringValuePtr(prog));
# if defined(__human68k__) || defined(__DJGPP__)