mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Changes from arch/CVS synchronization
This commit is contained in:
parent
cbea802b37
commit
b89c494395
20 changed files with 1607 additions and 343 deletions
|
@ -1,3 +1,12 @@
|
|||
2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* GUILE-VERSION: Added `LIBGUILE_I18N_*'.
|
||||
|
||||
* configure.in: Look for `strcoll_l ()' and `newlocale ()'.
|
||||
Substitute the `LIBGUILE_I18N_' variables.
|
||||
|
||||
* NEWS: Mention `(ice-9 i18n)'.
|
||||
|
||||
2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* README: Note need for subscription to bug-guile@gnu.org.
|
||||
|
|
|
@ -54,3 +54,9 @@ LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT=3
|
|||
LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION=0
|
||||
LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE=0
|
||||
LIBGUILE_SRFI_SRFI_60_INTERFACE="${LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT}:${LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION}:${LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE}"
|
||||
|
||||
LIBGUILE_I18N_MAJOR=0
|
||||
LIBGUILE_I18N_INTERFACE_CURRENT=0
|
||||
LIBGUILE_I18N_INTERFACE_REVISION=0
|
||||
LIBGUILE_I18N_INTERFACE_AGE=0
|
||||
LIBGUILE_I18N_INTERFACE="${LIBGUILE_I18N_INTERFACE_CURRENT}:${LIBGUILE_INTERFACE_REVISION}:${LIBGUILE_I18N_INTERFACE_AGE}"
|
||||
|
|
2
NEWS
2
NEWS
|
@ -39,6 +39,8 @@ Changes in 1.8.1 (since 1.8.0):
|
|||
** scm_exp - [C]
|
||||
** scm_sqrt - [C]
|
||||
|
||||
* New `(ice-9 i18n)' module (see the manual for details)
|
||||
|
||||
* Bugs fixed
|
||||
|
||||
** Build problems have been fixed on MacOS, SunOS, and QNX.
|
||||
|
|
10
configure.in
10
configure.in
|
@ -616,8 +616,9 @@ AC_CHECK_HEADERS([assert.h crt_externs.h])
|
|||
# truncate - not in mingw
|
||||
# isblank - available as a GNU extension or in C99
|
||||
# _NSGetEnviron - Darwin specific
|
||||
# strcoll_l, newlocale - GNU extensions (glibc)
|
||||
#
|
||||
AC_CHECK_FUNCS([DINFINITY DQNAN chsize clog10 ctermid fesetround ftime ftruncate fchown getcwd geteuid gettimeofday gmtime_r ioctl lstat mkdir mknod nice readdir_r readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt stat64 strftime strptime symlink sync sysconf tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron])
|
||||
AC_CHECK_FUNCS([DINFINITY DQNAN chsize clog10 ctermid fesetround ftime ftruncate fchown getcwd geteuid gettimeofday gmtime_r ioctl lstat mkdir mknod nice readdir_r readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt stat64 strftime strptime symlink sync sysconf tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron strcoll strcoll_l newlocale])
|
||||
|
||||
# Reasons for testing:
|
||||
# netdb.h - not in mingw
|
||||
|
@ -1275,6 +1276,13 @@ AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION)
|
|||
AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE)
|
||||
AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE)
|
||||
|
||||
AC_SUBST(LIBGUILE_I18N_MAJOR)
|
||||
AC_SUBST(LIBGUILE_I18N_INTERFACE_CURRENT)
|
||||
AC_SUBST(LIBGUILE_I18N_INTERFACE_REVISION)
|
||||
AC_SUBST(LIBGUILE_I18N_INTERFACE_AGE)
|
||||
AC_SUBST(LIBGUILE_I18N_INTERFACE)
|
||||
|
||||
|
||||
#######################################################################
|
||||
|
||||
dnl Tell guile-config what flags guile users should compile and link with.
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* Makefile.am (BUILT_SOURCES): New variable.
|
||||
(lib-version.texi): New target.
|
||||
|
||||
* guile.texi: Include `lib-version.texi'.
|
||||
|
||||
* api-data.texi (Conversion): Link to `The ice-9 i18n Module' when
|
||||
describing `string->number'.
|
||||
(String Comparison): Likewise.
|
||||
|
||||
* api-i18n.texi (Internationalization)[The ice-9 i18n Module]: New
|
||||
node.
|
||||
[Gettext Support]: New node; contains text formerly in
|
||||
`Internationalization'.
|
||||
|
||||
* posix.texi (Locales): Added a link to the glibc manual
|
||||
describing the various locale categories. Mention locale objects
|
||||
and link to `The ice-9 i18n Module' when describing `setlocale'.
|
||||
|
||||
2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* intro.texi (Reporting Bugs): Note need for subscription to
|
||||
|
@ -87,7 +107,7 @@
|
|||
* api-data.texi (Scientific): In sqrt, note it's the positive root
|
||||
which is returned (as per R5RS).
|
||||
|
||||
2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* api-data.texi (Standard Character Sets): Documented the
|
||||
charset recomputation upon successful `setlocale'.
|
||||
|
@ -214,12 +234,12 @@
|
|||
* posix.texi (Time): In tm:gmtoff, give example values, note not the
|
||||
same as C tm_gmtoff.
|
||||
|
||||
2006-06-16 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-06-16 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* api-utility.texi (Equality): Mentioned the behavior of `equal?'
|
||||
for structures (as suggested by Kevin Ryde).
|
||||
|
||||
2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* api-compound.texi (Structure Concepts): Mentioned the behavior
|
||||
of `equal?' for structures.
|
||||
|
@ -286,7 +306,7 @@
|
|||
SCM_SIMPLE_VECTOR_SET not SCM_SIMPLE_VECTOR_SET_X, the former is
|
||||
what's in vector.h.
|
||||
|
||||
2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* api-data.texi (Conversion): Add scm_c_locale_stringn_to_number.
|
||||
|
||||
|
@ -338,7 +358,7 @@
|
|||
contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
|
||||
Updated documentation.
|
||||
|
||||
2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* api-data.texi (Operations Related to Symbols):
|
||||
Documented `scm_take_locale_symbol ()'.
|
||||
|
@ -380,7 +400,7 @@
|
|||
|
||||
2005-11-06 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
From Ludovic Courtès, partial rework by me:
|
||||
From Ludovic Courtès, partial rework by me:
|
||||
* doc/ref/api-modules.texi (Creating Guile Modules): In define-module,
|
||||
describe #:re-export, #:export-syntax, #:re-export-syntax, #:replace
|
||||
and #:duplicates. Add re-export.
|
||||
|
@ -393,7 +413,7 @@
|
|||
|
||||
* posix.texi (Network Socket Address): Add scm_make_socket_address,
|
||||
scm_c_make_socket_address, scm_from_sockaddr, scm_to_sockaddr. This
|
||||
change by Ludovic Courtès and revised a bit by me.
|
||||
change by Ludovic Courtès and revised a bit by me.
|
||||
|
||||
2005-10-27 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
|
@ -2499,3 +2519,8 @@
|
|||
The change log for files in this directory continues backwards
|
||||
from 2001-08-27 in ../ChangeLog, as all the Guile documentation
|
||||
prior to this date was contained in a single directory.
|
||||
|
||||
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
BUILT_SOURCES = lib-version.texi
|
||||
|
||||
|
||||
info_TEXINFOS = guile.texi
|
||||
|
||||
guile_TEXINFOS = preface.texi \
|
||||
|
@ -86,4 +89,10 @@ autoconf.texi: autoconf-macros.texi
|
|||
autoconf-macros.texi: $(top_srcdir)/guile-config/guile.m4
|
||||
$(preinstguiletool)/snarf-guile-m4-docs $< > $(srcdir)/$@
|
||||
|
||||
lib-version.texi: $(top_srcdir)/GUILE-VERSION
|
||||
cat "$^" | grep '^LIBGUILE_.*_MAJOR' | \
|
||||
sed 's/^LIBGUILE_\([A-Z0-9_]*\)_MAJOR=\([0-9]\+\)/@set LIBGUILE_\1_MAJOR \2/' \
|
||||
> "$@"
|
||||
|
||||
|
||||
MAINTAINERCLEANFILES = autoconf-macros.texi
|
||||
|
|
|
@ -1012,6 +1012,12 @@ zero.
|
|||
@rnindex number->string
|
||||
@rnindex string->number
|
||||
|
||||
The following procedures read and write numbers according to their
|
||||
external representation as defined by R5RS (@pxref{Lexical structure,
|
||||
R5RS Lexical Structure,, r5rs, The Revised^5 Report on the Algorithmic
|
||||
Language Scheme}). @xref{The ice-9 i18n Module, the @code{(ice-9
|
||||
i18n)} module}, for locale-dependent number parsing.
|
||||
|
||||
@deffn {Scheme Procedure} number->string n [radix]
|
||||
@deffnx {C Function} scm_number_to_string (n, radix)
|
||||
Return a string holding the external representation of the
|
||||
|
@ -2943,7 +2949,8 @@ predicates (@pxref{Characters}), but are defined on character sequences.
|
|||
The first set is specified in R5RS and has names that end in @code{?}.
|
||||
The second set is specified in SRFI-13 and the names have no ending
|
||||
@code{?}. The predicates ending in @code{-ci} ignore the character case
|
||||
when comparing strings.
|
||||
when comparing strings. @xref{The ice-9 i18n Module, the @code{(ice-9
|
||||
i18n)} module}, for locale-dependent string comparison.
|
||||
|
||||
@rnindex string=?
|
||||
@deffn {Scheme Procedure} string=? s1 s2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -8,6 +8,292 @@
|
|||
@node Internationalization
|
||||
@section Support for Internationalization
|
||||
|
||||
@cindex internationalization
|
||||
@cindex i18n
|
||||
|
||||
Guile provides internationalization support for Scheme programs in two
|
||||
ways. First, procedures to manipulate text and data in a way that
|
||||
conforms to particular cultural conventions (i.e., in a
|
||||
``locale-dependent'' way) are provided in the @code{(ice-9 i18n)}.
|
||||
Second, Guile allows the use of GNU @code{gettext} to translate
|
||||
program message strings.
|
||||
|
||||
@menu
|
||||
* The ice-9 i18n Module:: Honoring cultural conventions.
|
||||
* Gettext Support:: Translating message strings.
|
||||
@end menu
|
||||
|
||||
|
||||
@node The ice-9 i18n Module
|
||||
@subsection The @code{(ice-9 i18n)} Module
|
||||
|
||||
In order to make use of the following functions, one must import the
|
||||
@code{(ice-9 i18n)} module in the usual way:
|
||||
|
||||
@example
|
||||
(use-modules (ice-9 i18n))
|
||||
@end example
|
||||
|
||||
@cindex libguile-i18n-v-@value{LIBGUILE_I18N_MAJOR}
|
||||
|
||||
C programs can use the C functions corresponding to the procedures of
|
||||
this module by including @code{<libguile/i18n.h>} and by linking
|
||||
against @code{libguile-i18n-v-@value{LIBGUILE_I18N_MAJOR}}.
|
||||
|
||||
@cindex cultural conventions
|
||||
|
||||
The @code{(ice-9 i18n)} module provides procedures to manipulate text
|
||||
and other data in a way that conforms to the cultural conventions
|
||||
chosen by the user. Each region of the world or language has its own
|
||||
customs to, for instance, represent real numbers, classify characters,
|
||||
collate text, etc. All these aspects comprise the so-called
|
||||
``cultural conventions'' of that region or language.
|
||||
|
||||
@cindex locale
|
||||
@cindex locale category
|
||||
|
||||
Computer systems typically refer to a set of cultural conventions as a
|
||||
@dfn{locale}. For each particular aspect that comprise those cultural
|
||||
conventions, a @dfn{locale category} is defined. For instance, the
|
||||
way characters are classified is defined by the @code{LC_CTYPE}
|
||||
category, while the language in which program messages are issued to
|
||||
the user is defined by the @code{LC_MESSAGES} category
|
||||
(@pxref{Locales, General Locale Information} for details).
|
||||
|
||||
@cindex locale object
|
||||
|
||||
The procedures provided by this module allow the development of
|
||||
programs that adapt automatically to any locale setting. As we will
|
||||
see later, many of the locale-dependent procedures provided by this
|
||||
module can optionally take a @dfn{locale object} argument. This
|
||||
additional argument defines the locale settings that must be followed
|
||||
by the invoked procedure. When it is omitted, then the current locale
|
||||
settings of the process are followed (@pxref{Locales,
|
||||
@code{setlocale}}).
|
||||
|
||||
The following procedures allow the manipulation of such locale
|
||||
objects.
|
||||
|
||||
@deffn {Scheme Procedure} make-locale category-mask locale-name [base-locale]
|
||||
@deffnx {C Function} scm_make_locale (category_mask, locale_name, base_locale)
|
||||
Return a reference to a data structure representing a set of locale
|
||||
datasets. @var{locale-name} should be a string denoting a particular
|
||||
locale, e.g., @code{"aa_DJ"}. Unlike for the @var{category} parameter
|
||||
for @code{setlocale}, the @var{category-mask} parameter here uses a
|
||||
single bit for each category, made by OR'ing together @code{LC_*_MASK}
|
||||
bits. The optional @var{base-locale} argument can be used to specify
|
||||
a locale object whose settings are to be used as a basis for the
|
||||
locale object being returned.
|
||||
|
||||
The available locale category masks are the following:
|
||||
|
||||
@defvar LC_COLLATE_MASK
|
||||
Represents the collation locale category.
|
||||
@end defvar
|
||||
@defvar LC_CTYPE_MASK
|
||||
Represents the character classification locale category.
|
||||
@end defvar
|
||||
@defvar LC_MESSAGES_MASK
|
||||
Represents the messages locale category.
|
||||
@end defvar
|
||||
@defvar LC_MONETARY_MASK
|
||||
Represents the monetary locale category.
|
||||
@end defvar
|
||||
@defvar LC_NUMERIC_MASK
|
||||
Represents the way numbers are displayed.
|
||||
@end defvar
|
||||
@defvar LC_TIME_MASK
|
||||
Represents the way date and time are displayed
|
||||
@end defvar
|
||||
|
||||
The following category masks are also available but will not have any
|
||||
effect on systems that do not support them:
|
||||
|
||||
@defvar LC_PAPER_MASK
|
||||
@defvarx LC_NAME_MASK
|
||||
@defvarx LC_ADDRESS_MASK
|
||||
@defvarx LC_TELEPHONE_MASK
|
||||
@defvarx LC_MEASUREMENT_MASK
|
||||
@defvarx LC_IDENTIFICATION_MASK
|
||||
@end defvar
|
||||
|
||||
Finally, there is also:
|
||||
|
||||
@defvar LC_ALL_MASK
|
||||
This represents all the locale categories supported by the system.
|
||||
@end defvar
|
||||
|
||||
The @code{LC_*_MASK} variables are bound to integers which may be OR'd
|
||||
together using @code{logior} (@pxref{Primitive Numerics,
|
||||
@code{logior}}). For instance, the following invocation creates a
|
||||
locale object that combines the use of Esperanto for messages and
|
||||
character classification with the default settings for the other
|
||||
categories (i.e., the settings of the default @code{C} locale which
|
||||
usually represents conventions in use in the USA):
|
||||
|
||||
@example
|
||||
(make-locale (logior LC_MESSAGE_MASK LC_CTYPE_MASK) "eo_EO")
|
||||
@end example
|
||||
|
||||
The following example combines the use of Swedish conventions with
|
||||
monetary conventions from Croatia:
|
||||
|
||||
@example
|
||||
(make-locale LC_MONETARY_MASK "hr_HR"
|
||||
(make-locale LC_ALL_MASK "sv_SE"))
|
||||
@end example
|
||||
|
||||
A @code{system-error} exception (@pxref{Handling Errors}) is raised by
|
||||
@code{make-locale} when @var{locale-name} does not match any of the
|
||||
locales compiled on the system. Note that on non-GNU systems, this
|
||||
error may be raised later, when the locale object is actually used.
|
||||
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} locale? obj
|
||||
@deffnx {C Function} scm_locale_p (obj)
|
||||
Return true if @var{obj} is a locale object.
|
||||
@end deffn
|
||||
|
||||
The following procedures provide support for text collation.
|
||||
|
||||
@deffn {Scheme Procedure} string-locale<? s1 s2 [locale]
|
||||
@deffnx {C Function} scm_string_locale_lt (s1, s2, locale)
|
||||
Compare strings @var{s1} and @var{s2} in a locale-dependent way. If
|
||||
@var{locale} is provided, it should be locale object (as returned by
|
||||
@code{make-locale}) and will be used to perform the comparison;
|
||||
otherwise, the current system locale is used.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} string-locale>? s1 s2 [locale]
|
||||
@deffnx {C Function} scm_string_locale_gt (s1, s2, locale)
|
||||
Compare strings @var{s1} and @var{s2} in a locale-dependent way. If
|
||||
@var{locale} is provided, it should be locale object (as returned by
|
||||
@code{make-locale}) and will be used to perform the comparison;
|
||||
otherwise, the current system locale is used.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} string-locale-ci<? s1 s2 [locale]
|
||||
@deffnx {C Function} scm_string_locale_ci_lt (s1, s2, locale)
|
||||
Compare strings @var{s1} and @var{s2} in a case-insensitive, and
|
||||
locale-dependent way. If @var{locale} is provided, it should be
|
||||
locale object (as returned by @code{make-locale}) and will be used to
|
||||
perform the comparison; otherwise, the current system locale is used.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} string-locale-ci>? s1 s2 [locale]
|
||||
@deffnx {C Function} scm_string_locale_ci_gt (s1, s2, locale)
|
||||
Compare strings @var{s1} and @var{s2} in a case-insensitive, and
|
||||
locale-dependent way. If @var{locale} is provided, it should be
|
||||
locale object (as returned by @code{make-locale}) and will be used to
|
||||
perform the comparison; otherwise, the current system locale is used.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} string-locale-ci=? s1 s2 [locale]
|
||||
@deffnx {C Function} scm_string_locale_ci_eq (s1, s2, locale)
|
||||
Compare strings @var{s1} and @var{s2} in a case-insensitive, and
|
||||
locale-dependent way. If @var{locale} is provided, it should be
|
||||
locale object (as returned by @code{make-locale}) and will be used to
|
||||
perform the comparison; otherwise, the current system locale is used.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} char-locale<? c1 c2 [locale]
|
||||
@deffnx {C Function} scm_char_locale_lt (c1, c2, locale)
|
||||
Return true if character @var{c1} is lower than @var{c2} according to
|
||||
@var{locale} or to the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} char-locale>? c1 c2 [locale]
|
||||
@deffnx {C Function} scm_char_locale_gt (c1, c2, locale)
|
||||
Return true if character @var{c1} is greater than @var{c2} according
|
||||
to @var{locale} or to the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} char-locale-ci<? c1 c2 [locale]
|
||||
@deffnx {C Function} scm_char_locale_ci_lt (c1, c2, locale)
|
||||
Return true if character @var{c1} is lower than @var{c2}, in a case
|
||||
insensitive way according to @var{locale} or to the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} char-locale-ci>? c1 c2 [locale]
|
||||
@deffnx {C Function} scm_char_locale_ci_gt (c1, c2, locale)
|
||||
Return true if character @var{c1} is greater than @var{c2}, in a case
|
||||
insensitive way according to @var{locale} or to the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} char-locale-ci=? c1 c2 [locale]
|
||||
@deffnx {C Function} scm_char_locale_ci_eq (c1, c2, locale)
|
||||
Return true if character @var{c1} is equal to @var{c2}, in a case
|
||||
insensitive way according to @var{locale} or to the current locale.
|
||||
@end deffn
|
||||
|
||||
The procedures below provide support for ``character case mapping'',
|
||||
i.e., to convert characters or strings to their upper-case or
|
||||
lower-case equivalent. Note that SRFI-13 provides procedures that
|
||||
look similar (@pxref{Alphabetic Case Mapping}). However, the SRFI-13
|
||||
procedures are locale-independent. Therefore, they do not take into
|
||||
account specificities of the customs in use in a particular language
|
||||
or region of the world. For instance, while most languages using the
|
||||
Latin alphabet map lower-case letter ``i'' to upper-case letter ``I'',
|
||||
Turkish maps lower-case ``i'' to ``Latin capital letter I with dot
|
||||
above''. The following procedures allow to provide idiomatic
|
||||
character mapping.
|
||||
|
||||
@deffn {Scheme Procedure} char-locale-downcase chr [locale]
|
||||
@deffnx {C Function} scm_char_locale_upcase (chr, locale)
|
||||
Return the lowercase character that corresponds to @var{chr} according
|
||||
to either @var{locale} or the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} char-locale-upcase chr [locale]
|
||||
@deffnx {C Function} scm_char_locale_downcase (chr, locale)
|
||||
Return the uppercase character that corresponds to @var{chr} according
|
||||
to either @var{locale} or the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} string-locale-upcase str [locale]
|
||||
@deffnx {C Function} scm_string_locale_upcase (str, locale)
|
||||
Return a new string that is the uppercase version of @var{str}
|
||||
according to either @var{locale} or the current locale.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} string-locale-downcase str [locale]
|
||||
@deffnx {C Function} scm_string_locale_downcase (str, locale)
|
||||
Return a new string that is the down-case version of @var{str}
|
||||
according to either @var{locale} or the current locale.
|
||||
@end deffn
|
||||
|
||||
Finally, the following procedures allow programs to read numbers
|
||||
written according to a particular locale. As an example, in English,
|
||||
``ten thousand and a half'' is usually written @code{10,000.5} while
|
||||
in French it is written @code{10000,5}. These procedures allow to
|
||||
account for these differences.
|
||||
|
||||
@deffn {Scheme Procedure} locale-string->integer str [base [locale]]
|
||||
@deffnx {C Function} scm_locale_string_to_integer (str, base, locale)
|
||||
Convert string @var{str} into an integer according to either
|
||||
@var{locale} (a locale object as returned by @code{make-locale}) or
|
||||
the current process locale. If @var{base} is specified, then it
|
||||
determines the base of the integer being read (e.g., @code{16} for an
|
||||
hexadecimal number, @code{10} for a decimal number); by default,
|
||||
decimal numbers are read. Return two values: an integer (on success)
|
||||
or @code{#f}, and the number of characters read from @var{str}
|
||||
(@code{0} on failure).
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} locale-string->inexact str [locale]
|
||||
@deffnx {C Function} scm_locale_string_to_inexact (str, locale)
|
||||
Convert string @var{str} into an inexact number according to either
|
||||
@var{locale} (a locale object as returned by @code{make-locale}) or
|
||||
the current process locale. Return two values: an inexact number (on
|
||||
success) or @code{#f}, and the number of characters read from
|
||||
@var{str} (@code{0} on failure).
|
||||
@end deffn
|
||||
|
||||
|
||||
@node Gettext Support
|
||||
@subsection Gettext Support
|
||||
|
||||
Guile provides an interface to GNU @code{gettext} for translating
|
||||
message strings (@pxref{Introduction,,, gettext, GNU @code{gettext}
|
||||
utilities}).
|
||||
|
@ -19,7 +305,8 @@ catalog filename).
|
|||
|
||||
When @code{gettext} is not available, or if Guile was configured
|
||||
@samp{--without-nls}, dummy functions doing no translation are
|
||||
provided.
|
||||
provided. When @code{gettext} support is available in Guile, the
|
||||
@code{i18n} feature is provided (@pxref{Feature Tracking}).
|
||||
|
||||
@deffn {Scheme Procedure} gettext msg [domain [category]]
|
||||
@deffnx {C Function} scm_gettext (msg, domain, category)
|
||||
|
@ -155,4 +442,5 @@ future.
|
|||
|
||||
@c Local Variables:
|
||||
@c TeX-master: "guile.texi"
|
||||
@c ispell-local-dictionary: "american"
|
||||
@c End:
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
@set MANUAL-EDITION 1.1
|
||||
@c %**end of header
|
||||
@include version.texi
|
||||
@include lib-version.texi
|
||||
|
||||
@copying
|
||||
This reference manual documents Guile, GNU's Ubiquitous Intelligent
|
||||
|
@ -137,7 +138,7 @@ x
|
|||
@comment The title is printed in a large font.
|
||||
@title Guile Reference Manual
|
||||
@subtitle Edition @value{MANUAL-EDITION}, for use with Guile @value{VERSION}
|
||||
@c @subtitle $Id: guile.texi,v 1.47 2006-10-09 22:45:02 kryde Exp $
|
||||
@c @subtitle $Id: guile.texi,v 1.48 2006-11-18 18:14:55 civodul Exp $
|
||||
|
||||
@c See preface.texi for the list of authors
|
||||
@author The Guile Developers
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004
|
||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -3139,10 +3139,11 @@ specified.
|
|||
Get or set the current locale, used for various internationalizations.
|
||||
Locales are strings, such as @samp{sv_SE}.
|
||||
|
||||
If @var{locale} is given then the locale for the given @var{category} is set
|
||||
and the new value returned. If @var{locale} is not given then the
|
||||
current value is returned. @var{category} should be one of the
|
||||
following values
|
||||
If @var{locale} is given then the locale for the given @var{category}
|
||||
is set and the new value returned. If @var{locale} is not given then
|
||||
the current value is returned. @var{category} should be one of the
|
||||
following values (@pxref{Locale Categories, Categories of Activities
|
||||
that Locales Affect,, libc, The GNU C Library Reference Manual}):
|
||||
|
||||
@defvar LC_ALL
|
||||
@defvarx LC_COLLATE
|
||||
|
@ -3159,6 +3160,10 @@ categories based on standard environment variables (@code{LANG} etc).
|
|||
For full details on categories and locale names @pxref{Locales,,
|
||||
Locales and Internationalization, libc, The GNU C Library Reference
|
||||
Manual}.
|
||||
|
||||
Note that @code{setlocale} affects locale settings for the whole
|
||||
process. @xref{The ice-9 i18n Module, locale objects and
|
||||
@code{make-locale}}, for a thread-safe alternative.
|
||||
@end deffn
|
||||
|
||||
@node Encryption
|
||||
|
|
|
@ -1,3 +1,40 @@
|
|||
2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
|
||||
(libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
|
||||
(libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
|
||||
libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
|
||||
(DOT_X_FILES): Added `gettext.x'.
|
||||
(DOT_DOC_FILES): Likewise.
|
||||
(EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
|
||||
(modinclude_HEADERS): Added `gettext.h'.
|
||||
(EXTRA_DIST): Added `libgettext.h'.
|
||||
|
||||
* gettext.h: Renamed to...
|
||||
* libgettext.h: New file.
|
||||
|
||||
* i18n.c: Renamed to...
|
||||
* gettext.c: New file.
|
||||
|
||||
* i18n.h: Renamed to...
|
||||
* gettext.h: New file.
|
||||
|
||||
* i18n.c, i18n.h, locale-categories.h: New files.
|
||||
|
||||
* init.c: Include "libguile/gettext.h" instead of
|
||||
"libguile/i18n.h".
|
||||
(scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
|
||||
`scm_init_i18n ()'.
|
||||
|
||||
* posix.c: Include "libguile/gettext.h" instead of
|
||||
"libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
|
||||
(USE_GNU_LOCALE_API): New macro.
|
||||
(scm_i_locale_mutex): New variable.
|
||||
(scm_setlocale): Lock and unlock it around `setlocale ()' calls.
|
||||
|
||||
* posix.h: Include "libguile/threads.h".
|
||||
(scm_i_locale_mutex): New declaration.
|
||||
|
||||
2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
|
||||
|
|
|
@ -31,7 +31,8 @@ INCLUDES = -I.. -I$(top_srcdir)
|
|||
ETAGS_ARGS = --regex='/SCM_\(GLOBAL_\)?\(G?PROC\|G?PROC1\|SYMBOL\|VCELL\|CONST_LONG\).*\"\([^\"]\)*\"/\3/' \
|
||||
--regex='/[ \t]*SCM_[G]?DEFINE1?[ \t]*(\([^,]*\),[^,]*/\1/'
|
||||
|
||||
lib_LTLIBRARIES = libguile.la
|
||||
lib_LTLIBRARIES = libguile.la \
|
||||
libguile-i18n-v-@LIBGUILE_I18N_MAJOR@.la
|
||||
bin_PROGRAMS = guile
|
||||
|
||||
noinst_PROGRAMS = guile_filter_doc_snarfage gen-scmconfig
|
||||
|
@ -97,9 +98,10 @@ libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c \
|
|||
deprecated.c discouraged.c dynwind.c eq.c error.c \
|
||||
eval.c evalext.c extensions.c feature.c fluids.c fports.c \
|
||||
futures.c gc.c gc-mark.c gc-segment.c gc-malloc.c gc-card.c \
|
||||
gc-freelist.c gc_os_dep.c gdbint.c gh_data.c gh_eval.c gh_funcs.c \
|
||||
gc-freelist.c gc_os_dep.c gdbint.c gettext.c \
|
||||
gh_data.c gh_eval.c gh_funcs.c \
|
||||
gh_init.c gh_io.c gh_list.c gh_predicates.c goops.c gsubr.c \
|
||||
guardians.c hash.c hashtab.c hooks.c i18n.c init.c inline.c \
|
||||
guardians.c hash.c hashtab.c hooks.c init.c inline.c \
|
||||
ioext.c keywords.c lang.c list.c load.c macros.c mallocs.c \
|
||||
modules.c numbers.c objects.c objprop.c options.c pairs.c ports.c \
|
||||
print.c procprop.c procs.c properties.c random.c rdelim.c read.c \
|
||||
|
@ -109,11 +111,21 @@ libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c \
|
|||
throw.c values.c variable.c vectors.c version.c vports.c weaks.c \
|
||||
ramap.c unif.c
|
||||
|
||||
libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_SOURCES = i18n.c
|
||||
libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_CFLAGS = \
|
||||
$(libguile_la_CFLAGS)
|
||||
libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD = \
|
||||
libguile.la
|
||||
libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LDFLAGS = \
|
||||
-module -L$(builddir) -lguile \
|
||||
-version-info @LIBGUILE_I18N_INTERFACE@
|
||||
|
||||
DOT_X_FILES = alist.x arbiters.x async.x backtrace.x boolean.x chars.x \
|
||||
continuations.x debug.x deprecation.x deprecated.x discouraged.x \
|
||||
dynl.x dynwind.x eq.x error.x eval.x evalext.x \
|
||||
extensions.x feature.x fluids.x fports.x futures.x gc.x gc-mark.x \
|
||||
gc-segment.x gc-malloc.x gc-card.x goops.x gsubr.x guardians.x \
|
||||
gc-segment.x gc-malloc.x gc-card.x gettext.x goops.x \
|
||||
gsubr.x guardians.x \
|
||||
hash.x hashtab.x hooks.x i18n.x init.x ioext.x keywords.x lang.x \
|
||||
list.x load.x macros.x mallocs.x modules.x numbers.x objects.x \
|
||||
objprop.x options.x pairs.x ports.x print.x procprop.x procs.x \
|
||||
|
@ -131,7 +143,8 @@ DOT_DOC_FILES = alist.doc arbiters.doc async.doc backtrace.doc \
|
|||
eq.doc error.doc eval.doc evalext.doc \
|
||||
extensions.doc feature.doc fluids.doc fports.doc futures.doc \
|
||||
gc.doc goops.doc gsubr.doc gc-mark.doc gc-segment.doc \
|
||||
gc-malloc.doc gc-card.doc guardians.doc hash.doc hashtab.doc \
|
||||
gc-malloc.doc gc-card.doc gettext.doc \
|
||||
guardians.doc hash.doc hashtab.doc \
|
||||
hooks.doc i18n.doc init.doc ioext.doc keywords.doc lang.doc \
|
||||
list.doc load.doc macros.doc mallocs.doc modules.doc numbers.doc \
|
||||
objects.doc objprop.doc options.doc pairs.doc ports.doc print.doc \
|
||||
|
@ -154,7 +167,8 @@ EXTRA_libguile_la_SOURCES = _scm.h \
|
|||
dynl.c regex-posix.c \
|
||||
filesys.c posix.c net_db.c socket.c \
|
||||
debug-malloc.c mkstemp.c \
|
||||
win32-uname.c win32-dirent.c win32-socket.c
|
||||
win32-uname.c win32-dirent.c win32-socket.c \
|
||||
locale-categories.h
|
||||
|
||||
## delete guile-snarf.awk from the installation bindir, in case it's
|
||||
## lingering there due to an earlier guile version not having been
|
||||
|
@ -187,7 +201,8 @@ modinclude_HEADERS = __scm.h alist.h arbiters.h async.h backtrace.h \
|
|||
deprecation.h deprecated.h discouraged.h dynl.h dynwind.h \
|
||||
eq.h error.h eval.h evalext.h extensions.h \
|
||||
feature.h filesys.h fluids.h fports.h futures.h gc.h \
|
||||
gdb_interface.h gdbint.h goops.h gsubr.h guardians.h hash.h \
|
||||
gdb_interface.h gdbint.h gettext.h goops.h \
|
||||
gsubr.h guardians.h hash.h \
|
||||
hashtab.h hooks.h i18n.h init.h inline.h ioext.h iselect.h \
|
||||
keywords.h lang.h list.h load.h macros.h mallocs.h modules.h \
|
||||
net_db.h numbers.h objects.h objprop.h options.h pairs.h ports.h \
|
||||
|
@ -212,7 +227,7 @@ EXTRA_DIST = ChangeLog-gh ChangeLog-scm ChangeLog-threads \
|
|||
cpp_errno.c cpp_err_symbols.in cpp_err_symbols.c \
|
||||
cpp_sig_symbols.c cpp_sig_symbols.in cpp_cnvt.awk \
|
||||
c-tokenize.lex version.h.in \
|
||||
scmconfig.h.top gettext.h
|
||||
scmconfig.h.top libgettext.h
|
||||
# $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES) \
|
||||
# guile-procedures.txt guile.texi
|
||||
|
||||
|
|
|
@ -1,69 +1,41 @@
|
|||
/* Convenience header for conditional use of GNU <libintl.h>.
|
||||
Copyright (C) 1995-1998, 2000-2002, 2006 Free Software Foundation, Inc.
|
||||
/* classes: h_files */
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
#ifndef SCM_GETTEXT_H
|
||||
#define SCM_GETTEXT_H
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
/* Copyright (C) 2004, 2006 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 as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
#ifndef _LIBGETTEXT_H
|
||||
#define _LIBGETTEXT_H 1
|
||||
SCM_API SCM scm_gettext (SCM msgid, SCM domainname, SCM category);
|
||||
SCM_API SCM scm_ngettext (SCM msgid, SCM msgid_plural, SCM n, SCM domainname, SCM category);
|
||||
SCM_API SCM scm_textdomain (SCM domainname);
|
||||
SCM_API SCM scm_bindtextdomain (SCM domainname, SCM directory);
|
||||
SCM_API SCM scm_bind_textdomain_codeset (SCM domainname, SCM encoding);
|
||||
|
||||
/* NLS can be disabled through the configure --disable-nls option. */
|
||||
#if ENABLE_NLS
|
||||
SCM_API int scm_i_to_lc_category (SCM category, int allow_lc_all);
|
||||
|
||||
/* Get declarations of GNU message catalog functions. */
|
||||
# include <libintl.h>
|
||||
SCM_API void scm_init_gettext (void);
|
||||
|
||||
#else
|
||||
#endif /* SCM_GETTEXT_H */
|
||||
|
||||
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
|
||||
chokes if dcgettext is defined as a macro. So include it now, to make
|
||||
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
|
||||
as well because people using "gettext.h" will not include <libintl.h>,
|
||||
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
|
||||
is OK. */
|
||||
#if defined(__sun)
|
||||
# include <locale.h>
|
||||
#endif
|
||||
|
||||
/* Disabled NLS.
|
||||
The casts to 'const char *' serve the purpose of producing warnings
|
||||
for invalid uses of the value returned from these functions.
|
||||
On pre-ANSI systems without 'const', the config.h file is supposed to
|
||||
contain "#define const". */
|
||||
# define gettext(Msgid) ((const char *) (Msgid))
|
||||
# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
|
||||
# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
|
||||
# define ngettext(Msgid1, Msgid2, N) \
|
||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
||||
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
||||
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
||||
# define textdomain(Domainname) ((const char *) (Domainname))
|
||||
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
|
||||
# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
|
||||
|
||||
#endif
|
||||
|
||||
/* A pseudo function call that serves as a marker for the automated
|
||||
extraction of messages, but does not call gettext(). The run-time
|
||||
translation is done at a different place in the code.
|
||||
The argument, String, should be a literal string. Concatenated strings
|
||||
and other string expressions won't work.
|
||||
The macro's expansion is not parenthesized, so that it is suitable as
|
||||
initializer for static 'char[]' or 'const char[]' variables. */
|
||||
#define gettext_noop(String) String
|
||||
|
||||
#endif /* _LIBGETTEXT_H */
|
||||
/*
|
||||
Local Variables:
|
||||
c-file-style: "gnu"
|
||||
End:
|
||||
*/
|
||||
|
|
1270
libguile/i18n.c
1270
libguile/i18n.c
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,7 @@
|
|||
#ifndef SCM_I18N_H
|
||||
#define SCM_I18N_H
|
||||
|
||||
/* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2006 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
|
||||
|
@ -22,13 +22,24 @@
|
|||
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
SCM_API SCM scm_gettext (SCM msgid, SCM domainname, SCM category);
|
||||
SCM_API SCM scm_ngettext (SCM msgid, SCM msgid_plural, SCM n, SCM domainname, SCM category);
|
||||
SCM_API SCM scm_textdomain (SCM domainname);
|
||||
SCM_API SCM scm_bindtextdomain (SCM domainname, SCM directory);
|
||||
SCM_API SCM scm_bind_textdomain_codeset (SCM domainname, SCM encoding);
|
||||
|
||||
SCM_API int scm_i_to_lc_category (SCM category, int allow_lc_all);
|
||||
SCM_API SCM scm_make_locale (SCM category_mask, SCM locale_name, SCM base_locale);
|
||||
SCM_API SCM scm_locale_p (SCM obj);
|
||||
SCM_API SCM scm_string_locale_lt (SCM s1, SCM s2, SCM locale);
|
||||
SCM_API SCM scm_string_locale_gt (SCM s1, SCM s2, SCM locale);
|
||||
SCM_API SCM scm_string_locale_ci_lt (SCM s1, SCM s2, SCM locale);
|
||||
SCM_API SCM scm_string_locale_ci_gt (SCM s1, SCM s2, SCM locale);
|
||||
SCM_API SCM scm_string_locale_ci_eq (SCM s1, SCM s2, SCM locale);
|
||||
SCM_API SCM scm_char_locale_lt (SCM c1, SCM c2, SCM locale);
|
||||
SCM_API SCM scm_char_locale_gt (SCM c1, SCM c2, SCM locale);
|
||||
SCM_API SCM scm_char_locale_ci_lt (SCM c1, SCM c2, SCM locale);
|
||||
SCM_API SCM scm_char_locale_ci_gt (SCM c1, SCM c2, SCM locale);
|
||||
SCM_API SCM scm_char_locale_ci_eq (SCM c1, SCM c2, SCM locale);
|
||||
SCM_API SCM scm_char_locale_upcase (SCM chr, SCM locale);
|
||||
SCM_API SCM scm_char_locale_downcase (SCM chr, SCM locale);
|
||||
SCM_API SCM scm_string_locale_upcase (SCM chr, SCM locale);
|
||||
SCM_API SCM scm_string_locale_downcase (SCM chr, SCM locale);
|
||||
SCM_API SCM scm_locale_string_to_integer (SCM str, SCM base, SCM locale);
|
||||
SCM_API SCM scm_locale_string_to_inexact (SCM str, SCM locale);
|
||||
|
||||
SCM_API void scm_init_i18n (void);
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
#include "libguile/hash.h"
|
||||
#include "libguile/hashtab.h"
|
||||
#include "libguile/hooks.h"
|
||||
#include "libguile/i18n.h"
|
||||
#include "libguile/gettext.h"
|
||||
#include "libguile/iselect.h"
|
||||
#include "libguile/ioext.h"
|
||||
#include "libguile/keywords.h"
|
||||
|
@ -479,7 +479,7 @@ scm_i_init_guile (SCM_STACKITEM *base)
|
|||
scm_init_properties ();
|
||||
scm_init_hooks (); /* Requires smob_prehistory */
|
||||
scm_init_gc (); /* Requires hooks, async */
|
||||
scm_init_i18n ();
|
||||
scm_init_gettext ();
|
||||
scm_init_ioext ();
|
||||
scm_init_keywords ();
|
||||
scm_init_list ();
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#include "libguile/validate.h"
|
||||
#include "libguile/posix.h"
|
||||
#include "libguile/i18n.h"
|
||||
#include "libguile/gettext.h"
|
||||
#include "libguile/threads.h"
|
||||
|
||||
|
||||
|
@ -115,6 +115,10 @@ extern char ** environ;
|
|||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
#if (defined HAVE_NEWLOCALE) && (defined HAVE_STRCOLL_L)
|
||||
# define USE_GNU_LOCALE_API
|
||||
#endif
|
||||
|
||||
#if HAVE_CRYPT_H
|
||||
# include <crypt.h>
|
||||
#endif
|
||||
|
@ -1380,7 +1384,15 @@ SCM_DEFINE (scm_putenv, "putenv", 1, 0, 0,
|
|||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
#ifndef USE_GNU_LOCALE_API
|
||||
/* This mutex is used to serialize invocations of `setlocale ()' on non-GNU
|
||||
systems (i.e., systems where a reentrant locale API is not available).
|
||||
See `i18n.c' for details. */
|
||||
scm_i_pthread_mutex_t scm_i_locale_mutex;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SETLOCALE
|
||||
|
||||
SCM_DEFINE (scm_setlocale, "setlocale", 1, 1, 0,
|
||||
(SCM category, SCM locale),
|
||||
"If @var{locale} is omitted, return the current value of the\n"
|
||||
|
@ -1409,7 +1421,14 @@ SCM_DEFINE (scm_setlocale, "setlocale", 1, 1, 0,
|
|||
scm_dynwind_free (clocale);
|
||||
}
|
||||
|
||||
#ifndef USE_GNU_LOCALE_API
|
||||
scm_i_pthread_mutex_lock (&scm_i_locale_mutex);
|
||||
#endif
|
||||
rv = setlocale (scm_i_to_lc_category (category, 1), clocale);
|
||||
#ifndef USE_GNU_LOCALE_API
|
||||
scm_i_pthread_mutex_unlock (&scm_i_locale_mutex);
|
||||
#endif
|
||||
|
||||
if (rv == NULL)
|
||||
{
|
||||
/* POSIX and C99 don't say anything about setlocale setting errno, so
|
||||
|
@ -1946,6 +1965,10 @@ SCM_DEFINE (scm_gethostname, "gethostname", 0, 0, 0,
|
|||
void
|
||||
scm_init_posix ()
|
||||
{
|
||||
#ifndef USE_GNU_LOCALE_API
|
||||
scm_i_pthread_mutex_init (&scm_i_locale_mutex, NULL);
|
||||
#endif
|
||||
|
||||
scm_add_feature ("posix");
|
||||
#ifdef HAVE_GETEUID
|
||||
scm_add_feature ("EIDs");
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
|
||||
#include "libguile/threads.h"
|
||||
|
||||
|
||||
|
||||
|
@ -87,6 +86,8 @@ SCM_API SCM scm_sethostname (SCM name);
|
|||
SCM_API SCM scm_gethostname (void);
|
||||
SCM_API void scm_init_posix (void);
|
||||
|
||||
SCM_API scm_i_pthread_mutex_t scm_i_locale_mutex;
|
||||
|
||||
#endif /* SCM_POSIX_H */
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* Makefile.am (SCM_TESTS): Added `tests/i18n.test'.
|
||||
|
||||
* tests/i18n.test: New file.
|
||||
|
||||
2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* README: Note need for subscription to bug-guile@gnu.org.
|
||||
|
@ -6,7 +12,7 @@
|
|||
|
||||
* tests/environments.test: Comment out all tests in this file.
|
||||
|
||||
2006-10-26 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-10-26 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* tests/srfi-14.test (Latin-1)[char-set:punctuation]: Fixed a
|
||||
typo: `thrown' instead of `throw'.
|
||||
|
@ -37,7 +43,7 @@
|
|||
the error+thread tests seem ok now (previously were upset by something
|
||||
leaking out of syntax.test).
|
||||
|
||||
2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* tests/srfi-14.test: Use `define-module'. Use modules `(srfi
|
||||
srfi-1)' and `(test-suite lib)'.
|
||||
|
@ -82,7 +88,7 @@
|
|||
|
||||
* tests/time.test (localtime, mktime, strptime): More tests.
|
||||
|
||||
2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* Makefile.am (SCM_TESTS): Added `tests/structs.test'.
|
||||
* tests/structs.test: New file.
|
||||
|
@ -145,7 +151,7 @@
|
|||
* tests/unif.test (make-shared-array): Add example usages from the
|
||||
manual, two of which currently fail.
|
||||
|
||||
2006-03-04 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2006-03-04 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* test-suite/tests/modules.test: New file.
|
||||
* test-suite/Makefile.am (SCM_TESTS): Added it.
|
||||
|
@ -193,7 +199,7 @@
|
|||
|
||||
* tests/srfi-1.test (lset-difference!): More tests.
|
||||
|
||||
2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||
|
||||
* tests/socket.test (make-socket-address): New tests.
|
||||
(connect, bind, sendto): Exercise sockaddr object.
|
||||
|
@ -724,7 +730,7 @@
|
|||
* lib.scm (exception:numerical-overflow): New define.
|
||||
* tests/numbers.test (modulo-expt): Use it and
|
||||
exception:wrong-type-arg, avoiding empty "" regexp which is invalid on
|
||||
BSD. Reported by Andreas Vögele.
|
||||
BSD. Reported by Andreas Vögele.
|
||||
|
||||
2004-05-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
|
||||
|
||||
|
@ -749,12 +755,12 @@
|
|||
|
||||
* tests/srfi-19.test (test-dst, string->date local DST): Test with
|
||||
"EST5EDT" instead of "CET", since HP-UX doesn't know CET. Reported by
|
||||
Andreas Vögele.
|
||||
Andreas Vögele.
|
||||
|
||||
2004-05-03 Kevin Ryde <user42@zip.com.au>
|
||||
|
||||
* tests/time.test (strftime): Force tm:isdst to 0 for the test, for
|
||||
the benefit of HP-UX. Reported by Andreas Vögele.
|
||||
the benefit of HP-UX. Reported by Andreas Vögele.
|
||||
Use set-tm:zone rather than a hard coded vector offset.
|
||||
|
||||
2004-04-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
|
||||
|
@ -1695,7 +1701,7 @@
|
|||
|
||||
2001-06-16 Marius Vollmer <mvo@zagadka.ping.de>
|
||||
|
||||
Thanks to Matthias Köppe!
|
||||
Thanks to Matthias Köppe!
|
||||
|
||||
* tests/ports.test: New test for output port line counts.
|
||||
* tests/format.test, tests/optargs.test, tests/srfi-19.test: New
|
||||
|
@ -2289,3 +2295,7 @@ Fri Dec 17 12:14:10 1999 Greg J. Badros <gjb@cs.washington.edu>
|
|||
|
||||
* lib.scm, guile-test, paths.scm: Log begins.
|
||||
|
||||
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
|
|
|
@ -43,6 +43,7 @@ SCM_TESTS = tests/alist.test \
|
|||
tests/guardians.test \
|
||||
tests/hash.test \
|
||||
tests/hooks.test \
|
||||
tests/i18n.test \
|
||||
tests/import.test \
|
||||
tests/interp.test \
|
||||
tests/list.test \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue