static int enc_set_default_encoding(struct default_encoding *def, VALUE encoding, const char *name) { int overridden = FALSE; if (def->index != -2) /* Already set */ overridden = TRUE; if (NIL_P(encoding)) { def->index = -1; def->enc = 0; st_insert(enc_table.names, (st_data_t)strdup(name), (st_data_t)UNSPECIFIED_ENCODING); } else { def->index = rb_enc_to_index(rb_to_encoding(encoding)); def->enc = 0; enc_alias_internal(name, def->index); } if (def == &default_external) enc_alias_internal("filesystem", Init_enc_set_filesystem_encoding()); return overridden; }
static int enc_alias(const char *alias, int idx) { if (!valid_encoding_name_p(alias)) return -1; alias = enc_alias_internal(alias, idx); set_encoding_const(alias, rb_enc_from_index(idx)); return idx; }
int rb_locale_encindex(void) { VALUE charmap = rb_locale_charmap(rb_cEncoding); int idx; if (NIL_P(charmap)) idx = rb_usascii_encindex(); else if ((idx = rb_enc_find_index(StringValueCStr(charmap))) < 0) idx = rb_ascii8bit_encindex(); if (rb_enc_registered("locale") < 0) enc_alias_internal("locale", idx); return idx; }
int rb_locale_encindex(void) { int idx = rb_locale_charmap_index(); if (idx < 0) idx = ENCINDEX_ASCII; if (rb_enc_registered("locale") < 0) { # if defined _WIN32 void Init_w32_codepage(void); Init_w32_codepage(); # endif enc_alias_internal("locale", idx); } return idx; }
static int enc_set_filesystem_encoding(void) { int idx; #if defined NO_LOCALE_CHARMAP idx = rb_enc_to_index(rb_default_external_encoding()); #elif defined _WIN32 || defined __CYGWIN__ char cp[sizeof(int) * 8 / 3 + 4]; snprintf(cp, sizeof cp, "CP%d", AreFileApisANSI() ? GetACP() : GetOEMCP()); idx = rb_enc_find_index(cp); if (idx < 0) idx = rb_ascii8bit_encindex(); #else idx = rb_enc_to_index(rb_default_external_encoding()); #endif enc_alias_internal("filesystem", idx); return idx; }
int rb_locale_encindex(void) { VALUE charmap = rb_locale_charmap(rb_cEncoding); int idx; if (NIL_P(charmap)) idx = ENCINDEX_US_ASCII; else if ((idx = rb_enc_find_index(StringValueCStr(charmap))) < 0) idx = ENCINDEX_ASCII; if (rb_enc_registered("locale") < 0) { # if defined _WIN32 void Init_w32_codepage(void); Init_w32_codepage(); # endif enc_alias_internal("locale", idx); } return idx; }