[DragonFlyBSD - Bug #2415] setlocale() for unknown locales

bugtracker-admin at leaf.dragonflybsd.org bugtracker-admin at leaf.dragonflybsd.org
Mon Jun 2 15:08:51 PDT 2014


Issue #2415 has been updated by tuxillo.

Description updated
Category set to Userland
Assignee set to tuxillo
Target version set to 3.9.x

Hi,

Not sure if I've understood. In the case you pass the "locale" string to setlocale(3):

$ uname -a
DragonFly hammer.df.com 3.6-RELEASE DragonFly v3.6.0-RELEASE #8: Fri Nov 22 13:22:00 PST 2013     root at pkgbox64.dragonflybsd.org:/usr/obj/build/home/justin/src/sys/X86_64_GENERIC  x86_64
$ ./t_locale
setlocale(LC_ALL, "es_ES.UTF-8")=es_ES.UTF-8
setlocale(LC_ALL, "en_EN.UTF-8")=(null)
setlocale(LC_ALL, "fake")=(null)
setlocale(LC_ALL, NULL)=es_ES.UTF-8


$ uname -a
DragonFly hammer.df.com 3.7-DEVELOPMENT DragonFly v3.7.1.1227.g566f1-DEVELOPMENT #1: Thu May 22 19:25:43 CEST 2014     root@:/usr/obj/usr/src/sys/X86_64_GENERIC  x86_64
$ ./t_locale1
setlocale(LC_ALL, "es_ES.UTF-8")=es_ES.UTF-8
setlocale(LC_ALL, "en_EN.UTF-8")=(null)
setlocale(LC_ALL, "fake")=(null)
setlocale(LC_ALL, NULL)=es_ES.UTF-8

root at testfbsd:/root # uname -a
FreeBSD testfbsd 9.1-RELEASE-p10 FreeBSD 9.1-RELEASE-p10 #0: Sun Jan 12 20:11:23 UTC 2014     root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
root at testfbsd:/root # cc t_locale.c -o t_locale
root at testfbsd:/root # ./t_locale
setlocale(LC_ALL, "es_ES.UTF-8")=es_ES.UTF-8
setlocale(LC_ALL, "en_EN.UTF-8")=(null)
setlocale(LC_ALL, "fake")=(null)
setlocale(LC_ALL, NULL)=es_ES.UTF-8


In the case of using "" as locale:

DFly:
$ ./t_locale1
setlocale(LC_ALL, "")=(null)
$ echo $LC_ALL
fake

FreBSD 9.1:
root at testfbsd:/root # ./t_locale
setlocale(LC_ALL, "")=(null)
root at testfbsd:/root # echo $LC_ALL
fake

I hope I'm not misunderstanding what you just said.

Best regards,
Antonio Huete


----------------------------------------
Bug #2415: setlocale() for unknown locales
http://bugs.dragonflybsd.org/issues/2415#change-12016

* Author: meand
* Status: New
* Priority: Normal
* Assignee: tuxillo
* Category: Userland
* Target version: 3.9.x
----------------------------------------
The return value of setlocale() for LC_ALL deviates from implementations
found in FreeBSD, NetBSD, GNU libc and OpenSolaris. Other implementations
return NULL for unknown locales and the category LC_ALL, where instead
DragonflyBSD isresponding with the internal value list.

Thus an environment variable LC_ALL=fake produces

    ### setlocale(LC_ALL, "");
    C/C/fake/fake/fake/C

    ### setlocale(LC_CTYPE, "");
    (null)

The LC_ALL category is hiding the erroneous effect from the
invoking program, whereas the other categories are correctly
reporting their failures.



-- 
You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account



More information about the Bugs mailing list