summaryrefslogtreecommitdiff
path: root/encoding.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-25 16:40:02 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-25 16:40:02 +0000
commit42dcda08aef365e166b8784e0349a28896a871e6 (patch)
treed88f7c0ffd523d86a7ec11e2e846eb747bea485a /encoding.c
parentf923cc360ae0e496da656a4253bc38fba12eed5d (diff)
* string.c (rb_str_usascii_new{,2}: defined.
(rb_str_new): set US-ASCII and ENC_CODERANGE_7BIT when empty string. * encoding.c (rb_usascii_encoding, rb_usascii_encindex): defined. (rb_enc_inspect, enc_name, rb_locale_charmap, rb_enc_name_list_i): use rb_str_ascii_new. * array.c (recursive_join, inspect_ary): ditto. * object.c (nil_to_s, nil_inspect, true_to_s, false_to_s, rb_mod_to_s): ditto. * hash.c (inspect_hash, rb_hash_inspect, rb_f_getenv, env_fetch, env_clear, env_to_s, env_inspect): ditto. * numeric.c (flo_to_s, int_chr, rb_fix2str): ditto. * bignum.c (rb_big2str): ditto. * file.c (rb_file_ftype, rb_file_s_dirname, rb_file_s_extname, file_inspect_join, Init_file): ditto. * test/ruby/test_ruby_m17n.rb: add checks for encoding of string. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/encoding.c b/encoding.c
index bddae485b9..961c3c4f3d 100644
--- a/encoding.c
+++ b/encoding.c
@@ -838,9 +838,11 @@ rb_enc_tolower(int c, rb_encoding *enc)
static VALUE
enc_inspect(VALUE self)
{
- return rb_sprintf("#<%s:%s%s>", rb_obj_classname(self),
+ VALUE str = rb_sprintf("#<%s:%s%s>", rb_obj_classname(self),
rb_enc_name((rb_encoding*)DATA_PTR(self)),
(ENC_DUMMY_P(self) ? " (dummy)" : ""));
+ ENCODING_CODERANGE_SET(str, rb_usascii_encindex(), ENC_CODERANGE_7BIT);
+ return str;
}
/*
@@ -854,7 +856,7 @@ enc_inspect(VALUE self)
static VALUE
enc_name(VALUE self)
{
- return rb_str_new2(rb_enc_name((rb_encoding*)DATA_PTR(self)));
+ return rb_usascii_str_new2(rb_enc_name((rb_encoding*)DATA_PTR(self)));
}
static VALUE
@@ -993,6 +995,12 @@ rb_usascii_encoding(void)
return enc_table.list[ENCINDEX_US_ASCII].enc;
}
+int
+rb_usascii_encindex(void)
+{
+ return ENCINDEX_US_ASCII;
+}
+
rb_encoding *
rb_locale_encoding(void)
{
@@ -1066,11 +1074,11 @@ VALUE
rb_locale_charmap(VALUE klass)
{
#if defined NO_LOCALE_CHARMAP
- return rb_str_new2("ASCII-8BIT");
+ return rb_usascii_str_new2("ASCII-8BIT");
#elif defined HAVE_LANGINFO_H
char *codeset;
codeset = nl_langinfo(CODESET);
- return rb_str_new2(codeset);
+ return rb_usascii_str_new2(codeset);
#elif defined _WIN32
return rb_sprintf("CP%d", GetACP());
#else
@@ -1128,7 +1136,7 @@ static int
rb_enc_name_list_i(st_data_t name, st_data_t idx, st_data_t arg)
{
VALUE ary = (VALUE)arg;
- VALUE str = rb_str_new2((char *)name);
+ VALUE str = rb_usascii_str_new2((char *)name);
OBJ_FREEZE(str);
rb_ary_push(ary, str);
return ST_CONTINUE;
@@ -1172,11 +1180,11 @@ rb_enc_aliases_enc_i(st_data_t name, st_data_t orig, st_data_t arg)
if (STRCASECMP((char*)name, rb_enc_name(enc)) == 0) {
return ST_CONTINUE;
}
- str = rb_str_new2(rb_enc_name(enc));
+ str = rb_usascii_str_new2(rb_enc_name(enc));
OBJ_FREEZE(str);
rb_ary_store(ary, idx, str);
}
- key = rb_str_new2((char *)name);
+ key = rb_usascii_str_new2((char *)name);
OBJ_FREEZE(key);
rb_hash_aset(aliases, key, str);
return ST_CONTINUE;