* io.c (is_popen_fork): check if fork and raise NotImplementedError if
unavailable.
* io.c (rb_io_s_popen): allow environment variables hash and exec
options as flat parameters, not in an array arguments.
[Feature#6651] [EXPERIMENTAL]
* process.c (rb_execarg_extract_options): extract exec options, but no
exceptions on non-exec options and returns them as a Hash.
* process.c (rb_execarg_setenv): set environment variables.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c (rb_io_s_popen): revert r36213 "popen: shell commands with
envvar" because it disabled to let single command bypass shell.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(exec_with_sh): ditto. use it for execve.
(proc_exec_v): provide envp for try_with_sh.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
failed. [ruby-core:44093] [ruby-trunk - Bug #6249]
* include/ruby/intern.h (rb_exec_arg): add envp_str and envp_buf field
to store envp of execve().
* process.c (proc_exec_v): takes envp_str as an argument and use it
for execve().
(rb_proc_exec_ne): extended version of rb_proc_exec_n().
(rb_proc_exec_n): use rb_proc_exec_ne().
(rb_proc_exec): follow proc_exec_v() change.
(fill_envp_buf_i): new function.
(rb_exec_arg_fixup): set up envp_str and envp_buf.
(save_env_i): removed.
(save_env): removed.
(rb_run_exec_options_err): don't modify environment variables.
(rb_exec_err): use rb_proc_exec_ne().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
new function.
* process.c (enum): add EXEC_OPTION_PGROUP and move the position
above for the usage in proc_spawn_n().
* process.c (proc_spawn_n): add an argument to pass new option
`new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
CreateProcessW(). This flag is necessary for the usage of
Process.kill on the subprocess on Windows.
* process.c (rb_exec_arg_addopt): ditto.
* process.c (rb_spawn_process): ditto.
* process.c (documentation for rb_f_spawn): add documentation for new
option `new_pgroup` of spawn.
* test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
add tests for option `new_pgroup`.
* test/ruby/test_thread.rb
(TestThreadGroup#test_thread_timer_and_interrupt):
add option `new_pgroup: true` to spawn on Windows. It's needed for
Process.kill on a subprocess.
* win32/win32.c (CreateChild): add an argument to pass
dwCreationFlags of CreateProcessW().
* win32/win32.c (rb_w32_spawn): ditto.
* win32/win32.c (rb_w32_aspawn_flags): add new function to pass
dwCreationFlags.
* win32/win32.c (rb_w32_aspawn): refactor to move the content to
rb_w32_aspawn_flags().
[ruby-core:43245][Bug #6131]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
relative pathnames from the current directory of the parent process.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
skip if not implemented such functions (such as, on Windows).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
NoMemoryError is raised in MiniTest#exception_details where exception
is made, and no effect. Run GC.start before running to keep the room.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
patched by Jeremy Evans [ruby-core:38530] see #5097
* test/ruby/test_process.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
before calling execve(). Because r31760 reintroduced an issue that
system() may hang up (i.e. [ruby-dev:12261]).
* process.c (save_sigpipe, restore_sigpipe): new.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Windows, because this tests a platform specific feature and it'll never be
supported on ruby on Windows.
* test/ruby/test_dir_m17n.rb (TestDir_M17N#test_filename_extutf8_invalid,
TestDir_M17N#test_filename_as_bytes_extutf8): ditto.
* test/open-uri/test_open-uri.rb
(TestOpenURI#test_find_proxy_case_sensitive_env): ditto.
* test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
DL::TestHandle#test_DEFAULT): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
and Process#maxgroups= now raise NotImplementedError if the
platform don't support supplementary groups concept.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
environment variables. based on a patch from funny-falcon at
https://gist.github.com/856296, but honors safe level.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ArgumentError if fd >= 3 on Windows because the feature is not
supported.
* test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
argument.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
>= 3 is not supported on Windows, so should not specify such options
when calling spawn or others.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
should handle Errno::E2BIG, because this test checks crash of ruby,
not the error type system.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
TestProcess#test_too_long_path): Reduced string size from 100MB
to 10MB. 100MB may cause no memory error. It isn't intended.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Factored out from test_too_long_path. A test should only do
one test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(proc_spawn_n, proc_spawn): get rid of too huge alloca().
[ruby-core:34827], [ruby-core:34833]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e