diff --git a/source3/configure.in b/source3/configure.in index d0f841f0171..814c7356d2a 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -1100,7 +1100,7 @@ AC_CHECK_HEADERS(sys/mman.h) # setbuffer, shmget, shm_open are needed for smbtorture AC_CHECK_FUNCS(shmget shm_open) AC_CHECK_FUNCS(gettext dgettext) -AC_CHECK_FUNCS(bindtextdomain textdomain) +AC_CHECK_FUNCS(bindtextdomain textdomain bind_textdomain_codeset) AC_CHECK_FUNCS(strupr) # Find a method of generating a stack trace diff --git a/source3/utils/net.c b/source3/utils/net.c index 0d79d6e6d2b..95b937444ec 100644 --- a/source3/utils/net.c +++ b/source3/utils/net.c @@ -880,6 +880,16 @@ static struct functable net_func[] = { lp_load(get_dyn_CONFIGFILE(), true, false, false, true); +#if defined(HAVE_BIND_TEXTDOMAIN_CODESET) + /* Bind our gettext results to 'unix charset' + + This ensures that the translations and any embedded strings are in the + same charset. It won't be the one from the user's locale (we no + longer auto-detect that), but it will be self-consistent. + */ + bind_textdomain_codeset(MODULE_NAME, lp_unix_charset()); +#endif + argv_new = (const char **)poptGetArgs(pc); argc_new = argc; diff --git a/source3/wscript b/source3/wscript index a3a14f06074..d88faa21044 100644 --- a/source3/wscript +++ b/source3/wscript @@ -138,7 +138,7 @@ def configure(conf): conf.CHECK_FUNCS('memalign posix_memalign hstrerror') conf.CHECK_FUNCS('shmget') conf.CHECK_FUNCS_IN('shm_open', 'rt', checklibc=True) - conf.CHECK_FUNCS('gettext dgettext bindtextdomain textdomain') + conf.CHECK_FUNCS('gettext dgettext bindtextdomain textdomain bind_textdomain_codeset') #FIXME: for some reason this one still fails conf.CHECK_FUNCS_IN('yp_get_default_domain', 'nsl') conf.CHECK_FUNCS_IN('dn_expand _dn_expand __dn_expand', 'resolv')