[macruby-changes] [4089] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Wed May 12 20:33:24 PDT 2010


Revision: 4089
          http://trac.macosforge.org/projects/ruby/changeset/4089
Author:   lsansonetti at apple.com
Date:     2010-05-12 20:33:22 -0700 (Wed, 12 May 2010)
Log Message:
-----------
support for the nkf extension

Modified Paths:
--------------
    MacRuby/trunk/ext/nkf/nkf.c
    MacRuby/trunk/rakelib/builder/builder.rb

Modified: MacRuby/trunk/ext/nkf/nkf.c
===================================================================
--- MacRuby/trunk/ext/nkf/nkf.c	2010-05-13 03:32:46 UTC (rev 4088)
+++ MacRuby/trunk/ext/nkf/nkf.c	2010-05-13 03:33:22 UTC (rev 4089)
@@ -63,18 +63,13 @@
 
 rb_encoding* rb_nkf_enc_get(const char *name)
 {
-    int idx = rb_enc_find_index(name);
-    if (idx < 0) {
-	nkf_encoding *nkf_enc = nkf_enc_find(name);
-	idx = rb_enc_find_index(nkf_enc_name(nkf_enc_to_base_encoding(nkf_enc)));
-	if (idx < 0) {
-	    idx = rb_define_dummy_encoding(name);
-	} else {
-	    rb_encoding *rb_enc = rb_enc_from_index(idx);
-	    idx = rb_enc_replicate(name, rb_enc);
-	}
+    rb_encoding *enc = rb_enc_find(name);
+    if (enc == NULL) {
+	// Encoding is not known, use BINARY instead.
+	enc = rb_enc_find("BINARY");
+	assert(enc != NULL);
     }
-    return rb_enc_from_index(idx);
+    return enc;
 }
 
 int nkf_split_options(const char *arg)
@@ -156,18 +151,19 @@
 
     input_ctr = 0;
     StringValue(src);
-    input = (unsigned char *)RSTRING_PTR(src);
-    i_len = RSTRING_LEN(src);
-    result = rb_str_new(0, i_len*3 + 10);
+    src = rb_str_bstr(src);
+    input = rb_bstr_bytes(src);
+    i_len = rb_bstr_length(src);
+    result = rb_bstr_new();
+    rb_bstr_resize(result, i_len*3 + 10);
 
     output_ctr = 0;
-    output     = (unsigned char *)RSTRING_PTR(result);
-    o_len      = RSTRING_LEN(result);
+    output     = rb_bstr_bytes(result);
+    o_len      = rb_bstr_length(result);
     *output    = '\0';
 
     kanji_convert(NULL);
-    rb_str_set_len(result, output_ctr);
-    OBJ_INFECT(result, src);
+    rb_bstr_set_length(result, output_ctr);
 
     rb_enc_associate(result, rb_nkf_enc_get(nkf_enc_name(output_encoding)));
 

Modified: MacRuby/trunk/rakelib/builder/builder.rb
===================================================================
--- MacRuby/trunk/rakelib/builder/builder.rb	2010-05-13 03:32:46 UTC (rev 4088)
+++ MacRuby/trunk/rakelib/builder/builder.rb	2010-05-13 03:33:22 UTC (rev 4089)
@@ -11,6 +11,7 @@
 
 EXTENSIONS = %w{
   ripper digest etc readline libyaml fcntl socket zlib bigdecimal openssl json
+  nkf
 }.sort
 
 class Builder
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100512/44692b48/attachment.html>


More information about the macruby-changes mailing list