fixed some bugs, added LIST, Makefile & .distr
authoreck <none@none>
Mon, 18 Dec 1989 15:49:11 +0000 (15:49 +0000)
committereck <none@none>
Mon, 18 Dec 1989 15:49:11 +0000 (15:49 +0000)
lang/cem/libcc.ansi/locale/.distr [new file with mode: 0644]
lang/cem/libcc.ansi/locale/LIST [new file with mode: 0644]
lang/cem/libcc.ansi/locale/Makefile [new file with mode: 0644]
lang/cem/libcc.ansi/locale/localeconv.c
lang/cem/libcc.ansi/locale/setlocale.c

diff --git a/lang/cem/libcc.ansi/locale/.distr b/lang/cem/libcc.ansi/locale/.distr
new file mode 100644 (file)
index 0000000..4e19646
--- /dev/null
@@ -0,0 +1,4 @@
+LIST
+Makefile
+localeconv.c
+setlocale.c
diff --git a/lang/cem/libcc.ansi/locale/LIST b/lang/cem/libcc.ansi/locale/LIST
new file mode 100644 (file)
index 0000000..6ec7d31
--- /dev/null
@@ -0,0 +1,2 @@
+localeconv.c
+setlocale.c
diff --git a/lang/cem/libcc.ansi/locale/Makefile b/lang/cem/libcc.ansi/locale/Makefile
new file mode 100644 (file)
index 0000000..bfc32cb
--- /dev/null
@@ -0,0 +1,12 @@
+CFLAGS=-L -LIB
+
+.SUFFIXES: .o .e .c
+
+.e.o:
+       $(CC) $(CFLAGS) -c -o $@ $*.e
+
+clean:
+       rm -rf localeconv.o setlocale.o OLIST
+
+localeconv.o:
+setlocale.o:
index 407a480..fdc03a0 100644 (file)
@@ -23,6 +23,7 @@ localeconv(void)
        lcp->mon_grouping = "";
        lcp->positive_sign = "";
        lcp->negative_sign = "";
+       lcp->int_frac_digits = CHAR_MAX;
        lcp->frac_digits = CHAR_MAX;
        lcp->p_cs_precedes = CHAR_MAX;
        lcp->p_sep_by_space = CHAR_MAX;
index d2b24f3..87bb74a 100644 (file)
@@ -4,22 +4,24 @@
 /* $Header$ */
 
 #include       <locale.h>
+#include       <string.h>
 
 struct lconv _lc;
 
 char *
 setlocale(int category, const char *locale)
 {
-       if (strcmp(locale, "C")) return (char *)NULL;
+       if (!locale) return "C";
+       if (*locale && strcmp(locale, "C")) return (char *)NULL;
        
        switch(category) {
        case LC_ALL:
-       case LC_COLLATE:
        case LC_CTYPE:
-       case LC_MONETARY:
-       case LC_NUMERIC:
+       case LC_COLLATE:
        case LC_TIME:
-               return locale;
+       case LC_NUMERIC:
+       case LC_MONETARY:
+               return *locale ? (char *)locale : "C";
        default:
                return (char *)NULL;
        }