* process.c: simplified because close_others option is always
enabled by default. (rb_f_exec): don't need to set the option. (rb_exec_arg_prepare): don't need to set the option. don't need default_close_others argument. (rb_spawn_internal): don't need to give default_close_others argument for rb_exec_arg_prepare. don't need default_close_others argument. (rb_spawn_err): don't need to give default_close_others argument for rb_spawn_internal. (rb_spawn): don't need to give default_close_others argument for rb_spawn_internal. (rb_f_system): don't need to give default_close_others argument for rb_spawn_internal. (rb_f_spawn): don't need to give default_close_others argument for rb_exec_arg_prepare. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0ec4ae7c8e
commit
4a9a7756da
19
ChangeLog
19
ChangeLog
@ -1,3 +1,22 @@
|
|||||||
|
Sat Jun 9 09:31:07 2012 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* process.c: simplified because close_others option is always
|
||||||
|
enabled by default.
|
||||||
|
(rb_f_exec): don't need to set the option.
|
||||||
|
(rb_exec_arg_prepare): don't need to set the option. don't need
|
||||||
|
default_close_others argument.
|
||||||
|
(rb_spawn_internal): don't need to give default_close_others
|
||||||
|
argument for rb_exec_arg_prepare. don't need default_close_others
|
||||||
|
argument.
|
||||||
|
(rb_spawn_err): don't need to give default_close_others
|
||||||
|
argument for rb_spawn_internal.
|
||||||
|
(rb_spawn): don't need to give default_close_others
|
||||||
|
argument for rb_spawn_internal.
|
||||||
|
(rb_f_system): don't need to give default_close_others argument for
|
||||||
|
rb_spawn_internal.
|
||||||
|
(rb_f_spawn): don't need to give default_close_others argument for
|
||||||
|
rb_exec_arg_prepare.
|
||||||
|
|
||||||
Sat Jun 9 09:00:58 2012 Tanaka Akira <akr@fsij.org>
|
Sat Jun 9 09:00:58 2012 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* process.c (rb_proc_exec): call before_exec() here addition to
|
* process.c (rb_proc_exec): call before_exec() here addition to
|
||||||
|
21
process.c
21
process.c
@ -2000,8 +2000,6 @@ rb_f_exec(int argc, VALUE *argv)
|
|||||||
char errmsg[CHILD_ERRMSG_BUFLEN] = { '\0' };
|
char errmsg[CHILD_ERRMSG_BUFLEN] = { '\0' };
|
||||||
|
|
||||||
rb_exec_arg_init(argc, argv, TRUE, &earg);
|
rb_exec_arg_init(argc, argv, TRUE, &earg);
|
||||||
if (NIL_P(rb_ary_entry(earg.options, EXEC_OPTION_CLOSE_OTHERS)))
|
|
||||||
rb_exec_arg_addopt(&earg, ID2SYM(rb_intern("close_others")), Qtrue);
|
|
||||||
rb_exec_arg_fixup(&earg);
|
rb_exec_arg_fixup(&earg);
|
||||||
|
|
||||||
rb_exec_err(&earg, errmsg, sizeof(errmsg));
|
rb_exec_err(&earg, errmsg, sizeof(errmsg));
|
||||||
@ -3130,13 +3128,9 @@ rb_syswait(rb_pid_t pid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rb_exec_arg_prepare(struct rb_exec_arg *earg, int argc, VALUE *argv, int default_close_others)
|
rb_exec_arg_prepare(struct rb_exec_arg *earg, int argc, VALUE *argv)
|
||||||
{
|
{
|
||||||
rb_exec_arg_init(argc, argv, TRUE, earg);
|
rb_exec_arg_init(argc, argv, TRUE, earg);
|
||||||
if (NIL_P(rb_ary_entry(earg->options, EXEC_OPTION_CLOSE_OTHERS))) {
|
|
||||||
VALUE v = default_close_others ? Qtrue : Qfalse;
|
|
||||||
rb_exec_arg_addopt(earg, ID2SYM(rb_intern("close_others")), v);
|
|
||||||
}
|
|
||||||
rb_exec_arg_fixup(earg);
|
rb_exec_arg_fixup(earg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3193,24 +3187,23 @@ rb_spawn_process(struct rb_exec_arg *earg, char *errmsg, size_t errmsg_buflen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static rb_pid_t
|
static rb_pid_t
|
||||||
rb_spawn_internal(int argc, VALUE *argv, int default_close_others,
|
rb_spawn_internal(int argc, VALUE *argv, char *errmsg, size_t errmsg_buflen)
|
||||||
char *errmsg, size_t errmsg_buflen)
|
|
||||||
{
|
{
|
||||||
struct rb_exec_arg earg;
|
struct rb_exec_arg earg;
|
||||||
rb_exec_arg_prepare(&earg, argc, argv, default_close_others);
|
rb_exec_arg_prepare(&earg, argc, argv);
|
||||||
return rb_spawn_process(&earg, errmsg, errmsg_buflen);
|
return rb_spawn_process(&earg, errmsg, errmsg_buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_pid_t
|
rb_pid_t
|
||||||
rb_spawn_err(int argc, VALUE *argv, char *errmsg, size_t errmsg_buflen)
|
rb_spawn_err(int argc, VALUE *argv, char *errmsg, size_t errmsg_buflen)
|
||||||
{
|
{
|
||||||
return rb_spawn_internal(argc, argv, TRUE, errmsg, errmsg_buflen);
|
return rb_spawn_internal(argc, argv, errmsg, errmsg_buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_pid_t
|
rb_pid_t
|
||||||
rb_spawn(int argc, VALUE *argv)
|
rb_spawn(int argc, VALUE *argv)
|
||||||
{
|
{
|
||||||
return rb_spawn_internal(argc, argv, TRUE, NULL, 0);
|
return rb_spawn_internal(argc, argv, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3261,7 +3254,7 @@ rb_f_system(int argc, VALUE *argv)
|
|||||||
|
|
||||||
chfunc = signal(SIGCHLD, SIG_DFL);
|
chfunc = signal(SIGCHLD, SIG_DFL);
|
||||||
#endif
|
#endif
|
||||||
pid = rb_spawn_internal(argc, argv, TRUE, NULL, 0);
|
pid = rb_spawn_internal(argc, argv, NULL, 0);
|
||||||
#if defined(HAVE_FORK) || defined(HAVE_SPAWNV)
|
#if defined(HAVE_FORK) || defined(HAVE_SPAWNV)
|
||||||
if (pid > 0) {
|
if (pid > 0) {
|
||||||
rb_syswait(pid);
|
rb_syswait(pid);
|
||||||
@ -3531,7 +3524,7 @@ rb_f_spawn(int argc, VALUE *argv)
|
|||||||
char errmsg[CHILD_ERRMSG_BUFLEN] = { '\0' };
|
char errmsg[CHILD_ERRMSG_BUFLEN] = { '\0' };
|
||||||
struct rb_exec_arg earg;
|
struct rb_exec_arg earg;
|
||||||
|
|
||||||
rb_exec_arg_prepare(&earg, argc, argv, TRUE);
|
rb_exec_arg_prepare(&earg, argc, argv);
|
||||||
pid = rb_spawn_process(&earg, errmsg, sizeof(errmsg));
|
pid = rb_spawn_process(&earg, errmsg, sizeof(errmsg));
|
||||||
if (pid == -1) {
|
if (pid == -1) {
|
||||||
const char *prog = errmsg;
|
const char *prog = errmsg;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user