implement non-default plural rules for ngettext translations
[musl] / src / locale / newlocale.c
1 #include <stdlib.h>
2 #include <string.h>
3 #include "locale_impl.h"
4 #include "libc.h"
5
6 locale_t __newlocale(int mask, const char *name, locale_t loc)
7 {
8         int i;
9
10         if (!loc) {
11                 loc = calloc(1, sizeof *loc + LOCALE_NAME_MAX + 1);
12                 if (!loc) return 0;
13                 loc->messages_name = (void *)(loc+1);
14                 for (i=0; i<LC_ALL; i++)
15                         if (!(mask & (1<<i)))
16                                 __setlocalecat(loc, i, "");
17         }
18
19         for (i=0; i<LC_ALL; i++)
20                 if (mask & (1<<i))
21                         __setlocalecat(loc, i, name);
22
23         return loc;
24 }
25
26 weak_alias(__newlocale, newlocale);