NetBSD Problem Report #42124

From taca@back-street.net  Fri Sep 25 02:25:17 2009
Return-Path: <taca@back-street.net>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id EE32E63B850
	for <gnats-bugs@gnats.NetBSD.org>; Fri, 25 Sep 2009 02:25:16 +0000 (UTC)
Message-Id: <20090925022513.CB88F5E621@www.back-street.net>
Date: Fri, 25 Sep 2009 11:25:13 +0900 (JST)
From: taca@back-street.net
Reply-To: taca@back-street.net
To: gnats-bugs@gnats.NetBSD.org
Subject: setlocale(3) never returns NULL with none existing locale.
X-Send-Pr-Version: 3.95

>Number:         42124
>Category:       lib
>Synopsis:       setlocale(3) never returns NULL with none existing locale.
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    lib-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Sep 25 02:30:00 +0000 2009
>Closed-Date:    Fri Oct 09 13:46:15 +0000 2009
>Last-Modified:  Fri Oct 09 13:46:15 +0000 2009
>Originator:     Takahiro Kambe
>Release:        NetBSD 5.0_STABLE
>Organization:

>Environment:


System: NetBSD ns.back-street.net 5.0_STABLE NetBSD 5.0_STABLE (EPIA) #36: Sun Sep 20 17:05:18 JST 2009 taca@boy.a.back-street.net:/data/i386/obj5/sys/arch/i386/compile/EPIA i386
Architecture: i386
Machine: i386
>Description:
	setlocale(3) says:

  RETURN VALUES
       The setlocale() function returns NULL and fails to change the locale if
       the given combination of category and locale makes no sense.  ...

	But it seems that setlocale() always return "C".

>How-To-Repeat:
	Compile and execute below code:

	$ env LANG=foo ./a.out
	setlocale() retunrs "C".

	Even if changing second argument of setlocale() to "foo" cause
	the same result.

	The same code on NetBSD 4.0_STABLE returns expected result.

	$ env LANG=foo ./a.out
	setlocale() retunrs "NULL".


#include <stdio.h>
#include <locale.h>

main()
{
	char *lc;

	lc = setlocale(LC_ALL, "");
	printf("setlocale() retunrs \"%s\".\n", (lc == NULL)? "NULL": lc);
}

>Fix:
	Unknown.

>Release-Note:

>Audit-Trail:
From: Takehiko NOZAKI <takehiko.nozaki@gmail.com>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: lib/42124: setlocale(3) never returns NULL with none existing 
	locale.
