From owner-cvs-all Fri Mar 2 4:46: 1 2001 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 6288E37B719; Fri, 2 Mar 2001 04:45:53 -0800 (PST) (envelope-from ru@FreeBSD.org) Received: (from ru@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f22CjrQ34193; Fri, 2 Mar 2001 04:45:53 -0800 (PST) (envelope-from ru) Message-Id: <200103021245.f22CjrQ34193@freefall.freebsd.org> From: Ruslan Ermilov Date: Fri, 2 Mar 2001 04:45:53 -0800 (PST) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/lib/libc/locale setlocale.c X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message