Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Nov 2000 17:02:30 -0500 (EST)
From:      Mikhail Teterin <mi@privatelabs.com>
To:        questions@freebsd.org
Subject:   setting locale
Message-ID:  <200011292202.eATM2UP54864@misha.privatelabs.com>

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

I'm having  a strange  problem experimenting. I  thought, that  by using
setlocale(LC_ALL,  NULL) I  will get  whatever the  current setting  for
LANG  (or LC_ALL)  is in  the environment.  But as  this simple  program
illustrates, it is not the case:

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

int main(int argc, char *argv[]) {
	char *locale;
	unsigned char b = argv[argc-1][0];
	locale = setlocale(LC_ALL, NULL);
	printf("In %s ``%c'' (%x) is %san alpha\n", locale, b, b,
		isalpha(b) ? "" : "not ");
}

	env LANG=ru_SU.KOI8-R ./t l
	In C ``l'' (6c) is an alpha
	env LANG=ru_SU.KOI8-R ./t Ë
	In C ``Ë'' (cb) is not an alpha
	env LANG=nl_NL.ISO_8859-1 ./t l
	In C ``l'' (6c) is an alpha

How  do I  make force  my C-program  use the  right locale?  I could  do
something like:

	setlocale(LC_ALL, getenv("LANG"))

but is not that what specifying NULL is supposed to do?

Thanks!

	-mi


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




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