diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-18 12:06:42 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-18 12:06:42 +0000 |
commit | 790a018902aa6d6aaa2a327875ee314ec219c97c (patch) | |
tree | 6d4afdf333976a87b4f0de7ef667c8e4603277f9 /include/ruby/io.h | |
parent | acf0203fbecb3edf0e5ec2f638836a05b9ce29cc (diff) | |
download | ruby-790a018902aa6d6aaa2a327875ee314ec219c97c.tar.gz ruby-790a018902aa6d6aaa2a327875ee314ec219c97c.tar.xz ruby-790a018902aa6d6aaa2a327875ee314ec219c97c.zip |
* include/ruby/io.h (rb_io_t): new fields: writeconv,
writeconv_stateless and writeconv_initialized.
(MakeOpenFile): initialize them.
* include/ruby/encoding.h (rb_econv_stateless_encoding): declared.
(rb_econv_string): declared.
* io.c (make_writeconv): new function.
(io_fwrite): use econv.
(make_readconv): fix error message.
(finish_writeconv): new function.
(fptr_finalize): call finish_writeconv.
(clear_writeconv): new function.
(clear_codeconv): new function to call both clear_readconv and
clear_writeconv.
(rb_io_fptr_finalize): call clear_codeconv instead of
clear_readconv.
(mode_enc): ditto.
(io_set_encoding): ditto.
(argf_next_argv): ditto.
(io_encoding_set): ditto.
* gc.c (gc_mark_children): mark writeconv_stateless in T_FILE.
* transcode.c (stateless_encoding_i): new function.
(rb_econv_stateless_encoding): ditto.
(rb_econv_string): ditto.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include/ruby/io.h')
-rw-r--r-- | include/ruby/io.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/ruby/io.h b/include/ruby/io.h index 2a2b991a6..32830aaae 100644 --- a/include/ruby/io.h +++ b/include/ruby/io.h @@ -63,6 +63,11 @@ typedef struct rb_io_t { int crbuf_off; int crbuf_len; int crbuf_capa; + + rb_econv_t *writeconv; + VALUE writeconv_stateless; + int writeconv_initialized; + } rb_io_t; #define HAVE_RB_IO_T 1 @@ -110,6 +115,9 @@ typedef struct rb_io_t { fp->crbuf_off = 0;\ fp->crbuf_len = 0;\ fp->crbuf_capa = 0;\ + fp->writeconv = NULL;\ + fp->writeconv_stateless = Qnil;\ + fp->writeconv_initialized = 0;\ fp->tied_io_for_writing = 0;\ fp->enc = 0;\ fp->enc2 = 0;\ |