Граф коммитов

1308 Коммитов

Автор SHA1 Сообщение Дата
akr e7f8c03818 * configure.in: check pipe2.
* io.c (rb_cloexec_pipe): use pipe2 if available.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 13:48:35 +00:00
akr 0d2a92e0b3 * include/ruby/intern.h (rb_cloexec_pipe): declared.
* io.c (rb_cloexec_pipe): new function.
  (rb_pipe): use rb_cloexec_pipe.

* thread_pthread.c (rb_thread_create_timer_thread): use
  rb_cloexec_pipe.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 12:13:05 +00:00
akr 6e0ed044b6 * io.c (rb_cloexec_dup): refine control flow.
(rb_cloexec_dup2): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 11:07:09 +00:00
nobu 54816d10eb * io.c (rb_cloexec_dup, rb_cloexec_dup2): CLOEXEC has been set if
dup3 succeeded.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 01:47:23 +00:00
akr f0b021c0ce * io.c (rb_cloexec_dup): don't allocate standard file descriptors.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33564 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 01:02:46 +00:00
akr e745a03cfa * io.c (rb_cloexec_dup2): don't set CLOEXEC for standard file
descriptors.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 23:30:34 +00:00
akr cb9f3040d7 * configure.in: check dup3.
* io.c (rb_cloexec_dup2): use dup3 if available.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33561 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 22:48:41 +00:00
akr 0a9cb21e62 * include/ruby/intern.h (rb_cloexec_dup2): declared.
* io.c (rb_cloexec_dup2): new function.
  (io_reopen): use rb_cloexec_dup2.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 13:11:01 +00:00
akr 54d7e82613 * io.c (rb_cloexec_dup): use F_DUPFD_CLOEXEC if available.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 11:59:46 +00:00
akr a9648d1e58 add a comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 11:58:30 +00:00
akr 4ae2b92576 * include/ruby/intern.h (rb_cloexec_dup): declared.
* 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
2011-10-29 11:02:32 +00:00
akr baa2d74dae * io.c (rb_cloexec_open): use O_CLOEXEC if available.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 05:27:32 +00:00
akr 3ae3cd741d * include/ruby/intern.h (rb_cloexec_open): declared.
* io.c (fd_set_cloexec): extracted from rb_fd_set_cloexec.
  (rb_cloexec_open): new function.
  (sysopen_func): use rb_cloexec_open.
  (rb_sysopen_internal): use rb_update_max_fd instead of
  rb_fd_set_cloexec.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 02:33:28 +00:00
akr b317a4cd28 * io.c: use "__sun" instead of "sun" to detect SunOS.
* dln.c: ditto.

* cont.c: ditto.

* ext/sdbm/_sdbm.c: ditto.