Date: Sat, 26 Sep 2009 11:53:42 +0900

 --00032555999e1d85cb0474722c5a
 Content-Type: text/plain; charset=ISO-8859-1

 hi,

 please try attached patch, i'll commit this tomorrow.
 sorry for your inconvinience.


 very truly yours.
 -- 
 Takehiko NOZAKI<takehiko.nozaki@gmail.com>

 --00032555999e1d85cb0474722c5a
 Content-Type: application/octet-stream; name=patch-setlocale
 Content-Disposition: attachment; filename=patch-setlocale
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_g01rmzgi0

 SW5kZXg6IGdlbmVyaWNfbGNfYWxsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUvdG5vemFr
 aS9jdnN1cC9OZXRCU0Qvc3JjL2xpYi9saWJjL2xvY2FsZS9nZW5lcmljX2xjX2FsbC5jLHYKcmV0
 cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtdSAtcjEuMiBnZW5lcmljX2xjX2FsbC5jCi0tLSBn
 ZW5lcmljX2xjX2FsbC5jCTExIEphbiAyMDA5IDAyOjQ2OjI4IC0wMDAwCTEuMgorKysgZ2VuZXJp
 Y19sY19hbGwuYwkyNiBTZXAgMjAwOSAxMDozNDo0MiAtMDAwMApAQCAtNTYsMTAgKzU2LDExIEBA
 CiAJX2xvY2FsZV9jYXRlZ29yeV90ICpsOwogCWNoYXIgaGVhZFtfTE9DQUxFTkFNRV9MRU5fTUFY
 ICogKF9MQ19MQVNUIC0gMSldLCAqdGFpbDsKIAljb25zdCBjaGFyICp0b2tlbnNbX0xDX0xBU1Rd
 LCAqcywgKnQ7Ci0JaW50IGksIGo7CisJaW50IGxvYWRfbG9jYWxlX3N1Y2Nlc3MsIGksIGo7CiAK
 IAlsID0gX2ZpbmRfY2F0ZWdvcnkoMSk7CiAJX0RJQUdBU1NFUlQobCAhPSBOVUxMKTsKKwlsb2Fk
 X2xvY2FsZV9zdWNjZXNzID0gMDsKIAlpZiAobmFtZSAhPSBOVUxMKSB7CiAJCXN0cmxjcHkoJmhl
 YWRbMF0sIG5hbWUsIHNpemVvZihoZWFkKSk7CiAJCXRva2Vuc1sxXSA9ICZoZWFkWzBdOwpAQCAt
 NzgsMTAgKzc5LDExIEBACiAJCQl9CiAJCQl0b2tlbnNbX0xDX0xBU1QgLSAxXSA9IChjb25zdCBj
 aGFyICopdGFpbDsKIAkJCXRhaWwgPSBzdHJjaHIodG9rZW5zW2ldLCAnLycpOwotCQkJaWYgKHRh
 aWwgPT0gTlVMTCkKKwkJCWlmICh0YWlsICE9IE5VTEwpCiAJCQkJcmV0dXJuIE5VTEw7CiAJCX0K
 LQkJKCpsLT5zZXRsb2NhbGUpKHRva2Vuc1sxXSwgbG9jYWxlKTsKKwkJaWYgKCgqbC0+c2V0bG9j
 YWxlKSh0b2tlbnNbMV0sIGxvY2FsZSkgIT0gTlVMTCkKKwkJCWxvYWRfbG9jYWxlX3N1Y2Nlc3Mg
 PSAxOwogCX0KIAlzID0gKCpsLT5zZXRsb2NhbGUpKE5VTEwsIGxvY2FsZSk7CiAJX0RJQUdBU1NF
 UlQocyAhPSBOVUxMKTsKQEAgLTg5LDggKzkxLDEwIEBACiAJZm9yIChpID0gMiwgaiA9IDA7IGkg
 PCBfTENfTEFTVDsgKytpKSB7CiAJCWwgPSBfZmluZF9jYXRlZ29yeShpKTsKIAkJX0RJQUdBU1NF
 UlQobCAhPSBOVUxMKTsKLQkJaWYgKG5hbWUgIT0gTlVMTCkKLQkJCSgqbC0+c2V0bG9jYWxlKSh0
 b2tlbnNbMV0sIGxvY2FsZSk7CisJCWlmIChuYW1lICE9IE5VTEwpIHsKKwkJCWlmICgoKmwtPnNl
 dGxvY2FsZSkodG9rZW5zW2ldLCBsb2NhbGUpICE9IE5VTEwpCisJCQkJbG9hZF9sb2NhbGVfc3Vj
 Y2VzcyA9IDE7CisJCX0KIAkJdCA9ICgqbC0+c2V0bG9jYWxlKShOVUxMLCBsb2NhbGUpOwogCQlf
 RElBR0FTU0VSVCh0ICE9IE5VTEwpOwogCQlpZiAoaiA9PSAwKSB7CkBAIC0xMDYsNiArMTEwLDgg
 QEAKIAkJc3RybGNhdCgmbG9jYWxlLT5xdWVyeVswXSwgIi8iLCBzaXplb2YobG9jYWxlLT5xdWVy
 eSkpOwogCQlzdHJsY2F0KCZsb2NhbGUtPnF1ZXJ5WzBdLCB0LCBzaXplb2YobG9jYWxlLT5xdWVy
 eSkpOwogCX0KKwlpZiAobmFtZSAhPSBOVUxMICYmICFsb2FkX2xvY2FsZV9zdWNjZXNzKQorCQly
 ZXR1cm4gTlVMTDsKIAlyZXR1cm4gKGNvbnN0IGNoYXIgKikmbG9jYWxlLT5xdWVyeVswXTsKIH0K
 IAo=
 --00032555999e1d85cb0474722c5a--

From: Takahiro Kambe <taca@back-street.net>
To: gnats-bugs@NetBSD.org, takehiko.nozaki@gmail.com
Cc: 
Subject: Re: lib/42124: setlocale(3) never returns NULL with none existing
 locale.
Date: Sat, 26 Sep 2009 14:01:12 +0900 (JST)

 Hi,

 I applied the patch on NetBSD current (5.99.18).

 --------------+----------------------------------------------------------------
     LANG      |
 environment   | return value of setlocale()
 --------------+----------------------------------------------------------------
 not defined   | "C"
 --------------+----------------------------------------------------------------
 "ja"          | NULL
 --------------+----------------------------------------------------------------
 "ja_JP"       | NULL
 --------------+----------------------------------------------------------------
 "ja_JP.eucJP" | "C/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP"
 --------------+----------------------------------------------------------------

 The result on 4.0_STABLE:

 --------------+----------------------------------------------------------------
     LANG      |
 environment   | return value of setlocale()
 --------------+----------------------------------------------------------------
 not defined   | "C"
 --------------+----------------------------------------------------------------
 "ja"          | "C/C/C/C/C/ja"
 --------------+----------------------------------------------------------------
 "ja_JP"       | NULL
 --------------+----------------------------------------------------------------
 "ja_JP.eucJP" | "C/ja_JP.eucJP/C/C/C/ja_JP.eucJP"
 --------------+----------------------------------------------------------------

 Return value of setlocale(3) itself depends on system, but I think
 that setlocale(3) should not return NULL when LANG is "ja".

 Anyway, there should be such test case to src/regress or src/tests?

 Best regards.

 -- 
 Takahiro Kambe <taca@back-street.net>

