summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/stringio/stringio.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index fac1fc94be..98ffce75a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Oct 5 17:39:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_encoding): defined for
+ StringIO#set_encoding.
+
Sun Oct 5 11:24:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
* eval.c: come back definition of environ.
diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c
index c9d1f009b1..c223b8d95c 100644
--- a/ext/stringio/stringio.c
+++ b/ext/stringio/stringio.c
@@ -1245,6 +1245,23 @@ strio_internal_encoding(VALUE self)
}
/*
+ * call-seq:
+ * strio.set_encoding(ext_enc) => strio
+ *
+ * Tagged with the encoding specified.
+ */
+
+static VALUE
+strio_set_encoding(VALUE self, VALUE ext_enc)
+{
+ rb_encoding* enc;
+ VALUE str = StringIO(self)->string;
+ enc = rb_to_encoding(ext_enc);
+ rb_enc_associate(str, enc);
+ return self;
+}
+
+/*
* Pseudo I/O on String object.
*/
void
@@ -1322,4 +1339,5 @@ Init_stringio()
rb_define_method(StringIO, "external_encoding", strio_external_encoding, 0);
rb_define_method(StringIO, "internal_encoding", strio_internal_encoding, 0);
+ rb_define_method(StringIO, "set_encoding", strio_set_encoding, 1);
}