Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Mar 2001 14:52:10 +0200
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Andrey Chernov <ache@FreeBSD.org>, current@FreeBSD.org
Subject:   **HEADS UP** essential setlocale(3) fix
Message-ID:  <20010302145210.A6392@sunbay.com>
In-Reply-To: <200103021245.f22CjrQ34193@freefall.freebsd.org>; from ru@FreeBSD.org on Fri, Mar 02, 2001 at 04:45:53AM -0800
References:  <200103021245.f22CjrQ34193@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi!

I have just committed the following fix to the setlocale(3)
that changes the meaning of the LC_ALL environment variable
so that it conforms to ISO and POSIX standards.

On Fri, Mar 02, 2001 at 04:45:53AM -0800, Ruslan Ermilov wrote:
> ru          2001/03/02 04:45:53 PST
> 
>   Modified files:
>     lib/libc/locale      setlocale.c 
>   Log:
>   Fix setlocale() to conform to the ISO C and POSIX standards.
>   The below text is quoted from the latest POSIX draft:
>   
>   : The values of locale categories shall be determined by a precedence
>   : order; the first condition met below determines the value:
>   :
>   : 1. If the LC_ALL environment variable is defined and is not null,
>   :    the value of LC_ALL shall be used.
>   : 2. If the LC_* environment variable (LC_COLLATE, LC_CTYPE, LC_MESSAGES,
>   :    LC_MONETARY, LC_NUMERIC, LC_TIME) is defined and is not null, the
>   :    value of the environment variable shall be used to initialize the
>   :    category that corresponds to the environment variable.
>   : 3. If the LANG environment variable is defined and is not null, the
>   :    value of the LANG environment variable shall be used.
>   : 4. If the LANG environment variable is not set or is set to the empty
>   :    string, the implementation-defined default locale shall be used.
>   
>   The conditions 1 and 2 were interchanged, i.e., LC_* were looked first,
>   then LC_ALL, then LANG (note that LC_ALL and LANG were essentially the
>   same, providing the default, with LC_ALL taking precedence over LANG).
>   Now, LC_ALL and LANG serve the different purposes.  LC_ALL overrides
>   any LC_*, and LANG provides the default fallback.
>   
>   Testcase:
>   
>   /usr/bin/env LC_ALL=C LC_TIME=de_DE.ISO_8859-1 /bin/date
>   
>   Should return date in the "C" locale format.
>   
>   Inspired by:	date(1) reference page in the Draft
>   
>   Revision  Changes    Path
>   1.30      +4 -4      src/lib/libc/locale/setlocale.c

-- 
Ruslan Ermilov		Oracle Developer/DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010302145210.A6392>