diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-02 07:30:35 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-02 07:30:35 +0000 |
commit | 5aad8206044f98b28bc303d5bd7d3e4f935e96ec (patch) | |
tree | 4873263f227dc109031fcfcc1db0a54cbf298c57 /io.c | |
parent | 95ce90a87ed0a058386eea410aeac0aac2ee2dc8 (diff) | |
download | ruby-5aad8206044f98b28bc303d5bd7d3e4f935e96ec.tar.gz |
* 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 'io.c')
-rw-r--r-- | io.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -2608,12 +2608,15 @@ pipe_open(argc, argv, pname, mode) volatile int doexec; #elif defined(_WIN32) int openmode = rb_io_mode_modenum(mode); - char *cmd = pname, *prog = NULL; + char *prog = NULL; #endif + char *cmd = pname; if (!pname) { arg0 = rb_check_argv(argc, argv); if (arg0) pname = StringValuePtr(arg0); + cmd = pname; + if (!pname) pname = RSTRING(argv[0])->ptr; } #if defined(HAVE_FORK) @@ -2639,7 +2642,7 @@ pipe_open(argc, argv, pname, mode) if (doexec) { arg.exec.argc = argc; arg.exec.argv = argv; - arg.exec.prog = pname; + arg.exec.prog = cmd; pid = rb_fork(&status, popen_exec, &arg); } else { @@ -2692,10 +2695,10 @@ pipe_open(argc, argv, pname, mode) #define PIPE_FDOPEN(i) (i?fpw:fpr) #else if (argc > 0) { - prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" ")); - pname = StringValuePtr(prog); + arg0 = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" ")); + cmd = StringValuePtr(arg0); } - fpr = popen(pname, mode); + fpr = popen(cmd, mode); if (!fpr) rb_sys_fail(pname); #define PIPE_FDOPEN(i) (fpr) |