more locale_t interfaces (string stuff) and header updates
authorRich Felker <dalias@aerifal.cx>
Tue, 7 Feb 2012 02:51:02 +0000 (21:51 -0500)
committerRich Felker <dalias@aerifal.cx>
Tue, 7 Feb 2012 02:51:02 +0000 (21:51 -0500)
this should be everything except for some functions where the non-_l
version isn't even implemented yet (mainly some non-ISO-C wcs*
functions).

include/string.h
include/strings.h
include/time.h
src/locale/nl_langinfo_l.c [new file with mode: 0644]
src/locale/strcasecmp_l.c [new file with mode: 0644]
src/locale/strcoll_l.c [new file with mode: 0644]
src/locale/strerror_l.c [new file with mode: 0644]
src/locale/strftime_l.c [new file with mode: 0644]
src/locale/strncasecmp_l.c [new file with mode: 0644]
src/locale/strxfrm_l.c [new file with mode: 0644]

index a5b5a510a41d5de5937b559556dd598f8a3c2d3d..c2dc7e35efb6137f67c5e07196f1719132e84487 100644 (file)
@@ -13,6 +13,11 @@ extern "C" {
 #endif
 
 #define __NEED_size_t
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+#define __NEED_locale_t
+#endif
+
 #include <bits/alltypes.h>
 
 void *memcpy (void *, const void *, size_t);
@@ -57,6 +62,9 @@ size_t strnlen (const char *, size_t);
 char *strdup (const char *);
 char *strndup (const char *, size_t);
 char *strsignal(int);
+char *strerror_l (int, locale_t);
+int strcoll_l (const char *, const char *, locale_t);
+size_t strxfrm_l (char *, const char *, size_t, locale_t);
 #endif
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
index aa35668c67e57c9e3ad6d38d3b6842372e230106..345c6517c78491135fce396113ec6cbc9ecf8a16 100644 (file)
@@ -7,6 +7,7 @@ extern "C" {
 
 
 #define __NEED_size_t
+#define __NEED_locale_t
 #include <bits/alltypes.h>
 
 
@@ -22,6 +23,9 @@ char *rindex (const char *, int);
 int strcasecmp (const char *, const char *);
 int strncasecmp (const char *, const char *, size_t);
 
+int strcasecmp_l (const char *, const char *, locale_t);
+int strncasecmp_l (const char *, const char *, size_t, locale_t);
+
 #ifdef __cplusplus
 }
 #endif
index 557c8f4b6deab8fb3b32fb121272f7ee88bcc5a8..ddfad58f7dc3cac609b06137279d35c815bbc81f 100644 (file)
@@ -23,6 +23,7 @@ extern "C" {
 #define __NEED_clockid_t
 #define __NEED_timer_t
 #define __NEED_pid_t
+#define __NEED_locale_t
 #endif
 
 #include <bits/alltypes.h>
@@ -58,6 +59,8 @@ char *ctime (const time_t *);
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 
+size_t strftime_l (char *, size_t, const char *, const struct tm *, locale_t);
+
 struct tm *gmtime_r (const time_t *, struct tm *);
 struct tm *localtime_r (const time_t *, struct tm *);
 char *asctime_r (const struct tm *, char *);
diff --git a/src/locale/nl_langinfo_l.c b/src/locale/nl_langinfo_l.c
new file mode 100644 (file)
index 0000000..b54db95
--- /dev/null
@@ -0,0 +1,7 @@
+#include <locale.h>
+#include <langinfo.h>
+
+char *nl_langinfo_l(nl_item item, locale_t l)
+{
+       return nl_langinfo(item);
+}
diff --git a/src/locale/strcasecmp_l.c b/src/locale/strcasecmp_l.c
new file mode 100644 (file)
index 0000000..eea2f80
--- /dev/null
@@ -0,0 +1,7 @@
+#include <strings.h>
+#include <ctype.h>
+
+int strcasecmp_l(const char *l, const char *r, locale_t loc)
+{
+       return strcasecmp(l, r);
+}
diff --git a/src/locale/strcoll_l.c b/src/locale/strcoll_l.c
new file mode 100644 (file)
index 0000000..7948b0d
--- /dev/null
@@ -0,0 +1,7 @@
+#include <string.h>
+#include <locale.h>
+
+int strcoll_l(const char *l, const char *r, locale_t loc)
+{
+       return strcoll(l, r);
+}
diff --git a/src/locale/strerror_l.c b/src/locale/strerror_l.c
new file mode 100644 (file)
index 0000000..765f5c6
--- /dev/null
@@ -0,0 +1,7 @@
+#include <string.h>
+#include <locale.h>
+
+char *strerror_l(int err, locale_t l)
+{
+       return strerror(err);
+}
diff --git a/src/locale/strftime_l.c b/src/locale/strftime_l.c
new file mode 100644 (file)
index 0000000..70b2f15
--- /dev/null
@@ -0,0 +1,7 @@
+#include <locale.h>
+#include <time.h>
+
+size_t strftime_l(char *s, size_t n, const char *f, const struct tm *tm, locale_t l)
+{
+       return strftime(s, n, f, tm);
+}
diff --git a/src/locale/strncasecmp_l.c b/src/locale/strncasecmp_l.c
new file mode 100644 (file)
index 0000000..af33ada
--- /dev/null
@@ -0,0 +1,7 @@
+#include <strings.h>
+#include <locale.h>
+
+int strncasecmp_l(const char *l, const char *r, size_t n, locale_t loc)
+{
+       return strncasecmp(l, r, n);
+}
diff --git a/src/locale/strxfrm_l.c b/src/locale/strxfrm_l.c
new file mode 100644 (file)
index 0000000..78e5655
--- /dev/null
@@ -0,0 +1,6 @@
+#include <string.h>
+
+size_t strxfrm_l(char *dest, const char *src, size_t n, locale_t l)
+{
+       return strxfrm(dest, src, n);
+}