From 3ae69f30632dba1677d2ed822297cf4599a8d9dd Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 16 Oct 2018 02:34:18 -0400 Subject: [PATCH] Use 'scm_from_utf8_{string,symbol,keyword}' for C string literals. Partial fix for . Reported by Tom de Vries . Fix several instances of the mistake of using 'scm_from_locale_*' for C strings that originally came from a C string literal. Change several uses of 'scm_from_latin1_*' as well, to promote the practice of writing code that works for arbitrary C string literals. Also add missing years to the copyright notices of changed files, based on the git history. * libguile/debug-malloc.c, libguile/deprecation.c, libguile/error.c, libguile/eval.c, libguile/expand.c, libguile/extensions.c, libguile/filesys.c, libguile/init.c, libguile/load.c, libguile/modules.c, libguile/pairs.c, libguile/posix.c, libguile/print.c, libguile/random.c, libguile/read.c, libguile/regex-posix.c, libguile/snarf.h, libguile/srfi-13.c, libguile/stacks.c, libguile/stime.c, libguile/strports.c, libguile/values.c: Use 'scm_from_utf8_*' where appropriate. --- libguile/debug-malloc.c | 4 ++-- libguile/deprecation.c | 4 ++-- libguile/error.c | 14 +++++++------- libguile/eval.c | 20 ++++++++++---------- libguile/expand.c | 10 +++++----- libguile/extensions.c | 10 ++++------ libguile/filesys.c | 4 ++-- libguile/init.c | 4 ++-- libguile/keywords.h | 6 +++--- libguile/load.c | 35 +++++++++++++++++++---------------- libguile/modules.c | 4 ++-- libguile/pairs.c | 4 ++-- libguile/posix.c | 4 ++-- libguile/print.c | 10 +++++----- libguile/random.c | 7 +++++-- libguile/read.c | 17 ++++++++++------- libguile/regex-posix.c | 6 +++--- libguile/snarf.h | 2 +- libguile/srfi-13.c | 6 ++---- libguile/stacks.c | 6 +++--- libguile/stime.c | 4 ++-- libguile/strports.c | 4 ++-- libguile/values.c | 2 +- 23 files changed, 96 insertions(+), 91 deletions(-) diff --git a/libguile/debug-malloc.c b/libguile/debug-malloc.c index ec684bc1d..ac8bf710a 100644 --- a/libguile/debug-malloc.c +++ b/libguile/debug-malloc.c @@ -1,4 +1,4 @@ -/* Copyright 2000,2006,2008,2018 +/* Copyright 2000-2002,2004,2006,2008-2009,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -224,7 +224,7 @@ SCM_DEFINE (scm_malloc_stats, "malloc-stats", 0, 0, 0, int i; for (i = 0; i < malloc_type_size + N_SEEK; ++i) if (malloc_type[i].key) - res = scm_acons (scm_from_locale_string ((char *) malloc_type[i].key), + res = scm_acons (scm_from_utf8_string ((char *) malloc_type[i].key), scm_from_int ((int) malloc_type[i].data), res); return res; diff --git a/libguile/deprecation.c b/libguile/deprecation.c index 646c252fb..a85ed1972 100644 --- a/libguile/deprecation.c +++ b/libguile/deprecation.c @@ -1,4 +1,4 @@ -/* Copyright 2001,2006,2010-2011,2018 +/* Copyright 2001,2005-2006,2009-2012,2016,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -115,7 +115,7 @@ SCM_DEFINE(scm_issue_deprecation_warning, print_summary = 1; else { - SCM nl = scm_from_locale_string ("\n"); + SCM nl = scm_from_utf8_string ("\n"); SCM msgs_nl = SCM_EOL; char *c_msgs; while (scm_is_pair (msgs)) diff --git a/libguile/error.c b/libguile/error.c index 01a2e8d41..aa45aec27 100644 --- a/libguile/error.c +++ b/libguile/error.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1998,2000-2001,2004,2006,2010,2012-2014,2018 +/* Copyright 1995-1998,2000-2001,2004,2006,2010,2012-2016,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -61,8 +61,8 @@ scm_error (SCM key, const char *subr, const char *message, SCM args, SCM rest) { scm_error_scm (key, - (subr == NULL) ? SCM_BOOL_F : scm_from_locale_string (subr), - (message == NULL) ? SCM_BOOL_F : scm_from_locale_string (message), + (subr == NULL) ? SCM_BOOL_F : scm_from_utf8_string (subr), + (message == NULL) ? SCM_BOOL_F : scm_from_utf8_string (message), args, rest); } @@ -235,7 +235,7 @@ scm_error_num_args_subr (const char *subr) scm_error (scm_args_number_key, NULL, "Wrong number of arguments to ~A", - scm_list_1 (scm_from_locale_string (subr)), + scm_list_1 (scm_from_utf8_string (subr)), SCM_BOOL_F); } @@ -258,8 +258,8 @@ scm_i_wrong_type_arg_symbol (SCM symbol, int pos, SCM bad_value) { scm_error_scm (scm_arg_type_key, scm_symbol_to_string (symbol), - (pos == 0) ? scm_from_locale_string ("Wrong type: ~S") - : scm_from_locale_string ("Wrong type argument in position ~A: ~S"), + (pos == 0) ? scm_from_utf8_string ("Wrong type: ~S") + : scm_from_utf8_string ("Wrong type argument in position ~A: ~S"), (pos == 0) ? scm_list_1 (bad_value) : scm_list_2 (scm_from_int (pos), bad_value), scm_list_1 (bad_value)); @@ -269,7 +269,7 @@ scm_i_wrong_type_arg_symbol (SCM symbol, int pos, SCM bad_value) void scm_wrong_type_arg_msg (const char *subr, int pos, SCM bad_value, const char *szMessage) { - SCM msg = scm_from_locale_string (szMessage); + SCM msg = scm_from_utf8_string (szMessage); if (pos == 0) { scm_error (scm_arg_type_key, diff --git a/libguile/eval.c b/libguile/eval.c index d60b8de91..db6d3a5e9 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1996,1997-2014,2018 +/* Copyright 1995-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -201,22 +201,22 @@ env_set (SCM env, int depth, int width, SCM val) static void error_missing_value (SCM proc, SCM kw) { - scm_error_scm (scm_from_latin1_symbol ("keyword-argument-error"), proc, - scm_from_locale_string ("Keyword argument has no value"), SCM_EOL, + scm_error_scm (scm_from_utf8_symbol ("keyword-argument-error"), proc, + scm_from_utf8_string ("Keyword argument has no value"), SCM_EOL, scm_list_1 (kw)); } static void error_invalid_keyword (SCM proc, SCM obj) { - scm_error_scm (scm_from_latin1_symbol ("keyword-argument-error"), proc, - scm_from_locale_string ("Invalid keyword"), SCM_EOL, + scm_error_scm (scm_from_utf8_symbol ("keyword-argument-error"), proc, + scm_from_utf8_string ("Invalid keyword"), SCM_EOL, scm_list_1 (obj)); } static void error_unrecognized_keyword (SCM proc, SCM kw) { - scm_error_scm (scm_from_latin1_symbol ("keyword-argument-error"), proc, - scm_from_locale_string ("Unrecognized keyword"), SCM_EOL, + scm_error_scm (scm_from_utf8_symbol ("keyword-argument-error"), proc, + scm_from_utf8_string ("Unrecognized keyword"), SCM_EOL, scm_list_1 (kw)); } @@ -233,9 +233,9 @@ truncate_values (SCM x) return scm_i_value_ref (x, 0); else { - scm_ithrow (scm_from_latin1_symbol ("vm-run"), - scm_list_3 (scm_from_latin1_symbol ("vm-run"), - scm_from_locale_string + scm_ithrow (scm_from_utf8_symbol ("vm-run"), + scm_list_3 (scm_from_utf8_symbol ("vm-run"), + scm_from_utf8_string ("Too few values returned to continuation"), SCM_EOL), 1); diff --git a/libguile/expand.c b/libguile/expand.c index eccb889ce..dd6eab0fe 100644 --- a/libguile/expand.c +++ b/libguile/expand.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1996,1997-2014,2018 +/* Copyright 1995-2014,2016,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -224,7 +224,7 @@ SCM_KEYWORD (kw_rest, "rest"); static void syntax_error (const char* const msg, const SCM form, const SCM expr) { - SCM msg_string = scm_from_locale_string (msg); + SCM msg_string = scm_from_utf8_string (msg); SCM filename = SCM_BOOL_F; SCM linenr = SCM_BOOL_F; const char *format; @@ -487,7 +487,7 @@ expand_cond_clauses (SCM clause, SCM rest, int elp, int alp, SCM env) && scm_is_eq (CADR (clause), scm_sym_arrow) && alp) { - SCM tmp = scm_gensym (scm_from_locale_string ("cond ")); + SCM tmp = scm_gensym (scm_from_utf8_string ("cond ")); SCM new_env = scm_acons (tmp, tmp, env); ASSERT_SYNTAX (length > 2, s_missing_recipient, clause); ASSERT_SYNTAX (length == 3, s_extra_expression, clause); @@ -1596,7 +1596,7 @@ make_exp_vtable (size_t n) layout = scm_string_to_symbol (scm_string_append (scm_make_list (scm_from_size_t (exp_nfields[n]), - scm_from_locale_string ("pw")))); + scm_from_utf8_string ("pw")))); printer = SCM_BOOL_F; name = scm_from_utf8_symbol (exp_names[n]); code = scm_from_size_t (n); @@ -1638,7 +1638,7 @@ scm_init_expand () DEFINE_NAMES (LETREC); scm_exp_vtable_vtable = - scm_make_vtable (scm_from_locale_string (SCM_VTABLE_BASE_LAYOUT "pwuwpw"), + scm_make_vtable (scm_from_utf8_string (SCM_VTABLE_BASE_LAYOUT "pwuwpw"), SCM_BOOL_F); for (n = 0; n < SCM_NUM_EXPANDED_TYPES; n++) diff --git a/libguile/extensions.c b/libguile/extensions.c index c285b1109..a094159d4 100644 --- a/libguile/extensions.c +++ b/libguile/extensions.c @@ -1,6 +1,4 @@ -/* extensions.c - registering and loading extensions. - - Copyright 2001,2006,2009-2011,2018 +/* Copyright 2001,2002,2004,2006,2009-2011,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -93,9 +91,9 @@ load_extension (SCM lib, SCM init) scm_dynwind_begin (0); - clib = scm_to_locale_string (lib); + clib = scm_to_utf8_string (lib); scm_dynwind_free (clib); - cinit = scm_to_locale_string (init); + cinit = scm_to_utf8_string (init); scm_dynwind_free (cinit); for (ext = head; ext; ext = ext->next) @@ -126,7 +124,7 @@ load_extension (SCM lib, SCM init) void scm_c_load_extension (const char *lib, const char *init) { - load_extension (scm_from_locale_string (lib), scm_from_locale_string (init)); + load_extension (scm_from_utf8_string (lib), scm_from_utf8_string (init)); } SCM_DEFINE (scm_load_extension, "load-extension", 2, 0, 0, diff --git a/libguile/filesys.c b/libguile/filesys.c index 7713c0a3c..113cf784b 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -1,4 +1,4 @@ -/* Copyright 1996-2002,2004,2006,2009-2014,2016-2018 +/* Copyright 1996-2002,2004,2006,2009-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -1951,7 +1951,7 @@ scm_init_filesys () scm_c_define ("X_OK", scm_from_int (X_OK)); scm_c_define ("F_OK", scm_from_int (F_OK)); - scm_dot_string = scm_from_locale_string ("."); + scm_dot_string = scm_from_utf8_string ("."); #include "filesys.x" } diff --git a/libguile/init.c b/libguile/init.c index ed4043c37..e33a60324 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -1,4 +1,4 @@ -/* Copyright 1995-2004,2006,2009-2014,2018 +/* Copyright 1995-2004,2006,2009-2014,2016-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -244,7 +244,7 @@ scm_load_startup_files () SCM_SITE_DIR and SCM_LIBRARY_DIR when searching for the site init file, so we do this before loading Ice-9. */ SCM init_path = - scm_sys_search_load_path (scm_from_locale_string ("init.scm")); + scm_sys_search_load_path (scm_from_utf8_string ("init.scm")); /* Load Ice-9. */ if (!scm_ice_9_already_loaded) diff --git a/libguile/keywords.h b/libguile/keywords.h index 42040f094..c8f480869 100644 --- a/libguile/keywords.h +++ b/libguile/keywords.h @@ -1,7 +1,7 @@ #ifndef SCM_KEYWORDS_H #define SCM_KEYWORDS_H -/* Copyright 1995-1996,1999-2001,2006,2008,2015,2018 +/* Copyright 1995-1996,1999-2001,2006,2008,2015,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -42,11 +42,11 @@ SCM_API SCM scm_from_utf8_keyword (const char *name); #define SCM_KEYWORD(c_name, scheme_name) \ SCM_SNARF_HERE(static SCM c_name) \ -SCM_SNARF_INIT(c_name = scm_from_locale_keyword (scheme_name)) +SCM_SNARF_INIT(c_name = scm_from_utf8_keyword (scheme_name)) #define SCM_GLOBAL_KEYWORD(c_name, scheme_name) \ SCM_SNARF_HERE(SCM c_name) \ -SCM_SNARF_INIT(c_name = scm_from_locale_keyword (scheme_name)) +SCM_SNARF_INIT(c_name = scm_from_utf8_keyword (scheme_name)) enum scm_keyword_arguments_flags { diff --git a/libguile/load.c b/libguile/load.c index f6ad92de8..e95c36db1 100644 --- a/libguile/load.c +++ b/libguile/load.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1996,1998-2001,2004,2006,2008-2014,2017-2018 +/* Copyright 1995-1996,1998-2001,2004,2006,2008-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -154,7 +154,7 @@ SCM_DEFINE (scm_sys_package_data_dir, "%package-data-dir", 0, 0, 0, "@samp{/usr/local/share/guile}.") #define FUNC_NAME s_scm_sys_package_data_dir { - return scm_from_locale_string (SCM_PKGDATA_DIR); + return scm_from_utf8_string (SCM_PKGDATA_DIR); } #undef FUNC_NAME #endif /* SCM_PKGDATA_DIR */ @@ -166,7 +166,7 @@ SCM_DEFINE (scm_sys_library_dir, "%library-dir", 0,0,0, "E.g., may return \"/usr/share/guile/1.3.5\".") #define FUNC_NAME s_scm_sys_library_dir { - return scm_from_locale_string (SCM_LIBRARY_DIR); + return scm_from_utf8_string (SCM_LIBRARY_DIR); } #undef FUNC_NAME #endif /* SCM_LIBRARY_DIR */ @@ -192,7 +192,7 @@ SCM_DEFINE (scm_sys_global_site_dir, "%global-site-dir", 0,0,0, "E.g., may return \"/usr/share/guile/site\".") #define FUNC_NAME s_scm_sys_global_site_dir { - return scm_from_locale_string (SCM_GLOBAL_SITE_DIR); + return scm_from_utf8_string (SCM_GLOBAL_SITE_DIR); } #undef FUNC_NAME #endif /* SCM_GLOBAL_SITE_DIR */ @@ -205,7 +205,7 @@ SCM_DEFINE (scm_sys_site_ccache_dir, "%site-ccache-dir", 0,0,0, "E.g., may return \"/usr/lib/guile/" SCM_EFFECTIVE_VERSION "/site-ccache\".") #define FUNC_NAME s_scm_sys_site_ccache_dir { - return scm_from_locale_string (SCM_SITE_CCACHE_DIR); + return scm_from_utf8_string (SCM_SITE_CCACHE_DIR); } #undef FUNC_NAME #endif /* SCM_SITE_CCACHE_DIR */ @@ -310,6 +310,9 @@ scm_i_mirror_backslashes (char *path) while (*p) { + /* FIXME: When the locale encoding is Shift_JIS, backslash '\' + has a multibyte representation, so this code will + misbehave. */ if (*p == '\\') *p = '/'; p++; @@ -339,10 +342,10 @@ scm_init_load_path () else if (env) path = scm_parse_path (scm_from_locale_string (env), path); else - path = scm_list_4 (scm_from_locale_string (SCM_LIBRARY_DIR), - scm_from_locale_string (SCM_SITE_DIR), - scm_from_locale_string (SCM_GLOBAL_SITE_DIR), - scm_from_locale_string (SCM_PKGDATA_DIR)); + path = scm_list_4 (scm_from_utf8_string (SCM_LIBRARY_DIR), + scm_from_utf8_string (SCM_SITE_DIR), + scm_from_utf8_string (SCM_GLOBAL_SITE_DIR), + scm_from_utf8_string (SCM_PKGDATA_DIR)); env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_COMPILED_PATH")); if (env && strcmp (env, "") == 0) @@ -352,8 +355,8 @@ scm_init_load_path () cpath = scm_parse_path (scm_from_locale_string (env), cpath); else { - cpath = scm_list_2 (scm_from_locale_string (SCM_CCACHE_DIR), - scm_from_locale_string (SCM_SITE_CCACHE_DIR)); + cpath = scm_list_2 (scm_from_utf8_string (SCM_CCACHE_DIR), + scm_from_utf8_string (SCM_SITE_CCACHE_DIR)); } #endif /* SCM_LIBRARY_DIR */ @@ -954,7 +957,7 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 0, 1, { require_exts = SCM_CADR (rest); if (SCM_UNLIKELY (!scm_is_null (SCM_CDDR (rest)))) - scm_wrong_num_args (scm_from_locale_string (FUNC_NAME)); + scm_wrong_num_args (scm_from_utf8_string (FUNC_NAME)); } } else @@ -1280,10 +1283,10 @@ scm_init_eval_in_scheme (void) int found_stale_eval_go = 0; eval_scm = search_path (*scm_loc_load_path, - scm_from_locale_string ("ice-9/eval.scm"), + scm_from_utf8_string ("ice-9/eval.scm"), SCM_EOL, SCM_BOOL_F, &stat_source); eval_thunk = - load_thunk_from_path (scm_from_locale_string ("ice-9/eval.go"), + load_thunk_from_path (scm_from_utf8_string ("ice-9/eval.go"), eval_scm, &stat_source, &found_stale_eval_go); if (scm_is_true (eval_thunk)) @@ -1341,13 +1344,13 @@ scm_init_load () scm_loc_load_path = SCM_VARIABLE_LOC (scm_c_define ("%load-path", SCM_EOL)); scm_loc_load_extensions = SCM_VARIABLE_LOC (scm_c_define ("%load-extensions", - scm_list_2 (scm_from_locale_string (".scm"), + scm_list_2 (scm_from_utf8_string (".scm"), scm_nullstr))); scm_loc_load_compiled_path = SCM_VARIABLE_LOC (scm_c_define ("%load-compiled-path", SCM_EOL)); scm_loc_load_compiled_extensions = SCM_VARIABLE_LOC (scm_c_define ("%load-compiled-extensions", - scm_list_1 (scm_from_locale_string (".go")))); + scm_list_1 (scm_from_utf8_string (".go")))); scm_loc_load_hook = SCM_VARIABLE_LOC (scm_c_define ("%load-hook", SCM_BOOL_F)); scm_loc_compile_fallback_path diff --git a/libguile/modules.c b/libguile/modules.c index b0327fced..0e8f083a0 100644 --- a/libguile/modules.c +++ b/libguile/modules.c @@ -1,4 +1,4 @@ -/* Copyright 1998,2000-2004,2006-2012,2017-2018 +/* Copyright 1998,2000-2004,2006-2012,2017-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -920,7 +920,7 @@ scm_post_boot_init_modules () default_duplicate_binding_procedures_var = scm_c_lookup ("default-duplicate-binding-procedures"); module_public_interface_var = scm_c_lookup ("module-public-interface"); - k_ensure = scm_from_locale_keyword ("ensure"); + k_ensure = scm_from_utf8_keyword ("ensure"); scm_module_system_booted_p = 1; } diff --git a/libguile/pairs.c b/libguile/pairs.c index b2dac983d..64222b424 100644 --- a/libguile/pairs.c +++ b/libguile/pairs.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1996,2000-2001,2004-2006,2008-2009,2011-2013,2018 +/* Copyright 1995-1996,2000-2001,2004-2006,2008-2013,2017-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -55,7 +55,7 @@ verify (SCM_BITS_DIFFER_IN_EXACTLY_ONE_BIT_POSITION \ void scm_error_pair_access (SCM non_pair) { static unsigned int running = 0; - SCM message = scm_from_locale_string ("Non-pair accessed with SCM_C[AD]R: `~S'\n"); + SCM message = scm_from_utf8_string ("Non-pair accessed with SCM_C[AD]R: `~S'\n"); if (!running) { diff --git a/libguile/posix.c b/libguile/posix.c index 43e353eb6..728b18b67 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -376,11 +376,11 @@ SCM_DEFINE (scm_getpwuid, "getpw", 0, 1, 0, SCM_SIMPLE_VECTOR_SET(result, 3, scm_from_ulong (entry->pw_gid)); SCM_SIMPLE_VECTOR_SET(result, 4, scm_from_locale_string (entry->pw_gecos)); if (!entry->pw_dir) - SCM_SIMPLE_VECTOR_SET(result, 5, scm_from_locale_string ("")); + SCM_SIMPLE_VECTOR_SET(result, 5, scm_from_utf8_string ("")); else SCM_SIMPLE_VECTOR_SET(result, 5, scm_from_locale_string (entry->pw_dir)); if (!entry->pw_shell) - SCM_SIMPLE_VECTOR_SET(result, 6, scm_from_locale_string ("")); + SCM_SIMPLE_VECTOR_SET(result, 6, scm_from_utf8_string ("")); else SCM_SIMPLE_VECTOR_SET(result, 6, scm_from_locale_string (entry->pw_shell)); return result; diff --git a/libguile/print.c b/libguile/print.c index 6eed1bec1..ecda3fb6e 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -1,4 +1,4 @@ -/* Copyright 1995-2004,2006,2008,2009-2015,2017-2018 +/* Copyright 1995-2004,2006,2008-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -1313,9 +1313,9 @@ scm_init_print () { SCM type; - type = scm_make_vtable (scm_from_locale_string (SCM_PRINT_STATE_LAYOUT), + type = scm_make_vtable (scm_from_utf8_string (SCM_PRINT_STATE_LAYOUT), SCM_BOOL_F); - scm_set_struct_vtable_name_x (type, scm_from_latin1_symbol ("print-state")); + scm_set_struct_vtable_name_x (type, scm_from_utf8_symbol ("print-state")); scm_print_state_vtable = type; /* Don't want to bind a wrapper class in GOOPS, so pass 0 as arg1. */ @@ -1326,8 +1326,8 @@ scm_init_print () scm_init_opts (scm_print_options, scm_print_opts); scm_print_opts[SCM_PRINT_HIGHLIGHT_PREFIX_I].val = - SCM_UNPACK (scm_from_locale_string ("{")); + SCM_UNPACK (scm_from_utf8_string ("{")); scm_print_opts[SCM_PRINT_HIGHLIGHT_SUFFIX_I].val = - SCM_UNPACK (scm_from_locale_string ("}")); + SCM_UNPACK (scm_from_utf8_string ("}")); scm_print_opts[SCM_PRINT_KEYWORD_STYLE_I].val = SCM_UNPACK (sym_reader); } diff --git a/libguile/random.c b/libguile/random.c index df592a972..c09c53388 100644 --- a/libguile/random.c +++ b/libguile/random.c @@ -1,4 +1,4 @@ -/* Copyright 1999-2001,2003,2005-2006,2009-2010,2012-2014,2017-2018 +/* Copyright 1999-2001,2003,2005-2006,2009-2010,2012-2014,2017-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -381,7 +381,10 @@ make_rstate (scm_t_rstate *state) * Scheme level interface. */ -SCM_GLOBAL_VARIABLE_INIT (scm_var_random_state, "*random-state*", scm_seed_to_random_state (scm_from_locale_string ("URL:http://stat.fsu.edu/~geo/diehard.html"))); +SCM_GLOBAL_VARIABLE_INIT (scm_var_random_state, "*random-state*", + scm_seed_to_random_state + (scm_from_utf8_string + ("URL:http://stat.fsu.edu/~geo/diehard.html"))); SCM_DEFINE (scm_random, "random", 1, 1, 0, (SCM n, SCM state), diff --git a/libguile/read.c b/libguile/read.c index da21f615a..019ffff7c 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1997,1999-2001,2003-2004,2006-2012,2014-2015,2018 +/* Copyright 1995-1997,1999-2001,2003-2004,2006-2012,2014-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -150,21 +150,21 @@ scm_i_input_error (char const *function, { SCM fn = (scm_is_string (SCM_FILENAME(port)) ? SCM_FILENAME(port) - : scm_from_locale_string ("#")); + : scm_from_utf8_string ("#")); SCM string_port = scm_open_output_string (); SCM string = SCM_EOL; scm_simple_format (string_port, - scm_from_locale_string ("~A:~S:~S: ~A"), + scm_from_utf8_string ("~A:~S:~S: ~A"), scm_list_4 (fn, scm_sum (scm_port_line (port), SCM_INUM1), scm_sum (scm_port_column (port), SCM_INUM1), - scm_from_locale_string (message))); + scm_from_utf8_string (message))); string = scm_get_output_string (string_port); scm_close_output_port (string_port); - scm_error_scm (scm_from_latin1_symbol ("read-error"), - function? scm_from_locale_string (function) : SCM_BOOL_F, + scm_error_scm (scm_from_utf8_symbol ("read-error"), + function? scm_from_utf8_string (function) : SCM_BOOL_F, string, arg, SCM_BOOL_F); @@ -2219,7 +2219,10 @@ SCM_DEFINE (scm_file_encoding, "file-encoding", 1, 0, 0, return SCM_BOOL_F; else { - s_enc = scm_string_upcase (scm_from_locale_string (enc)); + /* It's not obvious what encoding to use here, but latin1 has the + advantage of never causing a decoding error, and a valid + encoding name should be ASCII anyway. */ + s_enc = scm_string_upcase (scm_from_latin1_string (enc)); return s_enc; } diff --git a/libguile/regex-posix.c b/libguile/regex-posix.c index 0f359a654..a08da02db 100644 --- a/libguile/regex-posix.c +++ b/libguile/regex-posix.c @@ -1,4 +1,4 @@ -/* Copyright 1997-2001,2004,2006-2007,2010-2012,2018 +/* Copyright 1997-2001,2004,2006-2007,2010-2012,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -176,7 +176,7 @@ SCM_DEFINE (scm_make_regexp, "make-regexp", 1, 0, 1, SCM errmsg = scm_regexp_error_msg (status, rx); scm_gc_free (rx, sizeof(regex_t), "regex"); scm_error_scm (scm_regexp_error_key, - scm_from_locale_string (FUNC_NAME), + scm_from_utf8_string (FUNC_NAME), errmsg, SCM_BOOL_F, scm_list_1 (pat)); @@ -307,7 +307,7 @@ SCM_DEFINE (scm_regexp_exec, "regexp-exec", 2, 2, 0, if (status != 0 && status != REG_NOMATCH) scm_error_scm (scm_regexp_error_key, - scm_from_locale_string (FUNC_NAME), + scm_from_utf8_string (FUNC_NAME), scm_regexp_error_msg (status, SCM_RGX (rx)), SCM_BOOL_F, SCM_BOOL_F); return mvec; diff --git a/libguile/snarf.h b/libguile/snarf.h index 9d6b4ee27..54272d5c9 100644 --- a/libguile/snarf.h +++ b/libguile/snarf.h @@ -1,7 +1,7 @@ #ifndef SCM_SNARF_H #define SCM_SNARF_H -/* Copyright 1995-2004,2006,2009-2011,2013-2014,2018 +/* Copyright 1995-2004,2006,2009-2011,2013-2014,2017-2019 Free Software Foundation, Inc. This file is part of Guile. diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c index b43db11d7..3de8b5d3e 100644 --- a/libguile/srfi-13.c +++ b/libguile/srfi-13.c @@ -1,6 +1,4 @@ -/* srfi-13.c --- SRFI-13 procedures for Guile - - Copyright 2001,2004-2006,2008-2012,2018 +/* Copyright 2001,2004-2006,2008-2013,2017-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -415,7 +413,7 @@ SCM_DEFINE (scm_string_join, "string-join", 1, 2, 0, /* Validate the delimiter and record its length. */ if (SCM_UNBNDP (delimiter)) { - delimiter = scm_from_locale_string (" "); + delimiter = scm_from_utf8_string (" "); delimiter_len = 1; } else diff --git a/libguile/stacks.c b/libguile/stacks.c index 044e4cefb..36842920b 100644 --- a/libguile/stacks.c +++ b/libguile/stacks.c @@ -1,4 +1,4 @@ -/* Copyright 1996-1997,2000-2001,2006-2014,2017-2018 +/* Copyright 1996-1997,2000-2001,2006-2015,2017-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -469,9 +469,9 @@ scm_init_stacks () scm_sys_stacks = scm_make_thread_local_fluid (SCM_BOOL_F); scm_c_define ("%stacks", scm_sys_stacks); - scm_stack_type = scm_make_vtable (scm_from_locale_string (SCM_STACK_LAYOUT), + scm_stack_type = scm_make_vtable (scm_from_utf8_string (SCM_STACK_LAYOUT), SCM_UNDEFINED); scm_set_struct_vtable_name_x (scm_stack_type, - scm_from_latin1_symbol ("stack")); + scm_from_utf8_symbol ("stack")); #include "stacks.x" } diff --git a/libguile/stime.c b/libguile/stime.c index 351538818..964828bf4 100644 --- a/libguile/stime.c +++ b/libguile/stime.c @@ -1,4 +1,4 @@ -/* Copyright 1995-2001,2003-2009,2011,2013-2014,2018 +/* Copyright 1995-2001,2003-2009,2011,2013-2014,2016-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -698,7 +698,7 @@ SCM_DEFINE (scm_strftime, "strftime", 2, 0, 0, some OSs, e.g., Solaris. */ SCM zone = scm_string_append (scm_list_2 (zone_spec, - scm_from_locale_string ("0"))); + scm_from_utf8_string ("0"))); have_zone = 1; scm_pthread_mutex_lock (&tz_lock); diff --git a/libguile/strports.c b/libguile/strports.c index c23b0bac6..a9bcdc2cb 100644 --- a/libguile/strports.c +++ b/libguile/strports.c @@ -1,4 +1,4 @@ -/* Copyright 1995,1996,1998-2003,2005-2006,2009-2014,2018 +/* Copyright 1995,1996,1998-2003,2005-2006,2009-2014,2016-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -348,7 +348,7 @@ static void init_eval_string_var_and_k_module (void) { eval_string_var = scm_c_public_variable ("ice-9 eval-string", "eval-string"); - k_module = scm_from_locale_keyword ("module"); + k_module = scm_from_utf8_keyword ("module"); } SCM_DEFINE (scm_eval_string_in_module, "eval-string", 1, 1, 0, diff --git a/libguile/values.c b/libguile/values.c index 8603aa3f1..522a8f5e5 100644 --- a/libguile/values.c +++ b/libguile/values.c @@ -1,4 +1,4 @@ -/* Copyright 2000-2001,2006,2008-2009,2011-2012,2017-2018 +/* Copyright 2000-2001,2006,2008-2009,2011-2013,2016-2019 Free Software Foundation, Inc. This file is part of Guile.