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

530 Коммитов

Автор SHA1 Сообщение Дата
matz 06cd63ce93 * io.c (rb_open_file): should check NUL in path.
<http://www.rubyist.net/~matz/20080125.html#c01>.

* io.c (rb_io_s_popen): ditto.

* io.c (rb_io_reopen): ditto.

* io.c (next_argv): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-28 03:32:27 +00:00
akr fc208c1bd5 * include/ruby/oniguruma.h: precise mbclen API redesigned to avoid
inline functions.
  (onigenc_mbclen_charfound): removed.
  (onigenc_mbclen_needmore): removed.
  (onigenc_mbclen_recover): removed.
  (ONIGENC_MBCLEN_CHARFOUND): removed.
  (ONIGENC_MBCLEN_CHARFOUND_P): defined.
  (ONIGENC_MBCLEN_CHARFOUND_LEN): defined.
  (ONIGENC_MBCLEN_INVALID): removed.
  (ONIGENC_MBCLEN_INVALID_P): defined.
  (ONIGENC_MBCLEN_NEEDMORE): removed.
  (ONIGENC_MBCLEN_NEEDMORE_P): defined.
  (ONIGENC_MBCLEN_NEEDMORE_LEN): defined.
  (ONIGENC_MBC_ENC_LEN): use onigenc_mbclen_approximate.

* regenc.c (onigenc_mbclen_approximate): defined.

* include/ruby/encoding.h (MBCLEN_CHARFOUND): removed.
  (MBCLEN_INVALID): removed.
  (MBCLEN_NEEDMORE): removed.
  (MBCLEN_CHARFOUND_P): defined.
  (MBCLEN_INVALID_P): defined.
  (MBCLEN_NEEDMORE_P): defined.
  (MBCLEN_CHARFOUND_LEN): defined.
  (MBCLEN_NEEDMORE_LEN): defined.

* encoding.c: use new API.

* re.c: ditto.

* string.c: ditto.

* parse.y: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-27 14:27:07 +00:00
akr f4d73e05d4 * io.c (rb_io_getline_fast): don't care ASCII incompatible encoding.
(prepare_getline_args): generate a newline according to IO encoding
  when necessary.
  (rb_io_getline_1): call rb_io_getline_fast only for ASCII
  compatible encoding.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-25 15:57:32 +00:00
matz 4bcfd50ee7 * io.c (rb_io_getline_fast): the end point of left_char_head()
must be the last character.  [ruby-cvs:22445]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-24 07:34:07 +00:00
matz 9580a9ca91 * string.c (rb_str_each_line): use memchr(3) for faster newline
search.

* io.c (appendline): remove unused arguments

* io.c (rb_io_getline_fast): make much simpler (and faster).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-23 18:43:51 +00:00
matz f7929ed206 * io.c (Init_IO): stdin/stdout may not be duplex.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-17 22:21:40 +00:00
matz d765a38bf5 * io.c (io_fwrite): always flush IO on tty, even without newlines.
[ruby-core:15107]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-17 22:20:20 +00:00
nobu 64239e2291 * io.c (rb_io_check_readable): flush tied write IO too.
* io.c (Init_IO): tie stdin with stdout.  [ruby-core:15107]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-17 15:49:33 +00:00
nobu e477c919db * io.c (pipe_open, rb_io_s_popen): clear temporary object to release
and prevent from GC.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-16 09:03:12 +00:00
nobu db26a9b105 * load.c (rb_feature_p): get rid of unlimited alloca.
* object.c (rb_cstr_to_dbl): ditto.

* io.c (mode_enc): fixed uninitialized variable.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-16 06:26:33 +00:00
nobu 2402ecabb0 * file.c (sys_fail2): get rid of unlimited alloca.
* io.c (mode_enc, pipe_open, rb_io_s_popen): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-16 05:55:22 +00:00
matz fa246559d2 * io.c (appendline): specifying limit should not generate broken
byte sequence.  strings should be rounded.  [ruby-dev:33088]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-14 15:07:49 +00:00
matz f309847177 io.c (io_encoding_set): typo fixed
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-10 06:44:30 +00:00
matz a4c82312c3 * io.c (io_encoding_set): handle nil for v1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14975 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-10 06:42:49 +00:00
matz 76b247202a * io.c (io_encoding_set): IO.pipe("euc-jp", nil) should work as
IO.pipe("euc-jp", nil).  [ruby-dev:33000]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-10 01:54:43 +00:00
matz 81064a7688 * io.c (rb_io_binmode): should not alter encoding. [ruby-dev:32918]
* io.c (io_read_encoding): need not to return ASCII-8BIT for
  binary IO.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-09 17:44:13 +00:00
