diff options
author | Rich Felker <dalias@aerifal.cx> | 2014-07-26 02:34:09 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2014-07-26 02:34:09 -0400 |
commit | 41421d6beb3f17aa8838f7cdaad9cd16b4c451f6 (patch) | |
tree | 9bf941192997e02121a3e8de767007d1ebf54693 /src/locale/__setlocalecat.c | |
parent | 6cb4f91db7a5dc3bca63037ddc5f998a08dc3fb0 (diff) | |
download | musl-41421d6beb3f17aa8838f7cdaad9cd16b4c451f6.tar.gz musl-41421d6beb3f17aa8838f7cdaad9cd16b4c451f6.tar.bz2 musl-41421d6beb3f17aa8838f7cdaad9cd16b4c451f6.tar.xz musl-41421d6beb3f17aa8838f7cdaad9cd16b4c451f6.zip |
implement mo file string lookup for translations
the core is based on a binary search; hash table is not used. both
native and reverse-endian mo files are supported. all offsets read
from the mapped mo file are checked against the mapping size to
prevent the possibility of reads outside the mapping.
this commit has no observable effects since there are not yet any
callers to the message translation code.
Diffstat (limited to 'src/locale/__setlocalecat.c')
-rw-r--r-- | src/locale/__setlocalecat.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/locale/__setlocalecat.c b/src/locale/__setlocalecat.c index bbecde41..44385e02 100644 --- a/src/locale/__setlocalecat.c +++ b/src/locale/__setlocalecat.c @@ -4,6 +4,13 @@ #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); |