mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
split internal.h into files
One day, I could not resist the way it was written. I finally started to make the code clean. This changeset is the beginning of a series of housekeeping commits. It is a simple refactoring; split internal.h into files, so that we can divide and concur in the upcoming commits. No lines of codes are either added or removed, except the obvious file headers/footers. The generated binary is identical to the one before.
This commit is contained in:
parent
ba78bf9778
commit
b739a63eb4
Notes:
git
2019-12-26 20:46:08 +09:00
55 changed files with 3449 additions and 2656 deletions
95
internal/process.h
Normal file
95
internal/process.h
Normal file
|
@ -0,0 +1,95 @@
|
|||
#ifndef INTERNAL_PROCESS_H /* -*- C -*- */
|
||||
#define INTERNAL_PROCESS_H
|
||||
/**
|
||||
* @file
|
||||
* @brief Internal header for Process.
|
||||
* @author \@shyouhei
|
||||
* @copyright This file is a part of the programming language Ruby.
|
||||
* Permission is hereby granted, to either redistribute and/or
|
||||
* modify this file, provided that the conditions mentioned in the
|
||||
* file COPYING are met. Consult the file for details.
|
||||
*/
|
||||
|
||||
/* process.c */
|
||||
#define RB_MAX_GROUPS (65536)
|
||||
|
||||
struct waitpid_state;
|
||||
struct rb_execarg {
|
||||
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 redirect_fds;
|
||||
VALUE envp_str;
|
||||
VALUE envp_buf;
|
||||
VALUE dup2_tmpbuf;
|
||||
unsigned use_shell : 1;
|
||||
unsigned pgroup_given : 1;
|
||||
unsigned umask_given : 1;
|
||||
unsigned unsetenv_others_given : 1;
|
||||
unsigned unsetenv_others_do : 1;
|
||||
unsigned close_others_given : 1;
|
||||
unsigned close_others_do : 1;
|
||||
unsigned chdir_given : 1;
|
||||
unsigned new_pgroup_given : 1;
|
||||
unsigned new_pgroup_flag : 1;
|
||||
unsigned uid_given : 1;
|
||||
unsigned gid_given : 1;
|
||||
unsigned exception : 1;
|
||||
unsigned exception_given : 1;
|
||||
struct waitpid_state *waitpid_state; /* for async process management */
|
||||
rb_pid_t pgroup_pgid; /* asis(-1), new pgroup(0), specified pgroup (0<V). */
|
||||
VALUE rlimit_limits; /* Qfalse or [[rtype, softlim, hardlim], ...] */
|
||||
mode_t umask_mask;
|
||||
rb_uid_t uid;
|
||||
rb_gid_t gid;
|
||||
int close_others_maxhint;
|
||||
VALUE fd_dup2;
|
||||
VALUE fd_close;
|
||||
VALUE fd_open;
|
||||
VALUE fd_dup2_child;
|
||||
VALUE env_modification; /* Qfalse or [[k1,v1], ...] */
|
||||
VALUE path_env;
|
||||
VALUE chdir_dir;
|
||||
};
|
||||
|
||||
/* 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.
|
||||
* See rb_exec_fillarg() in process.c. */
|
||||
#define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
|
||||
|
||||
static inline size_t
|
||||
ARGVSTR2ARGC(VALUE argv_str)
|
||||
{
|
||||
size_t i = 0;
|
||||
char *const *p = ARGVSTR2ARGV(argv_str);
|
||||
while (p[i++])
|
||||
;
|
||||
return i - 1;
|
||||
}
|
||||
|
||||
rb_pid_t rb_fork_ruby(int *status);
|
||||
void rb_last_status_clear(void);
|
||||
|
||||
RUBY_SYMBOL_EXPORT_BEGIN
|
||||
/* process.c (export) */
|
||||
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, const VALUE *argv, int accept_shell, int allow_exc_opt);
|
||||
struct rb_execarg *rb_execarg_get(VALUE execarg_obj); /* dangerous. needs GC guard. */
|
||||
int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
|
||||
void rb_execarg_parent_start(VALUE execarg_obj);
|
||||
void rb_execarg_parent_end(VALUE execarg_obj);
|
||||
int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
|
||||
VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
|
||||
void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
|
||||
RUBY_SYMBOL_EXPORT_END
|
||||
#endif /* INTERNAL_PROCESS_H */
|
Loading…
Add table
Add a link
Reference in a new issue