aboutsummaryrefslogtreecommitdiffstats
path: root/ext/pty/pty.c
Commit message (Collapse)AuthorAgeFilesLines
* * ext/pty/pty.c (get_device_once): FreeBSD 8 supported O_CLOEXEC flagnaruse2011-11-081-4/+4
| | | | | | | for posix_openpt, but FreeBSD 9's posix_openpt doesn't support O_CLOEXEC and fails if specified. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (get_device_once): FreeBSD's posix_openpt doesn'tnaruse2011-11-081-2/+3
| | | | | | support O_CLOEXEC and fails if specified. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33665 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_fd_fix_cloexec): renamed fromakr2011-10-311-6/+6
| | | | | | | | | | | | | | | | | | | rb_fd_set_cloexec. * io.c: follow the above renaming. * ext/pty/pty.c: ditto. * ext/socket/init.c: ditto. * ext/socket/socket.c: ditto. * ext/socket/ancdata.c: ditto. * ext/socket/unixsocket.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33585 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (get_device_once): use O_CLOEXEC for posix_openpt ifakr2011-10-311-1/+10
| | | | | | | available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33580 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_cloexec_dup): declared.akr2011-10-291-2/+2
| | | | | | | | | | | | | * io.c (rb_cloexec_dup): new function. (ruby_dup): use rb_cloexec_dup. * ext/pty/pty.c (pty_getpty): use rb_cloexec_dup. * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (ruby_setsid): use rb_cloexec_open.akr2011-10-291-16/+16
| | | | | | | | | | | | | | | | | | | | (rb_daemon): ditto. * ruby.c (load_file_internal): ditto. * file.c (rb_file_s_truncate): ditto. (file_load_ok): ditto. * random.c (fill_random_seed): ditto. * ext/pty/pty.c (chfunc): ditto. (get_device_once): ditto. * ext/io/console/console.c (console_dev): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (get_device_once): delay rb_fd_set_cloexec() untilakr2011-10-241-0/+16
| | | | | | | | | grantpt() on Solaris. grantpt() doesn't work with CLOEXEC on Solaris 10. reported by Naohisa GOTO. [ruby-dev:44688] [Bug #5475] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_fd_set_cloexec): declared.akr2011-10-221-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * io.c (rb_fd_set_cloexec): new function. (ruby_dup): call rb_fd_set_cloexec to set close-on-exec flag. (rb_sysopen_internal): ditto. (rb_pipe): ditto. (io_reopen): ditto. (io_cntl): ditto. * process.c (rb_f_exec): change the default :close_others option to true. (rb_f_system): ditto. (move_fds_to_avoid_crash): call rb_fd_set_cloexec to set close-on-exec flag. (ruby_setsid): ditto. (rb_daemon): ditto. * thread_pthread.c (rb_thread_create_timer_thread): call rb_fd_set_cloexec to set close-on-exec flag. * ruby.c (load_file_internal): ditto. * file.c (rb_file_s_truncate): ditto. (file_load_ok): ditto. * random.c (fill_random_seed): ditto. * ext/pty/pty.c (chfunc): ditto. (get_device_once): ditto. * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto. * ext/socket/init.c (rsock_socket): ditto. (rsock_s_accept_nonblock): ditto. (rsock_s_accept): ditto. * ext/socket/socket.c (rsock_sock_s_socketpair): ditto. * ext/socket/ancdata.c (discard_cmsg): ditto. (make_io_for_unix_rights): ditto. * ext/socket/unixsocket.c (unix_recv_io): ditto. * ext/io/console/console.c (console_dev): ditto. [ruby-core:38140] [Feature #5041] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_check): should return nil until the childnobu2011-10-141-1/+1
| | | | | | terminates or stops. [ruby-dev:44600] [Bug #2642] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_update_max_fd): declaration moved fromakr2011-07-201-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | internal.h. * file.c: ditto. * io.c: call rb_update_max_fd for each new fds. * process.c: ditto. * random.c: ditto. * ruby.c: ditto. * ext/io/console/console.c: ditto. * ext/openssl/ossl_bio.c: ditto. * ext/pty/pty.c: ditto. * ext/socket/init.c: ditto. * ext/socket/socket.c: ditto. * ext/socket/ancdata.c: ditto. * ext/socket/unixsocket.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_check): Restore "not reached" comment.drbrain2011-05-311-1/+1
| | | | | | | [Ruby 1.9 - Bug #4756] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext: remove trailing spaces.nobu2011-05-221-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c: Improve documentaton. Patch by David Copeland.drbrain2011-05-221-29/+72
| | | | | | | [Ruby 1.9 - Bug #4756] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c: parenthesize macro arguments.akr2011-02-091-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (chfunc): suppress a warning.nobu2011-02-061-1/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (chfunc): Added rb_thread_atfork_before_exec().kosaki2010-12-251-0/+2
| | | | | | | | | We must reinitialize GVL when new process creation. Otherwise we may meet an insane deadlock. [Bug #4121][ruby-dev:42686] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (chfunc): pass through exceptions.nobu2010-09-021-25/+1
| | | | | | | | * io.c (rb_io_bufwrite, rb_io_bufread): added. * process.c (rb_fork_err): protect from exceptions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29171 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (chfunc): restore errno from SystemCallError andnobu2010-09-021-1/+7
| | | | | | propagate proper exception to the parent. [ruby-dev:41965] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (establishShell): chfunc must not raise anynobu2010-07-131-13/+19
| | | | | | | exceptions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * NEWS (ptr): new method and deprecated methods. [ruby-dev:41681]nobu2010-06-231-0/+9
| | | | | | | | | * ext/pty/{README,README.ja}: ditto. * ext/pty/pty.c (pty_check): add rdoc. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* update doc.akr2010-05-091-1/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* revert previous doc. change.akr2010-05-091-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* update doc.akr2010-05-081-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_open): refine the path for master IO.akr2010-03-011-2/+10
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26790 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (get_device_once): raise on error when fail isnobu2010-02-281-2/+2
| | | | | | | non-zero. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_check): needs WNOHANG to poll, return $?, andnobu2010-01-251-3/+3
| | | | | | | call raise_from_check() with pid_t. [ruby-dev:40141] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_getpty): check dup failure.akr2009-06-261-1/+23
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* update rdoc.akr2009-05-221-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (chfunc): type fixed.akr2009-02-051-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_run_exec_options_err): renamed fromakr2009-02-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rb_run_exec_options. (rb_exec_err): renamed from rb_exec. (rb_fork_err): renamed from rb_fork. (rb_spawn_err): renamed from rb_spawn. (rb_run_exec_options): declared with 1.9.1 compatible signature. (rb_exec): ditto. (rb_fork): ditto. (rb_spawn): ditto. * process.c (rb_run_exec_options_err): renamed from rb_run_exec_options. (rb_exec_err): renamed from rb_exec. (rb_fork_err): renamed from rb_fork. (rb_spawn_err): renamed from rb_spawn. (rb_run_exec_options): defined. (rb_exec): ditto. (rb_fork): ditto. (rb_spawn): ditto. * io.c: follow above change. * ext/pty/pty.c: follow above change. [ruby-dev:37893] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_fork): propagete an error message from child to parent.akr2008-12-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (rb_f_exec): show details of error in child process on exception. (save_redirect_fd): add error message arguments. (run_exec_dup2): ditto. (run_exec_close): ditto. (run_exec_open): ditto. (run_exec_dup2_child): ditto. (run_exec_pgroup): ditto. (run_exec_rlimit): ditto. (rb_run_exec_options): ditto. (rb_exec): ditto. (rb_exec_atfork): ditto. (rb_spawn_internal): ditto. (rb_spawn): ditto. (rb_f_system): follow arguments change. (proc_daemon): ditto. (rb_f_spawn): show details of error in child process on exception. * io.c (popen_exec): add error message arguments. (pipe_open): show details of error in child process on exception. * include/ruby/intern.h (rb_run_exec_options): add error message arguments. (rb_exec): ditto. (rb_fork): ditto. (rb_spawn): ditto. * ext/pty/pty.c (chfunc): add error message arguments. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* rdoc update.akr2008-12-181-3/+9
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* rdoc update.akr2008-12-171-9/+10
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/extconf.rb: check util.h for OpenBSD.akr2008-12-171-1/+19
| | | | | | | | * ext/pty/pty.c: include util.h if available. fix variable name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (getDevice): add nomesg argument.akr2008-12-161-67/+81
| | | | | | | | | | | (get_device_once): add nomesg argument. chmod slave tty to 0600 if nomesg. more error tests. (no_mesg): new function. (pty_open): make slave tty's mode 0600. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/extconf.rb: check posix_openpt.akr2008-12-161-5/+41
| | | | | | | | * ext/pty/pty.c (get_device_once): use posix_openpt if available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_open): set FMODE_SYNC and FMODE_DUPLEX.akr2008-12-151-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_open): new method PTY.open.akr2008-12-151-0/+62
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (get_device_once): use DEVICELEN instead ofakr2008-12-151-3/+3
| | | | | | | | sizeof SlaveName. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (chfunc): make it static.akr2008-12-151-1/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (child_info): add slavename.akr2008-12-151-1/+3
| | | | | | | | (chfunc): use slavename. (establishShell): set slavename. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (forked_child): new variable.akr2008-12-131-60/+82
| | | | | | | | | | | | | | | | (before_exec): don't call rb_thread_stop_timer_thread if forked_child. (after_exec): reset forked_child after rb_thread_start_timer_thread. (rb_fork): set forked_child just after fork in child. * ext/pty/pty.c (chfunc): extracted from establishShell. (establishShell): use rb_fork. [ruby-dev:37418] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (Init_pty): fix typo.mame2008-12-021-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (get_device_once): abandon asynchronous exceptionmatz2008-11-211-71/+46
| | | | | | | | | | | that might cause serious problem if a program terminated early. asynchronous exception is a very bad thing anyway. use Process.waitpid(pid) or PTY.check(pid) to poll program termination. if PTY.check is called with optional second argument being true, it raises an exception same as one from previous behavior. [incompatible] fix: [ruby-core:19583] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (pty_getpty): follow rb_io_t's path -> pathv change.akr2008-08-231-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (raise_from_wait, pty_syswait, get_device_once):nobu2008-07-121-3/+4
| | | | | | | constified. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (establishShell): handshaking before close slavenobu2007-08-071-1/+4
| | | | | | | device. [ruby-talk:263410] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): constified.nobu2007-08-071-34/+32
| | | | | | | | | * ext/pty/pty.c (SlaveName): removed static buffer. * ext/pty/expect_sample.rb: support for autologin. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby: moved public headers.nobu2007-06-101-8/+8
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * file.c, gc.c, io.c, ruby.h, rubyio.h, win32/win32.h (rb_io_t):nobu2007-02-241-1/+1
| | | | | | | | | | | renamed from OpenFile. * ext/dl/cptr.c, ext/io/wait/wait.c, ext/openssl/ossl.h, ext/openssl/ossl_bio.c, ext/openssl/ossl_ssl.c, ext/pty/pty.c, ext/readline/readline.c, ext/socket/socket.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e