xref: /aosp_15_r20/external/musl/src/locale/textdomain.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <libintl.h>
2*c9945492SAndroid Build Coastguard Worker #include <string.h>
3*c9945492SAndroid Build Coastguard Worker #include <stdlib.h>
4*c9945492SAndroid Build Coastguard Worker #include <errno.h>
5*c9945492SAndroid Build Coastguard Worker #include <limits.h>
6*c9945492SAndroid Build Coastguard Worker 
7*c9945492SAndroid Build Coastguard Worker static char *current_domain;
8*c9945492SAndroid Build Coastguard Worker 
__gettextdomain()9*c9945492SAndroid Build Coastguard Worker char *__gettextdomain()
10*c9945492SAndroid Build Coastguard Worker {
11*c9945492SAndroid Build Coastguard Worker 	return current_domain ? current_domain : "messages";
12*c9945492SAndroid Build Coastguard Worker }
13*c9945492SAndroid Build Coastguard Worker 
textdomain(const char * domainname)14*c9945492SAndroid Build Coastguard Worker char *textdomain(const char *domainname)
15*c9945492SAndroid Build Coastguard Worker {
16*c9945492SAndroid Build Coastguard Worker 	if (!domainname) return __gettextdomain();
17*c9945492SAndroid Build Coastguard Worker 
18*c9945492SAndroid Build Coastguard Worker 	size_t domlen = strlen(domainname);
19*c9945492SAndroid Build Coastguard Worker 	if (domlen > NAME_MAX) {
20*c9945492SAndroid Build Coastguard Worker 		errno = EINVAL;
21*c9945492SAndroid Build Coastguard Worker 		return 0;
22*c9945492SAndroid Build Coastguard Worker 	}
23*c9945492SAndroid Build Coastguard Worker 
24*c9945492SAndroid Build Coastguard Worker 	if (!current_domain) {
25*c9945492SAndroid Build Coastguard Worker 		current_domain = malloc(NAME_MAX+1);
26*c9945492SAndroid Build Coastguard Worker 		if (!current_domain) return 0;
27*c9945492SAndroid Build Coastguard Worker 	}
28*c9945492SAndroid Build Coastguard Worker 
29*c9945492SAndroid Build Coastguard Worker 	memcpy(current_domain, domainname, domlen+1);
30*c9945492SAndroid Build Coastguard Worker 
31*c9945492SAndroid Build Coastguard Worker 	return current_domain;
32*c9945492SAndroid Build Coastguard Worker }
33*c9945492SAndroid Build Coastguard Worker 
gettext(const char * msgid)34*c9945492SAndroid Build Coastguard Worker char *gettext(const char *msgid)
35*c9945492SAndroid Build Coastguard Worker {
36*c9945492SAndroid Build Coastguard Worker 	return dgettext(0, msgid);
37*c9945492SAndroid Build Coastguard Worker }
38*c9945492SAndroid Build Coastguard Worker 
ngettext(const char * msgid1,const char * msgid2,unsigned long int n)39*c9945492SAndroid Build Coastguard Worker char *ngettext(const char *msgid1, const char *msgid2, unsigned long int n)
40*c9945492SAndroid Build Coastguard Worker {
41*c9945492SAndroid Build Coastguard Worker 	return dngettext(0, msgid1, msgid2, n);
42*c9945492SAndroid Build Coastguard Worker }
43