com_err: correctly deal with lack of libintl

On machines lacking a libintl, _intlize() currently fails to initialize
the output error string--leading to tools (e.g., translate_et) returning
a null string; make afs_com_err fall back to returning the en/US canonical
error text when we don't have any i18n support...

Change-Id: I333745fb0a16e5bc9adb0755591d80de010d4d31
Reviewed-on: http://gerrit.openafs.org/6638
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
This commit is contained in:
Tom Keiser 2012-02-01 03:31:23 -05:00 committed by Derrick Brashear
parent 20e82cecd9
commit ef63547e95

View File

@ -154,12 +154,16 @@ _intlize(const char *msg, int base, char *str, size_t len)
static_inline const char *
_intlize(const char *msg, int base, char *str, size_t len)
{
#if defined(HAVE_LIBINTL)
char domain[12 +20];
#endif
if (!str)
return msg;
snprintf(domain, sizeof(domain), "heim_com_err%d", base);
#if defined(HAVE_LIBINTL)
snprintf(domain, sizeof(domain), "heim_com_err%d", base);
strlcpy(str, dgettext(domain, msg), len);
#else
strlcpy(str, msg, len);
#endif
return str;
}