Skip to content

Instantly share code, notes, and snippets.

@chopachom
Forked from aadlani/ruby1.9_idn_002.patch
Created March 8, 2011 16:31
Show Gist options
  • Save chopachom/860495 to your computer and use it in GitHub Desktop.
Save chopachom/860495 to your computer and use it in GitHub Desktop.

Revisions

  1. aadlani revised this gist Sep 4, 2010. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions gistfile1.sh
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,10 @@
    # Retreive the patch file and name it idn.patch
    ...

    # Download the archive from ruby forge of Ruby IDN
    $ wget http://rubyforge.org/frs/download.php/8555/idn-0.0.2.tar.gz

    # Extract the archive
    $ tar -zxvf idn-0.0.2.tar.gz
    x idn-0.0.2/
    x idn-0.0.2/README
    @@ -24,9 +27,11 @@ x idn-0.0.2/test/ts_IDN.rb

    $ cd idn-0.0.2

    # Patch the freshly downloaded library with the Miklos porting tips
    $ patch -p1 -i ../idn.patch
    patching file ext/idna.c
    patching file ext/punycode.c
    patching file ext/stringprep.c

    # install it with the help of Rake
    $ rake install
  2. aadlani revised this gist Sep 4, 2010. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions gistfile1.sh
    Original file line number Diff line number Diff line change
    @@ -24,7 +24,9 @@ x idn-0.0.2/test/ts_IDN.rb

    $ cd idn-0.0.2

    $ patch --dry-run -p1 -i ../idn.patch
    $ patch -p1 -i ../idn.patch
    patching file ext/idna.c
    patching file ext/punycode.c
    patching file ext/stringprep.c
    patching file ext/stringprep.c

    $ rake install
  3. aadlani revised this gist Sep 4, 2010. 1 changed file with 30 additions and 0 deletions.
    30 changes: 30 additions & 0 deletions gistfile1.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    # Retreive the patch file and name it idn.patch

    $ wget http://rubyforge.org/frs/download.php/8555/idn-0.0.2.tar.gz

    $ tar -zxvf idn-0.0.2.tar.gz
    x idn-0.0.2/
    x idn-0.0.2/README
    x idn-0.0.2/CHANGES
    x idn-0.0.2/LICENSE
    x idn-0.0.2/NOTICE
    x idn-0.0.2/Rakefile
    x idn-0.0.2/ext/
    x idn-0.0.2/ext/idn.c
    x idn-0.0.2/ext/idna.c
    x idn-0.0.2/ext/punycode.c
    x idn-0.0.2/ext/stringprep.c
    x idn-0.0.2/ext/idn.h
    x idn-0.0.2/ext/extconf.rb
    x idn-0.0.2/test/
    x idn-0.0.2/test/tc_Idna.rb
    x idn-0.0.2/test/tc_Punycode.rb
    x idn-0.0.2/test/tc_Stringprep.rb
    x idn-0.0.2/test/ts_IDN.rb

    $ cd idn-0.0.2

    $ patch --dry-run -p1 -i ../idn.patch
    patching file ext/idna.c
    patching file ext/punycode.c
    patching file ext/stringprep.c
  4. aadlani created this gist Sep 4, 2010.
    145 changes: 145 additions & 0 deletions ruby1.9_idn_002.patch
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,145 @@
    diff -crB idn-0.0.2/ext/idna.c idn-0.0.2.patched/ext/idna.c
    *** idn-0.0.2/ext/idna.c 2005-09-26 02:23:45.000000000 +0200
    --- idn-0.0.2.patched/ext/idna.c 2010-09-04 14:38:37.000000000 +0200
    ***************
    *** 85,91 ****
    flags = 0x0000;
    }

    ! rc = idna_to_ascii_8z(RSTRING(str)->ptr, &buf, flags);

    if (rc != IDNA_SUCCESS) {
    xfree(buf);
    --- 85,91 ----
    flags = 0x0000;
    }

    ! rc = idna_to_ascii_8z(RSTRING_PTR(str), &buf, flags);

    if (rc != IDNA_SUCCESS) {
    xfree(buf);
    ***************
    *** 125,131 ****
    flags = 0x0000;
    }

    ! rc = idna_to_unicode_8z8z(RSTRING(str)->ptr, &buf, flags);

    if (rc != IDNA_SUCCESS) {
    xfree(buf);
    --- 125,131 ----
    flags = 0x0000;
    }

    ! rc = idna_to_unicode_8z8z(RSTRING_PTR(str), &buf, flags);

    if (rc != IDNA_SUCCESS) {
    xfree(buf);
    diff -crB idn-0.0.2/ext/punycode.c idn-0.0.2.patched/ext/punycode.c
    *** idn-0.0.2/ext/punycode.c 2005-09-26 02:23:45.000000000 +0200
    --- idn-0.0.2.patched/ext/punycode.c 2010-09-04 14:12:04.000000000 +0200
    ***************
    *** 66,72 ****
    VALUE retv;

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");
    ! ustr = stringprep_utf8_to_ucs4(RSTRING(str)->ptr, RSTRING(str)->len, &len);

    while (1) {
    buf = realloc(buf, buflen);
    --- 66,72 ----
    VALUE retv;

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");
    ! ustr = stringprep_utf8_to_ucs4(RSTRING_PTR(str), RSTRING_LEN(str), &len);

    while (1) {
    buf = realloc(buf, buflen);
    ***************
    *** 116,122 ****

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");

    ! len = RSTRING(str)->len;
    ustr = malloc(len * sizeof(punycode_uint));

    if (ustr == NULL) {
    --- 116,122 ----

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");

    ! len = RSTRING_LEN(str);
    ustr = malloc(len * sizeof(punycode_uint));

    if (ustr == NULL) {
    ***************
    *** 124,130 ****
    return Qnil;
    }

    ! rc = punycode_decode(RSTRING(str)->len, RSTRING(str)->ptr,
    &len, ustr, NULL);

    if (rc != PUNYCODE_SUCCESS) {
    --- 124,130 ----
    return Qnil;
    }

    ! rc = punycode_decode(RSTRING_LEN(str), RSTRING_PTR(str),
    &len, ustr, NULL);

    if (rc != PUNYCODE_SUCCESS) {
    diff -crB idn-0.0.2/ext/stringprep.c idn-0.0.2.patched/ext/stringprep.c
    *** idn-0.0.2/ext/stringprep.c 2006-02-11 16:46:43.000000000 +0100
    --- idn-0.0.2.patched/ext/stringprep.c 2010-09-04 14:16:37.000000000 +0200
    ***************
    *** 64,70 ****
    VALUE retv;

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");
    ! rc = stringprep_profile(RSTRING(str)->ptr, &buf, profile, 0);

    if (rc != STRINGPREP_OK) {
    rb_raise(eStringprepError, "%s (%d)", stringprep_strerror(rc), rc);
    --- 64,70 ----
    VALUE retv;

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");
    ! rc = stringprep_profile(RSTRING_PTR(str), &buf, profile, 0);

    if (rc != STRINGPREP_OK) {
    rb_raise(eStringprepError, "%s (%d)", stringprep_strerror(rc), rc);
    ***************
    *** 135,141 ****
    static VALUE with_profile(VALUE self, VALUE str, VALUE profile)
    {
    profile = rb_check_convert_type(profile, T_STRING, "String", "to_s");
    ! return stringprep_internal(str, RSTRING(profile)->ptr);
    }

    /*
    --- 135,141 ----
    static VALUE with_profile(VALUE self, VALUE str, VALUE profile)
    {
    profile = rb_check_convert_type(profile, T_STRING, "String", "to_s");
    ! return stringprep_internal(str, RSTRING_PTR(profile));
    }

    /*
    ***************
    *** 153,159 ****
    VALUE retv;

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");
    ! buf = stringprep_utf8_nfkc_normalize(RSTRING(str)->ptr, RSTRING(str)->len);

    retv = rb_str_new2(buf);
    xfree(buf);
    --- 153,159 ----
    VALUE retv;

    str = rb_check_convert_type(str, T_STRING, "String", "to_s");
    ! buf = stringprep_utf8_nfkc_normalize(RSTRING_PTR(str), RSTRING_LEN(str));

    retv = rb_str_new2(buf);
    xfree(buf);