summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2018-10-16 02:34:18 -0400
committerMark H Weaver <mhw@netris.org>2018-10-17 21:38:43 -0400
commitc2a654b7d29f5e2f32fd1313cc80162fd0c8f992 (patch)
treeb7d3afb6adec15951465ad37ad2242017905a52a
parent3845343cf33b6fb81c772a65e238c5377668789d (diff)
Use 'scm_from_utf8_{string,symbol,keyword}' for C string literals.
Partial fix for <https://bugs.gnu.org/33044>. Reported by Tom de Vries <tdevries@suse.de>. 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.
-rw-r--r--libguile/debug-malloc.c5
-rw-r--r--libguile/deprecation.c5
-rw-r--r--libguile/error.c16
-rw-r--r--libguile/eval.c22
-rw-r--r--libguile/expand.c11
-rw-r--r--libguile/extensions.c9
-rw-r--r--libguile/filesys.c6
-rw-r--r--libguile/init.c5
-rw-r--r--libguile/load.c37
-rw-r--r--libguile/modules.c5
-rw-r--r--libguile/pairs.c6
-rw-r--r--libguile/posix.c8
-rw-r--r--libguile/print.c11
-rw-r--r--libguile/random.c9
-rw-r--r--libguile/read.c17
-rw-r--r--libguile/regex-posix.c7
-rw-r--r--libguile/snarf.h8
-rw-r--r--libguile/srfi-13.c5
-rw-r--r--libguile/stacks.c8
-rw-r--r--libguile/stime.c6
-rw-r--r--libguile/strports.c6
-rw-r--r--libguile/values.c5
22 files changed, 115 insertions, 102 deletions
diff --git a/libguile/debug-malloc.c b/libguile/debug-malloc.c
index fa3612de2..2f2d0ab74 100644
--- a/libguile/debug-malloc.c
+++ b/libguile/debug-malloc.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000, 2006, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2002, 2004, 2006, 2008, 2009, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -221,7 +222,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 aa50eaf8c..6ebe398f8 100644
--- a/libguile/deprecation.c
+++ b/libguile/deprecation.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2001, 2006, 2010, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005, 2006, 2009-2012, 2016, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -117,7 +118,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 ff84f41d8..7a8657846 100644
--- a/libguile/error.c
+++ b/libguile/error.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1995-1998, 2000, 2001, 2004, 2006, 2010, 2012-2014
- * Free Software Foundation, Inc.
+/* Copyright (C) 1995-1998, 2000, 2001, 2004, 2006, 2010, 2012-2016,
+ * 2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -58,8 +58,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);
}
@@ -239,7 +239,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);
}
@@ -262,8 +262,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));
@@ -273,7 +273,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 e9ff02a8b..a1e7f5b70 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -1,6 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,
- * 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
- * Free Software Foundation, Inc.
+/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -197,22 +195,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));
}
@@ -230,9 +228,9 @@ truncate_values (SCM x)
return scm_car (l);
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 fc7da54a8..f00e66420 100644
--- a/libguile/expand.c
+++ b/libguile/expand.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014
- * Free Software Foundation, Inc.
+/* Copyright (C) 1995-2014, 2016, 2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -217,7 +216,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;
@@ -480,7 +479,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);
@@ -1589,7 +1588,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);
@@ -1631,7 +1630,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 1c3d28f4a..ab108930d 100644
--- a/libguile/extensions.c
+++ b/libguile/extensions.c
@@ -1,6 +1,7 @@
/* extensions.c - registering and loading extensions.
*
- * Copyright (C) 2001, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2004, 2006, 2009-2011, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -90,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)
@@ -123,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 05dd2bd16..e1aeeed1b 100644
--- a/libguile/filesys.c
+++ b/libguile/filesys.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2006,
- * 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017, 2018 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2002, 2004, 2006, 2009-2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -1945,7 +1945,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 "libguile/filesys.x"
}
diff --git a/libguile/init.c b/libguile/init.c
index b046685d4..00d2e806a 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995-2004, 2006, 2009-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2004, 2006, 2009-2014, 2016-2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -241,7 +242,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/load.c b/libguile/load.c
index 7b8136af8..c209812dc 100644
--- a/libguile/load.c
+++ b/libguile/load.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2004, 2006, 2008,
- * 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1998-2001, 2004, 2006, 2008-2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -146,7 +146,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 */
@@ -158,7 +158,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 */
@@ -184,7 +184,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 */
@@ -197,7 +197,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 */
@@ -302,6 +302,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++;
@@ -331,10 +334,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)
@@ -344,8 +347,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 */
@@ -946,7 +949,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
@@ -1272,10 +1275,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))
@@ -1333,13 +1336,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 bf60d4d1a..e4cccd2bc 100644
--- a/libguile/modules.c
+++ b/libguile/modules.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1998,2000,2001,2002,2003,2004,2006,2007,2008,2009,2010,2011,2012,2018 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000-2004, 2006-2012, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -902,7 +903,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 cea545236..92f9cfa38 100644
--- a/libguile/pairs.c
+++ b/libguile/pairs.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1995,1996,2000,2001, 2004, 2005, 2006, 2008, 2009,
- * 2011, 2012, 2013 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 2000, 2001, 2004-2006, 2008-2013,
+ * 2017, 2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -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 d8200926d..7ede7b756 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -1,6 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- * 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
- * 2014, 2016, 2017, 2018 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2014, 2016-2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -372,11 +370,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 24c532f29..6b5b16b61 100644
--- a/libguile/print.c
+++ b/libguile/print.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1995-1999, 2000, 2001, 2002, 2003, 2004, 2006, 2008,
- * 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2004, 2006, 2008-2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -1290,9 +1289,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. */
@@ -1303,9 +1302,9 @@ 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 1604b465d..05147edf3 100644
--- a/libguile/random.c
+++ b/libguile/random.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1999, 2000, 2001, 2003, 2005, 2006, 2009, 2010,
- * 2012, 2013, 2014 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2001, 2003, 2005, 2006, 2009, 2010, 2012-2014,
+ * 2017, 2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -374,7 +374,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 0946ff379..45bb6a799 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2006-2012, 2014, 2015
+/* Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2006-2012, 2014-2018
* Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -142,21 +142,21 @@ scm_i_input_error (char const *function,
{
SCM fn = (scm_is_string (SCM_FILENAME(port))
? SCM_FILENAME(port)
- : scm_from_locale_string ("#<unknown port>"));
+ : scm_from_utf8_string ("#<unknown port>"));
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);
@@ -2211,7 +2211,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 9350fb38b..d3dd6d876 100644
--- a/libguile/regex-posix.c
+++ b/libguile/regex-posix.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2006, 2007, 2010, 2011, 2012 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2001, 2004, 2006, 2007, 2010-2012, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -173,7 +174,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));
@@ -304,7 +305,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 aafd5bd13..c9c3a587c 100644
--- a/libguile/snarf.h
+++ b/libguile/snarf.h
@@ -3,8 +3,8 @@
#ifndef SCM_SNARF_H
#define SCM_SNARF_H
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- * 2004, 2006, 2009, 2010, 2011, 2013, 2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2004, 2006, 2009-2011, 2013, 2014, 2017, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -180,11 +180,11 @@ SCM_SNARF_INIT(c_name = scm_from_utf8_symbol (scheme_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))
#define SCM_VARIABLE(c_name, scheme_name) \
SCM_SNARF_HERE(static SCM c_name) \
diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c
index c77cba9b2..3ff44fb6c 100644
--- a/libguile/srfi-13.c
+++ b/libguile/srfi-13.c
@@ -1,6 +1,7 @@
/* srfi-13.c --- SRFI-13 procedures for Guile
*
- * Copyright (C) 2001, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2004-2006, 2008-2013, 2017, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -405,7 +406,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 76e10faf3..c4dd317f7 100644
--- a/libguile/stacks.c
+++ b/libguile/stacks.c
@@ -1,5 +1,7 @@
/* A stack holds a frame chain
- * Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2017 Free Software Foundation
+ *
+ * Copyright (C) 1996, 1997, 2000, 2001, 2006-2015, 2017, 2018
+ * Free Software Foundation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -462,10 +464,10 @@ 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 "libguile/stacks.x"
}
diff --git a/libguile/stime.c b/libguile/stime.c
index 4a7829833..c5b258d4c 100644
--- a/libguile/stime.c
+++ b/libguile/stime.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009, 2011, 2013, 2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2001, 2003-2009, 2011, 2013, 2014, 2016-2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -696,7 +696,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 5f78785d1..b01282ee1 100644
--- a/libguile/strports.c
+++ b/libguile/strports.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006,
- * 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1998-2003, 2005, 2006, 2009-2014,
+ * 2016-2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -344,7 +344,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 2b2ec3f51..131784a4e 100644
--- a/libguile/values.c
+++ b/libguile/values.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000, 2001, 2006, 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2006, 2008, 2009, 2011-2013, 2016, 2018
+ * Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -141,7 +142,7 @@ scm_init_values (void)
{
SCM print = scm_c_define_gsubr ("%print-values", 2, 0, 0, print_values);
- scm_values_vtable = scm_make_vtable (scm_from_locale_string ("pr"), print);
+ scm_values_vtable = scm_make_vtable (scm_from_utf8_string ("pr"), print);
scm_add_feature ("values");