18 #ifdef HAVE_LANGINFO_H
22 #if defined _WIN32 || defined __CYGWIN__
23 #define SIZEOF_CP_NAME ((sizeof(UINT) * 8 / 3) + 4)
24 #define CP_FORMAT(buf, codepage) snprintf(buf, sizeof(buf), "CP%u", (codepage))
26 extern UINT ruby_w32_codepage[2];
29 #ifndef NO_LOCALE_CHARMAP
30 # if defined _WIN32 || defined __CYGWIN__ || defined HAVE_LANGINFO_H
31 # define NO_LOCALE_CHARMAP 0
33 # define NO_LOCALE_CHARMAP 1
37 #if !NO_LOCALE_CHARMAP
39 locale_charmap(
VALUE (*conv)(
const char *))
41 const char *codeset = 0;
42 #if defined _WIN32 || defined __CYGWIN__
43 char cp[SIZEOF_CP_NAME];
45 const char *nl_langinfo_codeset(
void);
46 codeset = nl_langinfo_codeset();
49 UINT codepage = ruby_w32_codepage[0];
50 if (!codepage) codepage = GetConsoleCP();
51 if (!codepage) codepage = GetACP();
52 CP_FORMAT(cp, codepage);
55 #elif defined HAVE_LANGINFO_H
56 codeset = nl_langinfo(CODESET);
59 # error locale_charmap() is not implemented
61 return (*conv)(codeset);
100 #if !NO_LOCALE_CHARMAP
102 enc_find_index(
const char *name)
109 rb_locale_charmap_index(
void)
111 #if NO_LOCALE_CHARMAP
112 return ENCINDEX_US_ASCII;
114 return (
int)locale_charmap(enc_find_index);
119 Init_enc_set_filesystem_encoding(
void)
122 #if NO_LOCALE_CHARMAP
123 idx = ENCINDEX_US_ASCII;
125 char cp[SIZEOF_CP_NAME];
126 const UINT codepage = ruby_w32_codepage[1];
127 if (!codepage)
return ENCINDEX_UTF_8;
129 CP_FORMAT(cp, codepage);
131 if (idx < 0) idx = ENCINDEX_ASCII_8BIT;
132 #elif defined __CYGWIN__
133 idx = ENCINDEX_UTF_8;
#define ASSUME
Old name of RBIMPL_ASSUME.
rb_encoding * rb_default_external_encoding(void)
Queries the "default external" encoding.
int rb_enc_to_index(rb_encoding *enc)
Queries the index of the encoding.
VALUE rb_locale_charmap(VALUE klass)
Returns a platform-depended "charmap" of the current locale.
int rb_enc_find_index(const char *name)
Queries the index of the encoding.
VALUE rb_usascii_str_new_cstr(const char *ptr)
Identical to rb_str_new_cstr(), except it generates a string of "US ASCII" encoding.
uintptr_t VALUE
Type that represents a Ruby object.