akr 6cdef2dc7e * $Date$ keyword removed to avoid inclusion of locale dependent
string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-06 15:49:38 +00:00
akr 8702c4d0d7 update rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-05 03:35:13 +00:00
akr 1aaf8b1713 * io.c (io_ungetc): move data in buffer if it is required to store the
argument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-03 15:40:45 +00:00
nobu 2000bde8e7 * io.c (fptr_finalize): clear errno first. [ruby-talk:284492]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-03 02:29:04 +00:00
nobu 46933426b0 * io.c (rb_io_mode_enc): encoding spec is not allowed in binary mode.
[ruby-dev:32913]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-01 08:50:49 +00:00
akr 32fe1ecdbc comment modified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-29 14:52:32 +00:00
akr fffd379d44 * io.c (io_fflush): don't retry when wbuf modified by other threads.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-29 14:49:11 +00:00
usa b3c2e224d3 * io.c (io_unread): fix typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-28 18:10:31 +00:00
usa 57bb055c93 * io.c (io_unread): adhoc workaround for non-binary mode of some DOSish
platforms. this is not perfect and safety, but works with most cases.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-28 17:20:24 +00:00
akr fc9cc7440a * io.c (io_fflush): checks wbuf modification by other threads.
not perfect.  it need locks.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-27 05:36:02 +00:00
akr b3e3c8a578 * io.c (io_fflush): check closed fptr after rb_write_internal to avoid
SEGV on MacOS X.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-26 08:33:38 +00:00
matz 3878b30881 * io.c (appendline): move RS comparison to rb_io_getline_1().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 09:52:52 +00:00
matz 72bf77fb30 * io.c (rb_io_external_encoding): should return nil for
pass-through write IO.  [ruby-dev:32740]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 06:44:58 +00:00
akr 9f98c9a9c2 * io.c (appendline): initialize rslen to 1 if rsptr is 0.
rslen should be the length of the delimiter.
  if only delim is given, it should be 1.
  [ruby-dev:32746]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 06:38:00 +00:00
nobu 33a071016b * io.c (io_encoding_set): missing return type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 05:11:59 +00:00
matz 29595e23d7 * io.c (rb_io_s_pipe): now takes up to two arguments. allow its
external/internal encoding by Encoding objects.

* io.c (rb_io_set_encoding): new method to set encoding of the IO.

* io.c (argf_set_encoding): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 18:17:35 +00:00
matz a04a812ed0 * include/ruby/encoding.h (rb_enc_left_char_head): new utility macro.
* include/ruby/encoding.h (rb_enc_right_char_head): ditto.

* io.c (appendline): does multibyte RS search in the function.

* io.c (prepare_getline_args): RS may be nil.

* io.c (rb_io_getc): should process character based on external
  encoding, when transcoding required.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14619 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 16:36:14 +00:00
matz c749064f9f * io.c (appendline): should do multibyte aware RS search.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 19:55:18 +00:00
matz b4f2e2ba07 * io.c (io_enc_str): should preserve default_external encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 19:29:01 +00:00
matz 459ca7f3f0 * io.c (prepare_getline_args): convert RS to external encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 18:12:44 +00:00
matz 7ea8ec5483 * io.c (rb_io_check_readable): should not fill fptr->enc always.
read-write IO (e.g. socket) does not work.  [ruby-dev:32685]

* io.c (io_read_encoding): retrieve reading encoding.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 18:01:16 +00:00
matz 5f9748deb7 * io.c (rb_io_external_encoding): should return the encoding of
the file reading.

* io.c (rb_io_internal_encoding): should return the encoding of
  read string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 17:38:32 +00:00
matz 648cd42f77 * io.c (rb_f_open): documentation update.
* io.c (rb_io_s_pipe): ditto.

* io.c (io_fwrite): wrong encoding destination.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 17:13:07 +00:00
matz 93444eea15 * io.c (rb_io_s_pipe): allow specifying read-side encoding.
* io.c (io_enc_str): wrong encoding destination.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 16:48:28 +00:00
matz 61ea3fd50d * io.c (open_key_args): IO direct methods (foreach, readlines,
read) now takes keyword argument: encoding, mode, open_args.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 16:02:46 +00:00
matz 2e791ace7f * io.c (rb_io_s_read): encoding argument reverted.
* io.c (mode_enc): independent function to share code.

* io.c (rb_io_internal_encoding): new method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 15:56:41 +00:00
nobu a3c87a7859 * io.c (rb_io_binmode_m): removed C99ism.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-23 02:01:34 +00:00
akr 5b809a28f8 * include/ruby/encoding.h, encoding.c, re.c, io.c, parse.y, numeric.c,
ruby.c, transcode.c: rename rb_ascii_encoding. to
  rb_ascii8bit_encoding.  rb_ascii_encoding is ambiguous with 
  ASCII-8BIT and US-ASCII.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 23:47:18 +00:00
matz e8a71bc853 * io.c (rb_io_mode_enc): do not set encoding unless explicitly
specified.

* io.c (rb_io_check_readable): fill fptr->enc by default_external
  if it's empty.

* io.c (io_enc_str): fptr->enc is always set for reading IO (by
  rb_io_check_readable(fptr)).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 17:28:20 +00:00
davidflanagan b83cbb0c7c * io.c, io.h: temporary patch to partially implement transcode-on-read and transcode-on-write
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 16:21:09 +00:00
davidflanagan ac42f7adf9 io.c: fix typo in rdoc comment
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 21:10:55 +00:00
matz d7cc14d436 * encoding.c (rb_ascii_encoding): renamed from previous
rb_default_encoding().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 18:55:30 +00:00
matz 2bed2cdc7f * io.c (io_ungetc): avoid buffer relocation, which might cause
serious problem under concurrent situation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 16:54:25 +00:00
ko1 91c6c2c170 * io.c: write() should be in blocking region.
* bootstraptest/test_io.rb, test_knownbug.rb: move a fixed test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 09:43:49 +00:00