xref: /aosp_15_r20/external/musl/src/locale/duplocale.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <stdlib.h>
2*c9945492SAndroid Build Coastguard Worker #include <string.h>
3*c9945492SAndroid Build Coastguard Worker #include "locale_impl.h"
4*c9945492SAndroid Build Coastguard Worker #include "libc.h"
5*c9945492SAndroid Build Coastguard Worker 
6*c9945492SAndroid Build Coastguard Worker #define malloc __libc_malloc
7*c9945492SAndroid Build Coastguard Worker #define calloc undef
8*c9945492SAndroid Build Coastguard Worker #define realloc undef
9*c9945492SAndroid Build Coastguard Worker #define free undef
10*c9945492SAndroid Build Coastguard Worker 
__duplocale(locale_t old)11*c9945492SAndroid Build Coastguard Worker locale_t __duplocale(locale_t old)
12*c9945492SAndroid Build Coastguard Worker {
13*c9945492SAndroid Build Coastguard Worker 	locale_t new = malloc(sizeof *new);
14*c9945492SAndroid Build Coastguard Worker 	if (!new) return 0;
15*c9945492SAndroid Build Coastguard Worker 	if (old == LC_GLOBAL_LOCALE) old = &libc.global_locale;
16*c9945492SAndroid Build Coastguard Worker 	*new = *old;
17*c9945492SAndroid Build Coastguard Worker 	return new;
18*c9945492SAndroid Build Coastguard Worker }
19*c9945492SAndroid Build Coastguard Worker 
20*c9945492SAndroid Build Coastguard Worker weak_alias(__duplocale, duplocale);
21