>From aebf6a9032ce9755f221f5aa25afa6ed1184c626 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 16 Sep 2026 12:21:43 -0400 Subject: [PATCH 11/18] locale: replace gettext-based string lookups with new int-keyed tables nl_langinfo, strerror, hstrerror, gai_strerror, and regerror are switched over. getopt and strsignal were previously overlooked, and will be switched over separately. --- src/errno/strerror.c | 5 ++--- src/locale/langinfo.c | 8 ++------ src/network/gai_strerror.c | 5 ++--- src/network/hstrerror.c | 5 ++--- src/regex/regerror.c | 3 +-- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/errno/strerror.c b/src/errno/strerror.c index ffa655d3..d2ba9e26 100644 --- a/src/errno/strerror.c +++ b/src/errno/strerror.c @@ -52,10 +52,9 @@ char *__strerror_l(int e, locale_t loc) e = common_errno(e); static const int unknown[] = LPATH(ERRDOMAIN_ERRNO, -1); const int path[] = LPATH(ERRDOMAIN_ERRNO, e); - const char *s = __loc_lookup((const void *)&strerrors, - 0 /* LMEMB(loc,LC_MESSAGES,errors) */, + return (char *)__loc_lookup((const void *)&strerrors, + LMEMB(loc,LC_MESSAGES,errors), path, unknown); - return (char *)LCTRANS_CUR(s); } char *strerror(int e) diff --git a/src/locale/langinfo.c b/src/locale/langinfo.c index 7d3bb015..b7893df2 100644 --- a/src/locale/langinfo.c +++ b/src/locale/langinfo.c @@ -90,14 +90,10 @@ char *__nl_langinfo_l(nl_item item, locale_t loc) return loc->cat[cat] ? (char *)loc->cat[cat]->name : "C"; const char *str = __loc_lookup((const void *)&c_langinfo, - 0 /* LMEMB(CURRENT_LOCALE,cat,langinfo) */, + LMEMB(CURRENT_LOCALE,cat,langinfo), path, unknown); - if (!str) str = ""; - - if (cat != LC_NUMERIC && *str) str = LCTRANS(str, cat, loc); - - return (char *)str; + return str ? (char *)str : ""; } char *__nl_langinfo(nl_item item) diff --git a/src/network/gai_strerror.c b/src/network/gai_strerror.c index 93163507..c890b2bb 100644 --- a/src/network/gai_strerror.c +++ b/src/network/gai_strerror.c @@ -25,8 +25,7 @@ const char *gai_strerror(int e) static const int unknown[] = LPATH(ERRDOMAIN_EAI, EAI__); const int path[] = LPATH(ERRDOMAIN_EAI, e); - const char *s = __loc_lookup((const void *)&gai_strerrors, - 0 /* LMEMB(CURRENT_LOCALE,LC_MESSAGES,errors) */, + return __loc_lookup((const void *)&gai_strerrors, + LMEMB(CURRENT_LOCALE,LC_MESSAGES,errors), path, unknown); - return LCTRANS_CUR(s); } diff --git a/src/network/hstrerror.c b/src/network/hstrerror.c index 76537679..865135c2 100644 --- a/src/network/hstrerror.c +++ b/src/network/hstrerror.c @@ -26,8 +26,7 @@ const char *hstrerror(int e) static const int unknown[] = LPATH(ERRDOMAIN_H, H_); const int path[] = LPATH(ERRDOMAIN_H, e); - const char *s = __loc_lookup((const void *)&hstrerrors, - 0 /* LMEMB(CURRENT_LOCALE,LC_MESSAGES,errors) */, + return __loc_lookup((const void *)&hstrerrors, + LMEMB(CURRENT_LOCALE,LC_MESSAGES,errors), path, unknown); - return LCTRANS_CUR(s); } diff --git a/src/regex/regerror.c b/src/regex/regerror.c index e6de915c..14126508 100644 --- a/src/regex/regerror.c +++ b/src/regex/regerror.c @@ -27,8 +27,7 @@ size_t regerror(int e, const regex_t *restrict preg, char *restrict buf, size_t const int path[] = LPATH(ERRDOMAIN_REG, e); const char *s = __loc_lookup((const void *)®errors, - 0 /* LMEMB(CURRENT_LOCALE,LC_MESSAGES,errors) */, + LMEMB(CURRENT_LOCALE,LC_MESSAGES,errors), path, unknown); - s = LCTRANS_CUR(s); return 1+snprintf(buf, size, "%s", s); } -- 2.21.0