[ruby-dev:44693]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-24 13:49:58 +00:00
akr a28fe36c89 * io.c (copy_stream_fallback_body): check nil for EOF of read method.
patch by Eric Wong.  [ruby-core:39134] [Bug #5237]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-23 23:19:14 +00:00
akr e7ff29581b * io.c (rb_fd_set_cloexec): set close-on-exec flag only if F_GETFD is
defined.  reported by Luis Lavena.  [ruby-core:40281] [Bug #5470]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-22 23:03:02 +00:00
akr b574a4d4a1 * include/ruby/intern.h (rb_fd_set_cloexec): declared.
* 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
2011-10-22 09:58:15 +00:00
ktsj 02e4428ec5 * io.c: fix documentation of ARGF.lineno=.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-02 01:56:51 +00:00
nobu 8e6e8e6288 * use RB_TYPE_P which is optimized for constant types, instead of
comparison with TYPE.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29 11:07:45 +00:00
matz 1796817e46 * io.c (Init_IO): update BINARY comment. it should not change the
encoding of the result to ASCII-8BIT.  [ruby-talk:387719]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-12 20:38:17 +00:00
nobu 74f724de1a * io.c (argf_next_argv): open in default text mode.
[ruby-core:39234] [Bug #5268]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33171 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-03 14:52:18 +00:00
nobu 7dc7da3d86 * io.c (validate_enc_binmode, prep_stdio): default to text mode on
dosish platforms.  [ruby-core:38822] [Bug #5164]
* transcode.c (rb_econv_prepare_options): keep default ecflags
  unchanged if no options.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-02 12:11:17 +00:00
usa f9e9eee677 * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
[Bug #5153] [ruby-core:38736]

* io.c (argf_next_argv): remove the call of above function.

* ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
  extension module because this is only for testsing ruby_add_suffix().

* LEGAL: remove the mention about a part of util.c, because now we
  removed the part.

* io.c (argf_next_argv): now the new filename is not guranteed to
  use, so should check the return value of rename(2).

* test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
  now we expect same result with other platforms on no_safe_rename
  platforms (=Windows).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-03 07:10:56 +00:00
nobu f46cff647e * io.c (rb_pipe): pipe on cygwin can succeed half but fail
half.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-31 09:59:01 +00:00
naruse 4ac69a57b5 * io.c (rb_io_each_byte): remove unused variable e.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-30 16:31:36 +00:00
nobu 321346cfa5 * io.c (rb_io_each_byte): rbuf can be refreshed during yield.
[Bug #5119]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-30 14:14:46 +00:00
akr 2bcd502a71 * io.c (rb_update_max_fd): validate fd.
* ext/socket/rubysocket.h (rsock_discard_cmsg_resource): add
  msg_peek_p argument for the declaration.

* ext/socket/ancdata.c (discard_cmsg): add msg_peek_p argument.
  assume FreeBSD, NetBSD and MacOS X doesn't generate passed fd
  when MSG_PEEK. 
  (rsock_discard_cmsg_resource): add msg_peek_p argument.
  (bsock_recvmsg_internal): call rsock_discard_cmsg_resource with
  msg_peek_p argument.

* ext/socket/unixsocket.c (unix_recv_io): call
  rsock_discard_cmsg_resource with msg_peek_p argument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-23 08:13:37 +00:00
kazu 55b0c9fb6c * io.c (rb_update_max_fd): remove parentheses. they are not in macro.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-20 15:00:00 +00:00
akr b41ccc4a9c * include/ruby/intern.h (rb_update_max_fd): declaration moved from
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
2011-07-20 13:26:10 +00:00
akr b1c03685bc * io.c (UPDATE_MAXFD): removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-19 07:27:26 +00:00
akr 2c7576a021 * io.c (rb_update_max_fd): new function.
* internal.h (rb_update_max_fd): declare rb_update_max_fd.

* thread_pthread.c (rb_thread_create_timer_thread): update max fd when
  timer thread pipe is created.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-19 07:10:19 +00:00
usa f15d0deaaf * win32/win32.c, include/ruby/win32.h (rb_w32_io_cancelable_p): renamed
from rb_w32_has_cancel_io().  now it takes a parameter as fd to check
  the fd is console or not, because we cannot cancel console input even
  if we have cancel_io function.

* io.c (WAIT_FD_IN_WIN32): call above function instead of the old one,
  so now we can kill the thread which calls STDIN.gets.
  the problem was reported by ko1 vir IRC.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-15 05:33:45 +00:00
drbrain 0c3833ec5a * io.c: Note that methods other than IO#gets may increase IO#lineno.
[Ruby 1.9 - Bug #4902]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-09 00:21:44 +00:00
nobu dc3697f62f * io.c (rb_io_close): close(2) on a fd which is being read by
another thread causes deadlock on Mac OS X 10.5

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 23:37:08 +00:00
ko1 eb35bb0b35 * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p,
RB_RESERVED_FD_P): added.  This C API is to limit to access
  fds which are used by RubyVM internal.  In this version of
  CRuby, return 1 if fd is communication pipe.
  If your application needs to close all file descriptors to
  preent resource leak, skip internal fds using this C API.
  We also define a macro RB_RESERVED_FD_P(fd).  So you can write
  #ifndef RB_RESERVED_FD_P
  #define RB_RESERVED_FD_P(fd) 0
  #endif
  for Ruby 1.9.2 or previous version to write compatible extensions.
  See [ruby-core:37727]
* thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
* io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-03 21:56:59 +00:00
drbrain 926301969f * math.c: Attach documentation for Math.
* object.c:  Document NIL, TRUE, FALSE.
	* io.c:  Improve grammar in ARGF comment.  Document STDIN/OUT/ERR.
	  Document ARGF global constant.
	* lib/rake:  Hide deprecated toplevel constants from RDoc (import from
	  rake trunk).
	* lib/thwait.rb:  Document ThWait.
	* lib/mathn.rb:  Hide Math redefinition from RDoc
	* lib/sync.rb:  Add a basic comment for Sync_m, Synchronizer_m, Sync,
	  Synchronizer.
	* parse.y:  Document SCRIPT_LINES__.
	* hash.c:  Document ENV class and global constant.
	* vm.c:  Document TOPLEVEL_BINDING.
	* version.c:  Document RUBY_* constants.
	* ruby.c:  Document DATA and ARGV.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 03:09:34 +00:00
nobu 6effaa9a13 * io.c (fill_cbuf): finish reading at EOF, and the readconv has
been cleared by another thread while io_fillbuf() is waiting at
  select().  a patch in [ruby-core:37197] by Hiroshi Shirosaki
  <h.shirosaki AT gmail.com>.  fixed #3840

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 15:00:00 +00:00
akr 8192693ccf * io.c: supress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32159 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 02:10:09 +00:00
akr e7996eb3cc * internal.h: declare internal functions here.
* node.h: declare NODE dependent internal functions here.

* iseq.h: declare rb_iseq_t dependent internal functions here.

* vm_core.h: declare rb_thread_t dependent internal functions here.

* bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
  enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
  iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
  proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
  thread.c, time.c, transcode.c, variable.c, vm.c,
  tool/compile_prelude.rb: don't declare internal functions declared
  in above headers.  include above headers if required.

  Note that rb_thread_mark() was declared as
  void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
  void rb_thread_mark(void *ptr) in vm.c.  Now it is declared as
  the later in internal.h.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-17 22:43:38 +00:00
drbrain 2adddf4c2b * io.c: Improve documentation of IO and File open and new.
Patch by Roger Pack.  [Ruby 1.9 - Bug #4790]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-16 23:50:30 +00:00
akr 60e078c860 * io.c: use select() appropriately for sendfile().
Fixed by Eric Wong.  [ruby-core:36150]
  (maygvl_copy_stream_wait_readwrite): removed.
  (nogvl_copy_stream_sendfile): use nogvl_copy_stream_wait_write and
  maygvl_copy_stream_wait_read instead of
  maygvl_copy_stream_wait_readwrite.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32019 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-12 02:18:51 +00:00
nobu 34b19050b3 * io.c (io_getc): should be 7bit if ascii. fixes #4557
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-11 09:02:11 +00:00
akr 87f025da25 * io.c: fix IO.copy_stream interrupt handling.
based on the patch by Eric Wong.  [ruby-core:36156]

* vm_core.h (rb_thread_call_with_gvl): don't declare here.

* thread.c: include internal.h.
  (rb_thread_execute_interrupts): new function.

* internal.h (rb_thread_execute_interrupts): declared.
  (rb_thread_call_with_gvl): declared.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-09 15:02:46 +00:00
usa 19c78f9b9b * io.c (io_fflush): windows -- call fsync() only when the FD is tied to
file, because if the FD is pipe, it blocks.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-03 10:59:37 +00:00
usa fd8010fc0a * io.c (rb_io_s_write, rb_io_s_binwrite): return!!!
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-02 11:06:40 +00:00
sorah 7b3948f055 * io.c: Add File.write, File.binwrite. [Feature #1081] [ruby-core:21701]
* test/ruby/test_io.rb: Test for File.write, File.binwrite.

* NEWS: News for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-02 07:30:11 +00:00
usa 2b0363df5d * io.c (io_flush, rb_io_flush): need to fsync() when ruby calls internal
flush. [ruby-core:36670] [Bug #4813]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-02 03:35:40 +00:00
ryan 38de163f1e doco: p outputs newline regardless of record separator
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-01 00:48:09 +00:00
nobu fcc86b0f4c * io.c (io_encoding_set): should honor already set ecflags since it
might be set by mode option.  fixed #4804

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-31 16:15:15 +00:00
nobu a010ea9a45 no space inside parens
* io.c: remove spaces before closing parens.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-31 15:05:09 +00:00
usa da1db8b454 * io.c (rb_io_s_pipe): potential bug. the mode of read IO is set as
DEFAULT_TEXTMODE in call of io_set_encoding(), and of write IO is
  also set as it in call of io_new_instance() via rb_protect().
  so, if DEFAULT_TEXTMODE is not 0, we should check the result of
  extract_binmode() and avoid crush of default IO mode and the result.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-31 05:21:36 +00:00
naruse 9efb5a9d6a * io.c (fill_cbuf): return MORE_CHAR_SUSPENDED when cbuf is not empty.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-27 18:06:42 +00:00
kosaki 78271e8c72 * io.c (fill_cbuf): Fix test-all crash.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-27 17:09:27 +00:00
nobu b5bc09d234 * io.c (validate_enc_binmode): do not clear textmode flag if
default.  fixed #4732

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-27 13:45:12 +00:00
nobu 9909c67583 * io.c (fill_cbuf): finish reading at EOF.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-27 13:38:56 +00:00
kosaki 67cf354b46 * io.c (rb_io_extract_modeenc): accept combination hash and
File::Constants. (eg. File.open('yo', :mode => File::WRONLY))
  [Feature #4742][ruby-core:36338]
* test/ruby/test_io.rb (TestIO#test_open_mode): new test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-21 13:20:43 +00:00
kosaki 898374126e revert O_CLOEXEC patch series completely.
because boron chkbuild test result says, An old linux kernel ignore O_CLOEXEC
silently instead of return an error. It may lead to bring new security risk.
So, we have to be pending it until finish to implement proper fallback logic.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-19 12:18:41 +00:00
nobu 3a47cf3395 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-15 11:55:52 +00:00
kosaki 836a8cf214 * io.c (select_internal): remove unused variable (interrupt_flag).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-12 17:16:21 +00:00
kosaki be62297f92 * io.c (Init_IO): Added File::CLOEXEC constant. [ruby-core:22893] [Feature #1291]
* test/ruby/test_io.rb (TestIO#test_o_cloexec): test for File::CLOEXEC.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 11:29:24 +00:00
kosaki d7fa4d837e * io.c (rb_f_select): remove useless ifdef.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 02:54:34 +00:00
kosaki 9be37ca7d5 * thread.c (rb_wait_for_single_fd): new.
* thread.c (select_single): select(2) based backend for rb_wait_for_single_fd().

* io.c (make_writeconv): use rb_wait_for_single_fd() instaed of
  rb_thread_fd_select().
* io.c (rb_io_wait_readable): ditto.
* thread.c (rb_thread_wait_fd_rw): ditto.

* io.c (wait_readable): removed.
* thread.c (init_set_fd): new helper function.
* include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
  new constant for rb_single_wait_fd().

The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 00:59:57 +00:00
kosaki 2d2544c8e6 * include/ruby/intern.h (rb_thread_select): mark as deprecated.
* ext/io/wait/wait.c (wait_readable): use rb_thread_fd_select
  instead of rb_thread_select.
* ext/socket/init.c (wait_connectable0): ditto.
* ext/readline/readline.c (readline_event): ditto.
* io.c (rb_io_wait_readable, wait_readable, rb_io_wait_writable,
  wait_writable): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-30 11:15:15 +00:00
kosaki 98c7ca9b65 * io.c (copy_stream_body, rb_io_s_copy_stream): move rb_fd_init()
from copy_stream_body to rb_io_s_copy_stream. fds of passing
  rb_fd_term() have to be guaranteed initialized.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-30 07:30:45 +00:00
nobu 85c1d5d41d * io.c (make_writeconv): do not add textmode newline decorator if any
newline decorator is set already.  fixes #4618, fixes #4619

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-29 01:24:54 +00:00
nobu 9c48e59907 * io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
mode.  fixes #4619
* io.c (pipe_open): set universal newline decorator if needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-27 21:06:59 +00:00
nobu 8761467727 * io.c (validate_enc_binmode, rb_io_extract_modeenc): set newline
decorator according to open mode.
* transcode.c (rb_econv_prepare_options): new function, to prepare
  econv options with newline flags.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-26 15:55:21 +00:00
kazu fb7f3bf37c * io.c (rb_f_syscall): reduce warning: "HAVE___SYSCALL" is not defined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-14 07:02:54 +00:00
kazu c5a284aa17 * io.c (rb_io_fdatasync): remove unused variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-13 11:22:34 +00:00
kosaki 0f771e33e2 * io.c: revert r31230.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-11 12:52:22 +00:00
kosaki 3ba502d5f0 * io.c (rb_io_syswrite): While local FS writes are usually
buffered, the buffers can be full or the file opened with
  O_SYNC. IO#syswrite can also be used on blocking IOs
  (pipe/socket) just like IO#write.
  The patch is written by Eric Wong. [ruby-core:35554]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-04 12:43:28 +00:00
kosaki f4755f214c * configure.in: disable fdatasync again on Mac OS X.
[ruby-core:35493][Bug #4500]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-03 12:35:29 +00:00
kosaki f35a7770cd * io.c (io_reopen): IO#close releases GVL if possible.
close() may block for certain file types (NFS, SO_LINGER
  sockets, inotify), so let other threads run. The patch was
  created by Eric Wong [ruby-core:35555][Bug #4527]

* io.c (fptr_finalize): ditto.

* io.c (maygvl_fclose): new.
* io.c (nogvl_fclose): ditto.
* io.c (maygvl_close): ditto.
* io.c (nogvl_close): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-03 12:23:59 +00:00
kosaki b2a8d109b6 * io.c (io_cntl): use rb_thread_io_blocking_region() instead
rb_thread_blocking_region().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-05 18:23:55 +00:00
kosaki c0359f8176 * io.c (io_cntl, nogvl_io_cntl): IO.fcntl() and IO.ioctl()
release GVL during calling kernel interface.
  Suggested by Eric Wong. [ruby-core:35417][Bug #4463]

* test/ruby/test_io.rb (TestIO#test_fcntl_lock): add new test for
  IO.fcntl().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-04 16:38:34 +00:00
kosaki ff07709777 * io.c (io_cntl): change 'cmd' type to int. ioctl and fcntl need to
be passed int.
* io.c (rb_io_ctl): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-04 13:02:45 +00:00
nobu e7c0a6e1d7 * prevent temporary objects from GC, and should not use
RSTRING_PTR() for function calls since it evaluates the argument
  a couple of times.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-20 07:23:55 +00:00
nobu 58b325366d * thread.c (rb_thread_io_blocking_region): new function to run
blocking region with GIL released, for fd.
* thread.c (rb_thread_fd_close): implement.  [ruby-core:35203]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-12 05:44:23 +00:00
kosaki 0559227e87 * io.c (rb_io_s_sysopen): use NUM2MODET() instead NUM2UINT().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-08 07:04:45 +00:00
kosaki 3722e3a29a * io.c (rb_io_fdatasync): Use fsync(2) if if the underlying
operating system does not support fdatasync(2).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-02 08:11:29 +00:00
kanemoto 2a5177e757 io.c (struct argf): char behaves like an unsigned char by default on AIX.
http://publib.boulder.ibm.com/infocenter/comphelp/v111v131/index.jsp?topic=/com.ibm.xlcpp111.aix.doc/language_ref/ch.html


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-30 01:02:46 +00:00
kosaki 4afa5fead8 * io.c (rb_io_open): Use NUM2MODET() instead NUM2UINT().
* io.c (rb_scan_open_args): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-28 02:23:58 +00:00
nobu 7909af18ed * io.c (argf_next_argv): go advance when the next file cannot be
read.  [ruby-core:34446]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-13 22:30:50 +00:00
kosaki b1f8bbf4f7 * io.c (rb_f_syscall): Add warning messages. [ruby-core:34062]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-12 14:22:39 +00:00
kosaki da235830b5 * io.c (rb_f_syscall): Some syscall return unsigned or pointer value.
Therefore we should only check the result is -1 or not. [ruby-core:34062]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-12 14:16:01 +00:00
kosaki caab5dcee7 * io.c (rb_f_syscall): Add 64bit Linux support. Some syscall takes
long type arguments.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-12 14:11:06 +00:00
yugui 45493bb28a * io.c (Kernel.#syscall): implemented on LP64/LLP64 environments too.
also uses __syscall if available for *BSD on 64bit architecture.
  [ruby-core:34062]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-09 07:39:22 +00:00
akr d3b337c58d fix spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-08 13:07:20 +00:00
nobu ae167e1e79 * io.c (maygvl_copy_stream_wait_readwrite): define if USE_SENDFILE
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-29 12:20:16 +00:00
kazu 1f4401ebe0 fix a typo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-27 22:27:13 +00:00
kosaki 085e40d45b * io.c (advice_arg_check): Change argument check.
Now, an unsupported advice makes NotImplementedError.
    [ruby-dev:42887] [Ruby 1.9-Feature#4204]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-25 17:25:02 +00:00
kosaki c9958d6ab4 * io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
GVL at new process creation.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-25 10:22:48 +00:00
nobu 522c538e93 * io.c (rb_io_extract_encoding_option): accept Encoding object as
encoding: optional argument.  [ruby-dev:42884]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-25 05:27:12 +00:00
tarui da4d3e8464 * io.c : add an extra byte to buffer for the specification of read
in Windows. see [ruby-core:33460] and r29980. and, we have to
	  discuss how to do this one byte.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-20 16:45:08 +00:00
kosaki a3ba982c75 * io.c (Init_IO): Added O_DIRECT. This feature was propsed by Run Paint Run Run.
[Feature #4015] [ruby-core:33018]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-19 16:18:16 +00:00
nobu 2d39e5265f * io.c: removed garbage line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-16 22:08:50 +00:00
nobu 594ab9c8fd * io.c (rb_io_advise): removed unused variable, and fix indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-16 22:06:33 +00:00
kosaki 39058e1d87 Fix indentation
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-16 15:36:49 +00:00
kosaki cc9b886691 * io.c (rb_io_advise): New API. IO#advise() allows to tell the
ruby runtime how it expects to use a file handle. This feature
          can be improved a performance some situations.
          Note: This feature is mainly developed by Run Paint Run Run.
          Thank you! [ruby-core:33110] [Ruby 1.9-Feature#4038]

        * io.c (do_io_advise): Helper function.
        * io.c (io_advise_sym_to_const): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-16 15:01:55 +00:00
akr e5ad455a08 * io.c: parenthesize macro arguments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-16 12:53:09 +00:00
nobu b2c7ef2f76 * io.c (nogvl_copy_stream_sendfile): fix missing condition.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-15 02:22:08 +00:00
nobu eb36519b96 * io.c (simple_sendfile): enable on Mac OS X.
* io.c (nogvl_copy_stream_sendfile): moved precheck of copy length.
* io.c (nogvl_copy_stream_sendfile): should wait for both of
  read/write fds.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30215 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-15 02:07:37 +00:00
naruse bdd3f75598 * io.c (simple_sendfile): improve linux compatibility on FreeBSD,
and now it works. But without cpuset -l 0, it still gets stuck.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-14 15:01:32 +00:00
naruse 903538cbb3 * io.c (simple_sendfile): disable the use of sendfile(2) on
FreeBSD. It blocks on TestIO#test_copy_stream_socket.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-13 12:28:09 +00:00
naruse 7d481b5423 * io.c: define USE_SENDFILE on FreeBSD or DragonFly BSD.
Remove Mac OS X because its argument is different from them.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-13 09:37:09 +00:00
naruse b36c91b6b5 * io.c (simple_sendfile): added for BSD version of sendfile(2).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-13 02:34:50 +00:00
tarui 9865ee2c46 * io.c (io_read): duplicate string if shared. [ruby-dev:42719]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-07 13:38:36 +00:00
nobu bc8b100873 * io.c (struct argf): make lineno long, and reorder members.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-28 05:56:39 +00:00
luislavena ac0f5a53b6 * io.c (io_fwrite): use rb_w32_write_console under Windows.
* win32/win32.c (rb_w32_write_console): added to write to write
    Unicode using WriteConsoleW for stdout/stderr. [ruby-core:33166]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-27 19:49:58 +00:00
nobu c6e4767068 * include/ruby/io.h (rb_io_buffer_t): extract from rb_io_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-18 13:58:47 +00:00
nobu f2dd4eb3cc * io.c (argf_readlines): forward to current_file for arguments
check.  http://twitter.com/nagachika/status/3634254856589312


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-14 03:05:29 +00:00
nobu a77d2ac5ba * io.c (argf_close): untie tied io before closing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11 14:03:17 +00:00
nobu 41131d4215 * io.c (argf_write): add ARGF.write and so on.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11 12:56:16 +00:00
nobu b3dcfcf22b * io.c (argf_read_nonblock): add ARGF.read_nonblock.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29751 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11 12:52:18 +00:00
nobu db0ebb32c9 * io.c (pipe_finalize): status is success if no process.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11 12:26:30 +00:00
nobu ee388f6ee2 * io.c (rb_io_readlines, rb_io_each_line): limit must not be zero.
a patch from Tomoyuki Chikanaga at [ruby-dev:42538].  #4024

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-04 15:39:07 +00:00
naruse f1dc85e237 * io.c (rb_f_select): change rdoc.
patched by Eito Katagiri [ruby-core:31805]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-21 07:09:17 +00:00
naruse d835a87cc1 * io.c (rb_f_select): add correct rdoc.
patched by Dave Thomas [ruby-core:32467]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-21 06:51:49 +00:00
nobu a176b065d2 * io.c (rb_io_ctl), parse.y (LVAR_USED): suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 15:10:04 +00:00
naruse b487f7881f * io.c (rb_io_ungetc): always see Bignum. On 32bit valid value
may be a Bignum. On 64bit for errors. [ruby-dev:42366]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 09:30:42 +00:00
naruse 7587eb706a * io.c (rb_io_ungetc): use unsigned int for GB18030.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 06:37:27 +00:00
naruse 0a8f047a98 * io.c (rb_io_putc): support multibyte characters.
[ruby-core:30697]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 06:18:11 +00:00
naruse e1646652e7 * io.c (rb_io_set_encoding): use rb_funcall2 when the io is not
a T_FILE. [ruby-dev:42356]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-10 21:29:29 +00:00
nobu 915ae780c3 * io.c (fptr_finalize): write_mutex might have been destroyed
already in finalization phase, as the order of finalizers is not
  guaranteed.  rb_mutex_t should be used in place of Mutex object
  in the future.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-06 02:52:26 +00:00
nobu 61ee785c61 * io.c (rb_io_puts): fix for wide char encoding strings.
[ruby-dev:42212]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-15 00:12:05 +00:00
knu 82abe79b9f * class.c (rb_scan_args): Add support for optional keyword
argument hash.

* README.EXT, README.EXT.ja: Update documentation accordingly.

* dir.c (dir_initialize): Make use of the new rb_scan_args()
  feature.

* io.c (rb_io_s_popen, rb_scan_open_args, rb_io_initialize)
  (rb_io_s_pipe, open_key_args, io_s_foreach, io_s_readlines)
  (rb_io_s_read, rb_io_set_encoding): Ditto.

* transcode.c (str_transcode, econv_args)
  (econv_primitive_convert): Ditto.

* ext/zlib/zlib.c (rb_gzreader_initialize): Ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-10 07:51:58 +00:00
nobu aa5c05b8ba * ext/pty/pty.c (chfunc): pass through exceptions.
* 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
2010-09-02 21:40:55 +00:00
nobu 909477ec1d * file.c (null_device): move from io.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-27 06:26:41 +00:00
nobu 3e5e1b6c45 * io.c (null_device): the name of null device. [ruby-dev:41791]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-27 03:25:08 +00:00
nobu dccf9e0c45 * configure.in, include/ruby/defines.h (RUBY_FUNC_EXPORTED): macro
to declare exported function.

* array.c (rb_ary_memsize), string.c (rb_str_memsize),
  variable.c (rb_objspace_data_type_memsize): used in
  objspace.  [ruby-dev:42022]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-14 06:33:06 +00:00
nobu a23b1f7450 * io.c (rb_io_memsize): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-14 06:19:57 +00:00
akr 8488b62d59 update doc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-07 23:30:45 +00:00
nobu a3419bc919 * io.c (io_flush_buffer): write and buffer operations should be
monolithic.  [ruby-core:31348]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-20 03:50:41 +00:00
akr 5bf4c6a635 * io.c (nogvl_copy_stream_sendfile): jump to retry_sendfile directly
to avoid select() on a socket which TCP state is CLOSED.
  patch by Eric Wong.  [ruby-core:31053]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-06 13:59:12 +00:00
nobu 6fb59decd0 * io.c (swallow, prepare_getline_args, rb_io_getline_1): fix for
paragraph mode reading in non-ascii-compatible encoding.
  [ruby-dev:41803]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-04 08:13:15 +00:00
usa 09ee12bb20 * io.c (argf_inplace_mode_set): prohibits an assignment of a tainted
value.

* file.c (ruby_find_basename, ruby_find_extname): split from
  rb_file_s_basename() and rb_file_s_extname().

* util.c (ruby_add_suffix): support arbitrary length of the suffix
  to get rid of the potential buffer overflow.
  reported by tarui.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-02 14:31:26 +00:00
nobu a67f1a9534 * include/ruby/io.h, io.c: reverted r21709.
* ruby.c (load_file_internal): nothing to read if EOF reached
  while reading shebang.  [ruby-core:30910]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-27 14:31:19 +00:00
akr d9edd4ca87 * io.c (simple_sendfile): don't try to send data more than SSIZE_MAX
with single sendfile call..
  based on the patch by Eric Wong.  [ruby-core:30908]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-27 04:30:31 +00:00
nobu 6e708d72bb * io.c (argf_next_argv): check for setting owner/group.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-22 21:43:02 +00:00
marcandre fde37bb6e3 * io.c: rdoc fix for ARGF.lineno; cf. [ruby-core:29048]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-22 05:45:22 +00:00
matz 622fb1ca50 * io.c (rb_f_syscall): should check argument string taint before
invoking system calls.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-12 01:05:20 +00:00
matz 020bd635ac * io.c (rb_io_putc): documentation updated to mention putc would
not work well with multi-byte characters.  [ruby-core:30697]

* io.c (rb_f_putc): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-10 00:11:26 +00:00
nobu c9331864f8 * io.c (parse_mode_enc): set set_by_bom bit. [ruby-core:30641]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-07 21:04:56 +00:00
tarui f8bdd8dd08 * io.c (pipe_open): add RB_GC_GUARD.
This caused failure when test/ruby/test_argf.rb is executed with
	  GC.stress = true in mswin32_90


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28114 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-31 16:16:39 +00:00
nobu 45f6fbf339 * removed trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-29 18:51:39 +00:00
marcandre c5b5ab0935 * enum.c: Documentation: small fixes
* file.c: ditto

* io.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-17 21:51:01 +00:00
marcandre c1ecff1b1e * hash.c: Documentation: change => in call-seq to ->.
* enum.c: Documentation: whitespace fix for r27865

* error.c: ditto

* file.c: ditto

* io.c: ditto

* load.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-17 21:31:22 +00:00
marcandre 7729de4d91 * array.c: Documentation: change => in call-seq to ->.
Harmonize "#=>" in examples. [ruby-core:30206]

* bignum.c: ditto

* class.c: ditto

* compar.c: ditto

* cont.c: ditto

* dir.c: ditto

* encoding.c: ditto

* enum.c: ditto

* enumerator.c: ditto

* error.c: ditto

* eval.c: ditto

* file.c: ditto

* gc.c: ditto

* io.c: ditto

* load.c: ditto

* marshal.c: ditto

* math.c: ditto

* numeric.c: ditto

* object.c: ditto

* pack.c: ditto

* proc.c: ditto

* process.c: ditto

* random.c: ditto

* range.c: ditto

* re.c: ditto

* ruby.c: ditto

* signal.c: ditto

* sprintf.c: ditto

* string.c: ditto

* struct.c: ditto

* thread.c: ditto

* time.c: ditto

* transcode.c: ditto

* variable.c: ditto

* vm_eval.c: ditto

* vm_method.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-17 21:07:33 +00:00
usa daac3ed0b4 * io.c (swallow): should use more_char() instead of fill_cbuf().
suggested by akr.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27782 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 09:16:32 +00:00
marcandre 4afa9ed041 * array.c: Harmonize documentation, in particular regarding:
- methods returning enumerators
    - array methods and argument naming (array -> ary, an_array -> new_ary)
    - minor improvements, typo fixed and styling issues

  Other documentation errors fixed:
    - return value was self instead of a new array (or vice-versa) for
      Array#{pop,shift,permutation,repeated_permutation,keep_if}
    - Array#rindex was missing the form with a block.

* dir.c: ditto.

* enum.c: ditto. Modified Enumerable#reverse_each' documentation to clarify
  that #each will be finish before any element is yielded.

* error.c: ditto.

* gc.c: ditto.

* hash.c: ditto.

* io.c: ditto. IO#{codepoints,each_codepoint} fixed as per [ruby-core:23948]

* numeric.c: ditto.

* range.c: ditto.

* string.c: ditto.

* struct.c: ditto.

* vm_eval.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 05:49:55 +00:00
usa 44d8ab7203 * io.c (swallow): small optimize.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 04:03:01 +00:00
usa ef7992801d * io.c (swallow): support text mode and UTF-16/32 as internal encoding.
* io.c (io_shift_cbuf): read and throw it away when str is NULL.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27768 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 03:55:19 +00:00
usa fe0d339c2c * win32/win32.c, include/ruby/win32.h (rb_w32_has_cancel_io): new
function.

* io.c (WAIT_FD_IN_WIN32): check only when it's not cancelable.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27718 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-10 05:02:44 +00:00
kazu 81f4dba385 * io.c (nogvl_copy_stream_sendfile): ISO C90 forbids mixed declarations and code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-08 22:13:02 +00:00
marcandre 1dee5e34a3 * error.c: RDoc for subclasses of Exception. [ruby-core:28394]
* cont.c: ditto

* enumerator.c: ditto

* io.c: ditto

* math.c: ditto

* numeric.c: ditto

* proc.c: ditto

* re.c: ditto

* thread.c: ditto

* transcode.c: ditto. Thanks to Run Paint for some of the documentation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-08 04:50:09 +00:00
naruse e6ccffd966 Add rdoc about IO#read(length). [ruby-core:29161]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-03 22:17:49 +00:00
usa 6c28f99d88 * merge some patches from win32-uncode-test branch.
see #1685.

* file.c, include/ruby/intern.h (rb_str_encode_ospath): new function
  to convert encoding for pathname.

* win32.c, include/ruby/win32.h (rb_w32_ulink, rb_w32_urename,
  rb_w32_ustati64, rb_w32_uopen, rb_w32_uutime, rb_w32_uchdir,
  rb_w32_umkdir, rb_w32_urmdir, rb_w32_uunlink): new functions to
  accept UTF-8 path.

* win32/win32.c (rb_w32_opendir, link, rb_w32_stati64, rb_w32_utime,
  rb_w32_unlink): use WCHAR path internally.

* file.c (rb_stat, eaccess, access_internal, rb_file_s_ftype,
  chmod_internal, rb_file_chmod, rb_file_chown, utime_internal,
  rb_file_s_link, unlink_internal, rb_file_s_rename): use UTF-8 version
  functions on Win32.

* file.c (apply2files, rb_stat, rb_file_s_lstat, rb_file_symlink_p,
  rb_file_readable_p, rb_file_writable_p, rb_file_executable_p,
  check3rdbyte, rb_file_identical_p, rb_file_chmod, rb_file_chown,
  rb_file_s_link, rb_file_s_symlink, rb_file_s_rename): call
  rb_str_encode_ospath() before passing the path to system.

* io.c (rb_sysopen): ditto.

* dir.c (dir_chdir, dir_s_mkdir, dir_s_rmdir): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-30 17:56:23 +00:00
nobu bfeeb913fe * io.c (seek_before_access): fixed argument type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-30 17:22:32 +00:00
nobu 55181301ae * io.c (seek_before_access): renamed. see [ruby-core:29861].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-29 02:20:58 +00:00
nobu e1c34852dc * io.c (rb_io_s_binread): fixed rdoc. parts of a patch from Roger
Pack in [ruby-core:29861].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-29 02:17:12 +00:00
akr 87ba383aa3 * io.c (select_internal): IO which cbuf is not empty is readable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-26 21:21:07 +00:00
nobu 8ebadc63f4 * io.c (ruby_dup): update max fd.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-25 14:50:10 +00:00
akr ba2ee2f04c update doc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-24 12:00:56 +00:00
akr 02efdb4845 update document.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-24 06:05:34 +00:00
akr 78db46b31c * io.c: raise IOError when byte oriented operations occur with
non-empty character buffer.
  [ruby-dev:40493] [ruby-dev:40506]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-24 05:42:50 +00:00
naruse 4131d6176a * io.c (io_getc): fix incomplete character immediately before EOF
with newline converter. [ruby-dev:41024]
  run test only when "Create Shortcut (&S)" menu is found.
* lib/rexml/parsers/xpathparser.rb (PathExpr): ditto.
* lib/matrix.rb (Vector#each): make Vector enumerable.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-21 06:37:18 +00:00
naruse 8a269f85a0 * io.c (io_getc): set read_encoding to resulted one character
string. [ruby-dev:41023]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-20 18:19:01 +00:00
usa ef3ea2dd89 * io.c: fixed the wrong description of rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-20 13:53:08 +00:00
usa 57e50f7f88 * io.c: rdoc. see [ruby-dev:40506].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-20 13:40:15 +00:00
nobu a91d8b8c33 * io.c (internal_{read,write}_func, rb_{read,write}_internal):
reverted r27265, since now rb_thread_blocking_region() preserves
  errno.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-19 15:41:27 +00:00
mame d6f289b0ff * io.c (rb_io_rewind, rb_io_eof): add rdoc. based on a patch from
Roger Pack in [ruby-core:26771] [Bug #2377].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-16 16:36:08 +00:00
nobu 8e7a682be0 * io.c (io_shift_cbuf): should terminate.
http://golf.shinh.org/p.rb?DECimal+number+to+BINary#Ruby


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-14 08:56:11 +00:00
kazu 0a6d09330c * io.c (rb_io_getline_fast, rb_io_getline_1): fix ARGF.lineno behavior. [ruby-core:25205]
* test/ruby/test_argf.rb (TestArgf#test_lineno3): add a test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-11 15:56:43 +00:00
nobu 92de2ed517 * io.c (internal_{read,write}_func, rb_{read,write}_internal):
preserve errno.  a patch from Takehiro Kubo in [ruby-core:29340].
  [ruby-core:28924]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-08 16:27:42 +00:00
nobu 171131061e * io.c (rb_io_initialize): fixed a rdoc miss that textmode and
bimode flag explanation was reversed each other.  a patch from
  Heesob Park in [ruby-core:29166].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27136 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01 02:36:33 +00:00
nobu ed2dd5e3f4 * io.c (rb_io_initialize): add autoclose argument to control close
at finalization.  [ruby-core:26222]

* io.c (rb_io_autoclose_p, rb_io_set_autoclose): new methods.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-21 10:52:31 +00:00
nobu cce4892c1f * io.c (IO_RBUF_CAPA_FOR): use large buffer as cbuf if readconv is
needed for performance improvement.  based on a patch by Roger Pack
  in [ruby-core:28163].  [ruby-core:28162]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26997 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-21 08:57:55 +00:00
nobu f623979f65 * io.c (IO_[CRW]BUF_CAPA_MIN): replaced magic numbers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26994 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-21 00:43:07 +00:00
matz 01657b51f8 * io.c (rb_io_print): RDoc update. a patch from Daniel Kelley
in [ruby-core:28643].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-15 08:43:45 +00:00
nobu 32ed00ab18 * io.c (rb_io_each_codepoint): read directly when readconv is
needed but internal encoding is not set.  [ruby-core:28650]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-14 19:41:32 +00:00
matz 05d4516145 * io.c (rb_io_print): should not print field separator at the end
of arguments.  [ruby-talk:358633]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-13 06:59:37 +00:00
marcandre 51ae7f6e9a * io.c: Fix documentation for each/each_line/lines, bytes/each_byte,
codepoints/each_code_point [ruby-core:23948]

* string.c: ditto

* ext/stringio/stringio.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-07 10:22:05 +00:00
mame e796e95ec8 * io.c (rb_io_s_write, rb_io_s_binwrite): delete File#write and
#binwrite.  It may take a long time to make them stable, so 1.9.2
  should not include them.  We need refactoring to implement them
  again.

* test/ruby/test_io.rb: delete tests for them.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-06 04:52:31 +00:00
mame 127cfd1174 * io.c (rb_io_s_binwrite): use mode "r+b" instead of "ab" to handle
offset correctly.  [ruby-core:28517]

* test/ruby/test_io.rb: use assert_equal instead of assert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-06 01:06:57 +00:00
nobu 4bcae18e37 * io.c (pipe_open): suppressed a warning.
* win32/win32.c (rb_w32_map_errno, winnt_stat, rb_chsize): ditto.

* win32/win32.c (rb_w32_aspawn): get rid of overflow.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26822 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-05 08:51:12 +00:00
mame ae2065a285 * io.c (io_s_write, io_s_binwrite): add File#write and #binwrite.
[ruby-core:21701]

* test/ruby/test_io.rb: add tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-04 13:48:20 +00:00
mame a0ff5cae7c * io.c (rb_io_lines, rb_io_bytes, rb_io_chars, rb_io_codepoints):
change to alias to each_*, in similar way to ARGF and String.
  [ruby-core:23948]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-02 12:19:24 +00:00
akr 54a61d3e2a rdoc update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-19 12:52:03 +00:00
mame 713e99cec2 * io.c (io_fread, io_getpartial, io_read, io_sysread): by using lock,
prohibit modification of buffer string during read (which had caused
  EFAULT or SEGV).  [ruby-dev:40437]

* test/ruby/test_io.rb: rewrite tests for the old behavior.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-17 17:19:53 +00:00
akr 76678bb526 * io.c: check lseek error by errno. NetBSD 4.0.1 may return -1 as
a file position of tty.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-15 14:37:52 +00:00
akr c09bcd351a * io.c (rb_io_oflags_modestr): return "r" for O_RDONLY|O_APPEND.
[ruby-dev:40379]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-11 11:45:22 +00:00
mame b4f90b236c * io.c (READ_CHECK): do not select fd before reading, that had made
TCPServer#gets stuck.  [ruby-dev:40317]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-09 13:27:04 +00:00
matz bba5e1126b * io.c (rb_io_getline_fast): wrong calculation of new position
from rb_str_coderange_scan_restartable().  [ruby-core:28103]

* io.c (read_all): ditto.  

* sprintf.c (rb_str_format): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-08 15:08:15 +00:00
wanabe 8d33d0a560 * io.c (rb_io_each_codepoint): use cbuf when needs readconv.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-31 14:24:40 +00:00
naruse d5b0c4b1f3 * dln.c, file.c, io.c, signal.c: add __HAIKU__.
patched by Alexander von Gluck [ruby-core:27767]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-25 03:06:06 +00:00
usa ef6e53635a * io.c (rb_io_s_read): close the IO if an exception is raised on
seeking. [ruby-core:27429]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-08 07:47:12 +00:00
mame ae8dc9b722 * vm_eval.c (rb_iterate): pass current block when the argument bl_proc
is NULL.  This behavior can be used to make enumerator faster
  [ruby-dev:39874]

* enumerator.c (enumerator_each): pass current block directly instead
  of trampoline block (enumerator_each_i).

* io.c (argf_each_line, argf_each_byte, argf_each_char): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-12-20 12:31:26 +00:00
nobu 4d786d21e3 * removed spaces just before tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-26 05:25:08 +00:00
naruse 8f05568afb * io.c (read_all): fix: false negative invalid byte seequence
on reading from pipes. [ruby-dev:39743]
  fix: assigin the variable 'pos' as relative value from recent pos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-21 07:03:06 +00:00
akr 973841cb73 * io.c (MORE_CHAR_SUSPENDED): renamed from MORE_CHAR_CBUF_FULL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-18 15:47:41 +00:00
akr 4c6eda226a * io.c (fill_cbuf): extracted from more_char.
(io_shift_cbuf): fix memmove condition.
  (read_all): use fill_cbuf directly to avoid ECONV_AFTER_OUTPUT.
  [ruby-dev:39708]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-18 13:02:14 +00:00
naruse 6c2373ea67 * io.c (rb_scan_open_args): move path encoding conversion
for filesystem encoding of Mac OS X.

* file.c (file_path_convert): added for convert encoding
  of file path.

* file.c (rb_get_path_check): add file_path_convert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-18 02:41:25 +00:00
akr cde9a50b75 * io.c (parse_mode_enc): fix invalid access.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-17 22:52:02 +00:00
wanabe 98cf9c43fa * io.c (read_all): shift read buffer if exception occured.
pointed out in [ruby-dev:39702].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-16 05:06:16 +00:00
wanabe d8a754cc12 * io.c (read_all): don't call io_shift_cbuf until bufffering enough or
econv_finished.   [ruby-dev:39696]

* io.c (more_char): don't call clear_readconv to read buffer after
  econv_finished.

* io.c (appendline, rb_io_each_codepoint): clear readconv when done.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-15 23:11:26 +00:00
akr b9e0294eda fix typos.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-03 17:46:28 +00:00
matz 0580ba0611 * array.c (rb_ary_to_ary): do not use #respond_to? to detect
to_ary.  Just call.  [ruby-core:23738]

* eval.c (rb_check_funcall): new function with method existence
  check.  returns Qundef when the method does not exist.

* enumerator.c (enumerator_rewind): just call method, using
  rb_check_funcall().  [ruby-core:23738]

* error.c (exc_equal): ditto.

* object.c (convert_type): ditto.

* error.c (rb_name_err_mesg_new): export function.

* eval.c (make_exception): ditto.

* io.c (pop_last_hash): return early when the last argument is nil.

* io.c (rb_io_puts): treat T_STRING specially for small
  optimization. 

* vm_eval.c (raise_method_missing): skip method call if possible
  using rb_method_basic_definition_p().

* vm_eval.c (method_missing): ditto.

* test/ruby/test_rubyoptions.rb (TestRubyOptions#test_debug): test
  suites changed to ignore exceptions caused by just-call policy.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-29 04:55:10 +00:00
naruse ee15e6ee3b * io.c (Init_IO): rb_default_rs should be US-ASCII.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-28 19:42:53 +00:00
nobu d64d462f7a * io.c (io_cntl): F_DUPFD is platform dependent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-25 04:34:00 +00:00
akr 843acddbe1 * io.c (io_cntl): update max file descriptor by the result of
fcntl(F_DUPFD).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-23 15:38:06 +00:00
nobu 9fff5f0fab * io.c (io_encoding_set): get rid of parsing non-ascii string, and
refine messages for invalid name encoding.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-15 06:14:16 +00:00
nobu 6069202867 * io.c (io_reopen): unread current buffer before telling the
position, for the case of reopening same file.  [ruby-dev:39479]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-15 05:58:00 +00:00
akr 334241e3ed rdoc update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-11 09:34:25 +00:00
akr 1c544fccd2 * io.c (io_reopen): avoid close if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-06 12:31:53 +00:00
akr c984f77122 rdoc update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-05 11:27:06 +00:00
nobu 46313c96c7 * io.c (rb_scan_open_args): rb_utf8mac_encoding is undefined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25161 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-29 14:17:34 +00:00
naruse ad8978fdb1 * io.c (rb_scan_open_args): add UTF8-MAC to no-convertion encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-29 12:31:43 +00:00
nobu 31b7ae00c0 * include/ruby/st.h (st_hash_func): use st_index_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-08 13:10:04 +00:00
nobu a5c2f8843f * io.c (rb_io_tell): adjustment for ungotten data.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24782 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-07 08:23:00 +00:00
nobu 5a12fb5fb8 * io.c (io_encname_bom_p): removed magic number.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-07 08:13:55 +00:00
nobu f64949e276 * io.c (Init_IO): added rdocs for constants.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24780 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-07 08:12:32 +00:00
nobu 33ff311494 * io.c: fixed rdoc, a patch from Nobuhiro IMAI at [ruby-core:25433].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-06 01:34:21 +00:00
nobu c06c77091b * io.c (argf_next_argv): fixed indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-05 23:11:03 +00:00
naruse a535975bcb * io.c: Add rdoc for ARGF.
contributed by Run Paint Run Run. [ruby-core:23854]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-05 20:23:56 +00:00
naruse 7fa7345609 Rename FMODE_STRIP_BOM to FMODE_SETENC_BY_BOM.
* include/ruby/io.h, io.c (FMODE_SETENC_BY_BOM):
  renamed from FMODE_STRIP_BOM.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-21 06:17:06 +00:00
naruse f7207fa2fc Change modestr syntax for BOM to "BOM|UTF-*".
* io .c (rb_io_fmode_modestr): change modestr syntax for BOM
  to "BOM|UTF-*".

* io.c (parse_mode_enc): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-21 06:16:53 +00:00
nobu 4b82d3b6b8 * io.c (rb_sysopen_internal): removed const qualifier.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-20 15:06:36 +00:00
nobu 36c9cddf6c * io.c (rb_sysopen): moved sysopen_struct from rb_sysopen_internal.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-20 14:56:23 +00:00
nobu cb9038cbaf * io.c (rb_stdio_set_default_encoding): prototyped.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-05 10:18:21 +00:00
naruse 00499c097f Set encodings of stdio after setting default internal and external.
* io.c (rb_stdio_set_default_encoding): added.

* ruby.c (process_options): call rb_stdio_set_default_encoding
  after setting defualt internal and external.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-31 07:37:02 +00:00
matz 49991ff6f8 * io.c (argf_eof): should call next_argv() before testing.
[ruby-core:24561]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-28 08:46:04 +00:00
nobu b7f26835da * io.c (argf_eof): go to the next file if called after ARGF.close
or ARGF.skip.  [ruby-core:24561]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24284 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-26 10:17:39 +00:00
nobu c689ee1a89 * io.c (argf_eof): should not have reached EOF before trying to
read.  based on a patch by Heesob Park <phasis AT gmail.com> at
  [ruby-core:24559].  [ruby-core:24557]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-25 08:49:08 +00:00
naruse c38487d063 * io.c (rb_f_open): add rdoc about specifying ext_enc as *-bom.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-20 11:37:26 +00:00
nobu 2737b90e36 * io.c (io_read): should taint the result. [ruby-dev:38826]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-19 08:32:44 +00:00
nobu e07cb859cc * suppressed shorten-64-to-32 warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-18 08:05:32 +00:00
nobu 53163f8138 * io.c (io_reopen): discards read buffer. [ruby-core:24240]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-16 07:00:23 +00:00
ko1 0d2449bd35 * io.c (argf_free): free data body.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-15 23:55:21 +00:00
nobu 9681409e36 * io.c (rb_io_initialize): check if the descriptor can be accessed
in the specified open mode.  [ruby-dev:38571]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-14 07:13:11 +00:00
usa 0fefd19023 * io.c (pipe_open): handles leaked on win32 when an error occurs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-13 13:33:00 +00:00
akr e13fb8029b rdoc update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24062 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-12 17:36:23 +00:00
naruse 161f0a1699 io.c (io_strip_bom): ungetbyte third byte when UTF-16LE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-10 14:21:13 +00:00
naruse f188db3105 Fix condition of second byte of UTF-16LE/UTF-32LE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-10 14:21:04 +00:00
naruse 67016f368c cosmetic changes
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-10 13:17:43 +00:00
naruse 634cfdc6e6 Set encoding and strip bom when modeenc string is "r:foo-bom" [ruby-dev:37236]
* include/ruby/io.h (FMODE_STRIP_BOM): new constant.

* io.c (io_encname_bom_p): judge whether the encoding name
  is *-bom or not.
  (parse_mode_enc): drop "-bom".
  (rb_io_modestr_fmode): set FMODE_STRIP_BOM if needed.
  (rb_io_extract_modeenc): ditto.
  (io_strip_bom): strip bom if exists.
  (io_set_encoding_by_bom): set encoding if there is bom.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-09 14:47:48 +00:00
naruse 999123c147 * io.c (rb_io_ext_int_to_encs): Set external encoding if
ext==intern. [ruby-dev:38278]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-07 01:15:32 +00:00
matz 917286208c * io.c (argf_rewind): need to rewind $. and ARGF.lineno.
[ruby-core:24046]

* io.c (struct argf): refactoring on $. and ARGF.lineno behavior.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-26 18:10:12 +00:00
matz 06e3782978 * io.c (argf_binmode_m): should call rb_io_ascii8bit_binmode() to
set its encoding to ASCII-8BIT.  [ruby-core:24029]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-25 09:01:45 +00:00
matz bfcc8dbbd3 * io.c (rb_io_each_codepoint): uninitialized local variable enc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-24 22:49:37 +00:00
akr 5202b22bfe update rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-22 16:25:50 +00:00