process.c: use uaspawn
* process.c (proc_exec_cmd): use UTF-8 version aspawn. [ruby-dev:49838] [Bug #12841] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0687baaf57
commit
5d4309d068
@ -1,3 +1,8 @@
|
|||||||
|
Sat Oct 15 00:54:01 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* process.c (proc_exec_cmd): use UTF-8 version aspawn.
|
||||||
|
[ruby-dev:49838] [Bug #12841]
|
||||||
|
|
||||||
Fri Oct 14 22:26:10 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Fri Oct 14 22:26:10 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* lib/optparse/kwargs.rb (OptionParser#define_by_keywords):
|
* lib/optparse/kwargs.rb (OptionParser#define_by_keywords):
|
||||||
|
@ -1247,7 +1247,9 @@ proc_exec_cmd(const char *prog, VALUE argv_str, VALUE envp_str)
|
|||||||
UNREACHABLE;
|
UNREACHABLE;
|
||||||
#else
|
#else
|
||||||
char **argv;
|
char **argv;
|
||||||
|
#ifndef _WIN32
|
||||||
char **envp;
|
char **envp;
|
||||||
|
#endif
|
||||||
|
|
||||||
argv = ARGVSTR2ARGV(argv_str);
|
argv = ARGVSTR2ARGV(argv_str);
|
||||||
|
|
||||||
@ -1256,12 +1258,16 @@ proc_exec_cmd(const char *prog, VALUE argv_str, VALUE envp_str)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
rb_w32_uaspawn(P_OVERLAY, prog, argv);
|
||||||
|
#else
|
||||||
envp = envp_str ? (char **)RSTRING_PTR(envp_str) : NULL;
|
envp = envp_str ? (char **)RSTRING_PTR(envp_str) : NULL;
|
||||||
if (envp_str)
|
if (envp_str)
|
||||||
execve(prog, argv, envp); /* async-signal-safe */
|
execve(prog, argv, envp); /* async-signal-safe */
|
||||||
else
|
else
|
||||||
execv(prog, argv); /* async-signal-safe (since SUSv4) */
|
execv(prog, argv); /* async-signal-safe (since SUSv4) */
|
||||||
preserving_errno(try_with_sh(prog, argv, envp)); /* try_with_sh() is async-signal-safe. */
|
preserving_errno(try_with_sh(prog, argv, envp)); /* try_with_sh() is async-signal-safe. */
|
||||||
|
#endif
|
||||||
return -1;
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1910,6 +1910,27 @@ EOS
|
|||||||
end
|
end
|
||||||
end if windows?
|
end if windows?
|
||||||
|
|
||||||
|
def test_exec_nonascii
|
||||||
|
bug12841 = '[ruby-dev:49838] [Bug #12841]'
|
||||||
|
|
||||||
|
[
|
||||||
|
"\u{7d05 7389}",
|
||||||
|
"zuf\u{00E4}llige_\u{017E}lu\u{0165}ou\u{010D}k\u{00FD}_\u{10D2 10D0 10DB 10D4 10DD 10E0 10D4 10D1}_\u{0440 0430 0437 043B 043E 0433 0430}_\u{548C 65B0 52A0 5761 4EE5 53CA 4E1C}",
|
||||||
|
"c\u{1EE7}a",
|
||||||
|
].each do |arg|
|
||||||
|
begin
|
||||||
|
arg = arg.encode(Encoding.find("locale"))
|
||||||
|
rescue
|
||||||
|
else
|
||||||
|
assert_in_out_err([], "#{<<-"begin;"}\n#{<<-"end;"}", [arg], [], bug12841)
|
||||||
|
begin;
|
||||||
|
arg = "#{arg.b}".force_encoding("#{arg.encoding.name}")
|
||||||
|
exec(ENV["COMSPEC"]||"cmd.exe", "/c", "echo", arg)
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end if windows?
|
||||||
|
|
||||||
def test_clock_gettime
|
def test_clock_gettime
|
||||||
t1 = Process.clock_gettime(Process::CLOCK_REALTIME, :nanosecond)
|
t1 = Process.clock_gettime(Process::CLOCK_REALTIME, :nanosecond)
|
||||||
t2 = Time.now; t2 = t2.tv_sec * 1000000000 + t2.tv_nsec
|
t2 = Time.now; t2 = t2.tv_sec * 1000000000 + t2.tv_nsec
|
||||||
|
Loading…
x
Reference in New Issue
Block a user