summaryrefslogtreecommitdiff
path: root/internal.h
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-06-20 11:46:50 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-06-20 11:46:50 +0000
commitb60713de73dd3de6c610becb07ec30683d98af6b (patch)
tree9d3c097a7a158d9e44ea8bffdf69dd3b7461d7b6 /internal.h
parent826f98e688c5608dcb5aeb749d0511cf2724c3a3 (diff)
* internal.h (struct rb_execarg) moved and renamed from
struct rb_exec_arg in intern.h. * include/ruby/intern.h (struct rb_exec_arg): refer Data object which contains struct rb_execarg. * process.c: use struct rb_execarg instead of struct rb_exec_arg except functions declared in intern.h. (rb_exec_arg_addopt): extract a pointer to struct rb_execarg from struct rb_exec_arg. (rb_exec_arg_init): ditto. (rb_exec_arg_fixup): ditto. (rb_run_exec_options_err): ditto. (rb_run_exec_options): ditto. (rb_exec_err): ditto. (rb_exec): ditto. * io.c: use struct rb_execarg instead of struct rb_exec_arg. * ext/pty/pty.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'internal.h')
-rw-r--r--internal.h32
1 files changed, 26 insertions, 6 deletions
diff --git a/internal.h b/internal.h
index 50e3df35b3..e9a0ba1ed8 100644
--- a/internal.h
+++ b/internal.h
@@ -159,6 +159,26 @@ st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
/* process.c */
+struct rb_execarg {
+ int use_shell;
+ union {
+ struct {
+ VALUE shell_script;
+ } sh;
+ struct {
+ VALUE command_name;
+ VALUE command_abspath; /* full path string or nil */
+ VALUE argv_str;
+ VALUE argv_buf;
+ } cmd;
+ } invoke;
+ VALUE options;
+ VALUE redirect_fds;
+ VALUE envp_str;
+ VALUE envp_buf;
+ VALUE dup2_tmpbuf;
+};
+
/* argv_str contains extra two elements.
* The beginning one is for /bin/sh used by exec_with_sh.
* The last one for terminating NULL used by execve.
@@ -264,14 +284,14 @@ VALUE rb_thread_call_without_gvl(
void rb_maygvl_fd_fix_cloexec(int fd);
/* process.c */
-int rb_exec_async_signal_safe(const struct rb_exec_arg *e, char *errmsg, size_t errmsg_buflen);
+int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
rb_pid_t rb_fork_async_signal_safe(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen);
VALUE rb_execarg_new(int argc, VALUE *argv, int accept_shell);
-struct rb_exec_arg *rb_execarg_get(VALUE execarg_obj); /* dangerous. needs GC guard. */
-VALUE rb_execarg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
-int rb_execarg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
-void rb_execarg_fixup(struct rb_exec_arg *e);
-int rb_execarg_run_options(const struct rb_exec_arg *e, struct rb_exec_arg *s, char* errmsg, size_t errmsg_buflen);
+struct rb_execarg *rb_execarg_get(VALUE execarg_obj); /* dangerous. needs GC guard. */
+VALUE rb_execarg_init(int argc, VALUE *argv, int accept_shell, struct rb_execarg *e);
+int rb_execarg_addopt(struct rb_execarg *e, VALUE key, VALUE val);
+void rb_execarg_fixup(struct rb_execarg *e);
+int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility pop