From 41421d6beb3f17aa8838f7cdaad9cd16b4c451f6 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 26 Jul 2014 02:34:09 -0400 Subject: 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. --- src/locale/__setlocalecat.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/locale/__setlocalecat.c') 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); -- cgit v1.2.1