This hack makes Guile default to UTF-8. This avoids calls to `iconv_open'; `iconv_open' tries to open shared objects that aren't available during bootstrap, so using UTF-8 avoids that (and UTF-8 has built-in conversions in glibc, too.) diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c index 7cd753009..de92653a4 100644 --- a/libguile/bytevectors.c +++ b/libguile/bytevectors.c @@ -1918,7 +1918,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness) if (scm_i_is_narrow_string (str)) \ { \ err = mem_iconveh (scm_i_string_chars (str), c_strlen, \ - "ISO-8859-1", c_utf_name, \ + "UTF-8", c_utf_name, \ iconveh_question_mark, NULL, \ &c_utf, &c_utf_len); \ if (SCM_UNLIKELY (err)) \ diff --git a/libguile/ports.c b/libguile/ports.c index 2a25cd58e..bdaf921ca 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -959,7 +959,9 @@ canonicalize_encoding (const char *enc) char *ret; int i; - if (!enc || encoding_matches (enc, sym_ISO_8859_1)) + if (enc == NULL) + return sym_UTF_8; + if (encoding_matches (enc, sym_ISO_8859_1)) return sym_ISO_8859_1; if (encoding_matches (enc, sym_UTF_8)) return sym_UTF_8; @@ -4182,7 +4184,7 @@ scm_init_ports (void) scm_c_define ("%default-port-conversion-strategy", scm_make_fluid_with_default (sym_substitute)); /* Use the locale as the default port encoding. */ - scm_i_set_default_port_encoding (locale_charset ()); + scm_i_set_default_port_encoding ("UTF-8"); scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION, "scm_init_ice_9_ports", diff --git a/libguile/strings.c b/libguile/strings.c index 5c49e33d8..0131e6dc8 100644 --- a/libguile/strings.c +++ b/libguile/strings.c @@ -1561,7 +1561,7 @@ scm_i_default_string_failed_conversion_handler (void) SCM scm_from_locale_stringn (const char *str, size_t len) { - return scm_from_stringn (str, len, locale_charset (), + return scm_from_stringn (str, len, "UTF-8", scm_i_default_string_failed_conversion_handler ()); } @@ -1885,7 +1885,7 @@ char * scm_to_locale_stringn (SCM str, size_t *lenp) { return scm_to_stringn (str, lenp, - locale_charset (), + "UTF-8", scm_i_default_string_failed_conversion_handler ()); } @@ -2216,11 +2216,11 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding, len = 0; enc = encoding; if (enc == NULL) - enc = "ISO-8859-1"; + enc = "UTF-8"; if (scm_i_is_narrow_string (str)) { ret = mem_iconveh (scm_i_string_chars (str), ilen, - "ISO-8859-1", enc, + "UTF-8", enc, (enum iconv_ilseq_handler) handler, NULL, &buf, &len); >...Brett Gilio 2019-12-28gnu: Add picom....Alexandru-Sergiu Marton