From: Takehiko NOZAKI <takehiko.nozaki@gmail.com>
To: Takahiro Kambe <taca@back-street.net>
Cc: gnats-bugs@netbsd.org
Subject: Re: lib/42124: setlocale(3) never returns NULL with none existing 
	locale.
Date: Sat, 26 Sep 2009 16:20:07 +0900

 hi,

 NetBSD-4.0 LC_MESSAGES's behavior is just the kludge.
 see following XXX comment:
 http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/locale/setlocale.c.diff?r1=1.36&r2=1.37


 or we have to add alias ja -> ja_JP.eucJP?

     /usr/share/locale/locale.alias
     ja        ja_JP.eucJP

 BTW, gettext doesn' require this alias, it seek the message catalog
 following order:
     ja_JP.eucJP -> ja_JP -> ja

 so please use LANG=ja_JP.eucJP instead of LANG=ja.


 very truly yours.
 -- 
 Takehiko NOZAKI<takehiko.nozaki@gmail.com>

From: Takahiro Kambe <taca@back-street.net>
To: takehiko.nozaki@gmail.com
Cc: gnats-bugs@netbsd.org
Subject: Re: lib/42124: setlocale(3) never returns NULL with none existing
 locale.
Date: Sat, 26 Sep 2009 16:40:19 +0900 (JST)

 Hi,

 In message <2fe63cf90909260020j67fcb7fbm31bc58170cc02a2d@mail.gmail.com>
 	on Sat, 26 Sep 2009 16:20:07 +0900,
 	Takehiko NOZAKI <takehiko.nozaki@gmail.com> wrote:
 > NetBSD-4.0 LC_MESSAGES's behavior is just the kludge.
 > see following XXX comment:
 > http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/locale/setlocale.c.diff?r1=1.36&r2=1.37
 I see.

 > or we have to add alias ja -> ja_JP.eucJP?
 I don't think so.

 > so please use LANG=ja_JP.eucJP instead of LANG=ja.
 Thanks.  Here is one more result.

 --------------+----------------------------------------------------------------
     LANG      |
 environment   | return value of setlocale()
 --------------+----------------------------------------------------------------
 not defined   | "C"
 --------------+----------------------------------------------------------------
 "ja_JP"       | NULL
 --------------+----------------------------------------------------------------
 "ja_JP.eucJP" | "C/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP"
 --------------+----------------------------------------------------------------
 "ja_JP.utf-8" | "C/ja_JP.utf-8/C/C/C/ja_JP.utf-8"
 --------------+----------------------------------------------------------------

 -- 
 Takahiro Kambe <taca@back-street.net>

From: Takahiro Kambe <taca@back-street.net>
To: takehiko.nozaki@gmail.com
Cc: gnats-bugs@netbsd.org
Subject: Re: lib/42124: setlocale(3) never returns NULL with none existing
 locale.
Date: Sun, 04 Oct 2009 09:57:30 +0900 (JST)

 I hope this fix reflected to NetBSD 5.1.

 -- 
 Takahiro Kambe <taca@back-street.net>

State-Changed-From-To: open->pending-pullups
State-Changed-By: tnozaki@NetBSD.org
State-Changed-When: Sun, 04 Oct 2009 21:20:52 +0000
State-Changed-Why:
fixed in HEAD.

From: Takahiro Kambe <taca@back-street.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: lib/42124 (setlocale(3) never returns NULL with none existing
 locale.)
Date: Thu, 08 Oct 2009 13:54:01 +0900 (JST)

 Hi,

 In message <20091004212053.27A0763B8B6@www.NetBSD.org>
 	on Sun,  4 Oct 2009 21:20:53 +0000 (UTC),
 	tnozaki@NetBSD.org wrote:
 > Synopsis: setlocale(3) never returns NULL with none existing locale.
 > 
 > State-Changed-From-To: open->pending-pullups
 > State-Changed-By: tnozaki@NetBSD.org
 > State-Changed-When: Sun, 04 Oct 2009 21:20:52 +0000
 > State-Changed-Why:
 > fixed in HEAD.
 I confirmed that the problem has fixed on pulluped NetBSD 5.0_STABLE.
 Best regards.

 -- 
 Takahiro Kambe <taca@back-street.net>

State-Changed-From-To: pending-pullups->closed
State-Changed-By: tnozaki@NetBSD.org
State-Changed-When: Fri, 09 Oct 2009 13:46:15 +0000
State-Changed-Why:
pullup done, thanks!

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.