Index: fusl/src/locale/textdomain.c |
diff --git a/fusl/src/locale/textdomain.c b/fusl/src/locale/textdomain.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c501501d2b0e728f2634dcfa3458fc9101ccfab7 |
--- /dev/null |
+++ b/fusl/src/locale/textdomain.c |
@@ -0,0 +1,44 @@ |
+#include <libintl.h> |
+#include <string.h> |
+#include <stdlib.h> |
+#include <errno.h> |
+#include <limits.h> |
+#include "libc.h" |
+#include "atomic.h" |
+ |
+static char *current_domain; |
+ |
+char *__gettextdomain() |
+{ |
+ return current_domain ? current_domain : "messages"; |
+} |
+ |
+char *textdomain(const char *domainname) |
+{ |
+ if (!domainname) return __gettextdomain(); |
+ |
+ size_t domlen = strlen(domainname); |
+ if (domlen > NAME_MAX) { |
+ errno = EINVAL; |
+ return 0; |
+ } |
+ |
+ if (!current_domain) { |
+ current_domain = malloc(NAME_MAX+1); |
+ if (!current_domain) return 0; |
+ } |
+ |
+ memcpy(current_domain, domainname, domlen+1); |
+ |
+ return current_domain; |
+} |
+ |
+char *gettext(const char *msgid) |
+{ |
+ return dgettext(0, msgid); |
+} |
+ |
+char *ngettext(const char *msgid1, const char *msgid2, unsigned long int n) |
+{ |
+ return dngettext(0, msgid1, msgid2, n); |
+} |