diff options
author | Andy Wingo <wingo@pobox.com> | 2011-01-05 18:21:54 -0600 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-01-07 09:18:36 -0800 |
commit | d40e1ca893149e9781bad54ac1e39d03e7be988f (patch) | |
tree | 65d09a9a0a194ee7dad0275c11f93cf8836d9457 /libguile/strings.h | |
parent | 929ccf48fc4bada585b29b3887f295bfcc1dcdaa (diff) | |
download | guile-d40e1ca893149e9781bad54ac1e39d03e7be988f.tar.gz |
add scm_{to,from}_{utf8,latin1}_string{n,}
* libguile/strings.h:
* libguile/strings.c (scm_from_latin1_string, scm_to_latin1_string): New
functions, in terms of the latin1_stringn variants.
(scm_from_utf8_string, scm_from_utf8_stringn)
(scm_to_utf8_string, scm_to_utf8_stringn): New functions.
(scm_i_from_utf8_string, scm_i_to_utf8_string): Removed these internal
functions.
(scm_from_stringn): Handle -1 as a length. Unlike the previous
behavior of scm_from_locale_string (NULL), which returned the empty
string, we now raise an error. The null pointer is not the same as
the empty string.
* libguile/stime.c (scm_strftime, scm_strptime): Adapt to publishing of
utf8 functions.
Diffstat (limited to 'libguile/strings.h')
-rw-r--r-- | libguile/strings.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/libguile/strings.h b/libguile/strings.h index 00bc22430..1a8ff7c33 100644 --- a/libguile/strings.h +++ b/libguile/strings.h @@ -3,7 +3,7 @@ #ifndef SCM_STRINGS_H #define SCM_STRINGS_H -/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2004, 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2004, 2005, 2006, 2008, 2009, 2010, 2011 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 @@ -125,18 +125,31 @@ SCM_API SCM scm_c_substring_read_only (SCM str, size_t start, size_t end); SCM_API SCM scm_c_substring_shared (SCM str, size_t start, size_t end); SCM_API SCM scm_c_substring_copy (SCM str, size_t start, size_t end); -SCM_API SCM scm_from_latin1_stringn (const char *str, size_t len); +/* Use locale encoding for user input, user output, or interacting with + the C library. Use latin1 for ASCII, and for literals in source + code. Use utf8 for interaction with modern libraries which deal in + UTF-8. Otherwise use scm_to_stringn or scm_from_stringn with a + specific encoding. */ + SCM_API SCM scm_from_locale_string (const char *str); SCM_API SCM scm_from_locale_stringn (const char *str, size_t len); -SCM_INTERNAL SCM scm_i_from_utf8_string (const scm_t_uint8 *str); SCM_API SCM scm_take_locale_string (char *str); SCM_API SCM scm_take_locale_stringn (char *str, size_t len); -SCM_API char *scm_to_latin1_stringn (SCM str, size_t *lenp); SCM_API char *scm_to_locale_string (SCM str); SCM_API char *scm_to_locale_stringn (SCM str, size_t *lenp); + +SCM_API SCM scm_from_latin1_string (const char *str); +SCM_API SCM scm_from_latin1_stringn (const char *str, size_t len); +SCM_API char *scm_to_latin1_string (SCM str); +SCM_API char *scm_to_latin1_stringn (SCM str, size_t *lenp); + +SCM_API char *scm_to_utf8_string (SCM str); +SCM_API char *scm_to_utf8_stringn (SCM str, size_t *lenp); +SCM_API SCM scm_from_utf8_string (const char *str); +SCM_API SCM scm_from_utf8_stringn (const char *str, size_t len); + SCM_API char *scm_to_stringn (SCM str, size_t *lenp, const char *encoding, scm_t_string_failed_conversion_handler handler); -SCM_INTERNAL scm_t_uint8 *scm_i_to_utf8_string (SCM str); SCM_API size_t scm_to_locale_stringbuf (SCM str, char *buf, size_t max_len); SCM_API SCM scm_string_normalize_nfd (SCM str); |