X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Flocale%2F__setlocalecat.c;h=c93e9ba0de0334da84a382e942274456cee090d7;hb=e98a54643ee95032baab883673628314e520012e;hp=bbecde413f6b772074ca2d6e4be513f3ad1c9189;hpb=6cb4f91db7a5dc3bca63037ddc5f998a08dc3fb0;p=musl diff --git a/src/locale/__setlocalecat.c b/src/locale/__setlocalecat.c index bbecde41..c93e9ba0 100644 --- a/src/locale/__setlocalecat.c +++ b/src/locale/__setlocalecat.c @@ -4,13 +4,20 @@ #include "libc.h" #include "atomic.h" +const char *__lctrans_impl(const char *msg, const struct __locale_map *lm) +{ + const char *trans = 0; + if (lm) trans = __mo_lookup(lm->map, lm->map_size, msg); + return trans ? trans : msg; +} + const unsigned char *__map_file(const char *, size_t *); int __munmap(void *, size_t); char *__strchrnul(const char *, int); static struct __locale_map *findlocale(const char *name, size_t n) { - static void *loc_head; + static void *volatile loc_head; struct __locale_map *p, *new, *old_head; const char *path = 0, *z; char buf[256]; @@ -21,8 +28,6 @@ static struct __locale_map *findlocale(const char *name, size_t n) for (p=loc_head; p; p=p->next) if (!strcmp(name, p->name)) return p; - if (strchr(name, '/')) return 0; - if (!libc.secure) path = getenv("MUSL_LOCPATH"); /* FIXME: add a default path? */ if (!path) return 0; @@ -74,7 +79,9 @@ int __setlocalecat(locale_t loc, int cat, const char *val) (val = "C.UTF-8"); } - size_t n = strnlen(val, LOCALE_NAME_MAX); + size_t n; + for (n=0; n