* nacl/pepper_main.c (Instance_DidCreate): mount devfs and rebind fd 0
.. 2 so that stderr goes to the console of the browser. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2f438d6010
commit
04e356b002
|
@ -1,3 +1,8 @@
|
|||
Wed Oct 22 08:21:09 2014 Yuki Yugui Sonoda <yugui@yugui.jp>
|
||||
|
||||
* nacl/pepper_main.c (Instance_DidCreate): mount devfs and rebind fd 0
|
||||
.. 2 so that stderr goes to the console of the browser.
|
||||
|
||||
Wed Oct 22 03:47:43 2014 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||
|
||||
* ext/etc/etc.c (etc_nprocessors_affin): maximum "n" should be 16384.
|
||||
|
|
|
@ -404,6 +404,24 @@ init_libraries_if_necessary(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
reopen_fd(int fd, const char* path, int flags) {
|
||||
int fd2 = open(path, flags);
|
||||
if (fd2 < 0) {
|
||||
perror("open fd");
|
||||
return -1;
|
||||
}
|
||||
if (dup2(fd2, fd) < 0) {
|
||||
perror("dup2 fd");
|
||||
return -1;
|
||||
}
|
||||
if (close(fd2)) {
|
||||
perror("close old fd");
|
||||
return -1;
|
||||
}
|
||||
return fd;
|
||||
}
|
||||
|
||||
static int
|
||||
pruby_init(void)
|
||||
{
|
||||
|
@ -490,13 +508,29 @@ static PP_Bool
|
|||
Instance_DidCreate(PP_Instance instance,
|
||||
uint32_t argc, const char* argn[], const char* argv[])
|
||||
{
|
||||
int ret;
|
||||
struct PepperInstance* data = pruby_register_instance(instance);
|
||||
current_instance = instance;
|
||||
|
||||
nacl_io_init_ppapi(instance, get_browser_interface);
|
||||
|
||||
// TODO(yugui) Mount devfs
|
||||
if (mount("", "/dev2", "dev", 0, "")) {
|
||||
perror("mount dev");
|
||||
return PP_FALSE;
|
||||
}
|
||||
if (reopen_fd(0, "/dev2/stdin", O_RDONLY) < 0) {
|
||||
perror("reopen stdin");
|
||||
return PP_FALSE;
|
||||
}
|
||||
if (reopen_fd(1, "/dev2/stdout", O_WRONLY) < 0) {
|
||||
perror("reopen stdout");
|
||||
return PP_FALSE;
|
||||
}
|
||||
if (reopen_fd(2, "/dev2/console1", O_WRONLY) < 0) {
|
||||
perror("reopen stderr");
|
||||
return PP_FALSE;
|
||||
}
|
||||
|
||||
/* TODO(yugui) Unmount original /dev */
|
||||
|
||||
if (mount("/lib", "/lib", "httpfs",
|
||||
0, "allow_cross_origin_requests=false")) {
|
||||
|
|
Loading…
Reference in New Issue