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:
(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.