aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>2001-02-09 22:43:39 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>2001-02-09 22:43:39 +0000
commitd0e2083fdd1737203f8b732d4cc192884caa7379 (patch)
tree09cbba84ed9bdfaee9d773368379ffd9fa891437 /lib
parent16d92c70f12609e99f7d79371fd9a62c4b0c282c (diff)
downloadsrc-d0e2083fdd1737203f8b732d4cc192884caa7379.tar.gz
src-d0e2083fdd1737203f8b732d4cc192884caa7379.zip
Implement CODESET
Notes
Notes: svn path=/head/; revision=72263
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/locale/nl_langinfo.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/libc/locale/nl_langinfo.c b/lib/libc/locale/nl_langinfo.c
index 50dcd2037675..f94736d4d5f3 100644
--- a/lib/libc/locale/nl_langinfo.c
+++ b/lib/libc/locale/nl_langinfo.c
@@ -26,7 +26,9 @@
* $FreeBSD$
*/
-#include "langinfo.h"
+#include <locale.h>
+#include <langinfo.h>
+#include <string.h>
#include "../stdtime/timelocal.h"
#include "lnumeric.h"
#include "lmonetary.h"
@@ -37,11 +39,18 @@
char *
nl_langinfo(nl_item item) {
- char *ret;
+ char *ret, *s, *cs;
switch (item) {
case CODESET:
- ret = ""; /* XXX: need to be implemented */
+ ret = "";
+ if ((s = setlocale(LC_CTYPE, NULL)) != NULL) {
+ if ((cs = strchr(s, '.')) != NULL)
+ ret = cs + 1;
+ else if (strcmp(s, "C") == 0 ||
+ strcmp(s, "POSIX") == 0)
+ ret = "US-ASCII";
+ }
break;
case D_T_FMT:
ret = (char *) __get_current_time_locale()->c_fmt;