diff options
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | libpam/Makefile.am | 1 | ||||
-rw-r--r-- | libpam/pam_start.c | 15 |
3 files changed, 17 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 7565a830..39124d87 100644 --- a/configure.ac +++ b/configure.ac @@ -676,6 +676,7 @@ AM_CONDITIONAL(ENABLE_GENERATE_PDF, test -n "$FO2PDF") AM_GNU_GETTEXT_VERSION([0.18.3]) AM_GNU_GETTEXT([external]) +AC_CHECK_FUNCS(bindtextdomain) AC_CHECK_FUNCS(dngettext) AH_BOTTOM([#ifdef ENABLE_NLS diff --git a/libpam/Makefile.am b/libpam/Makefile.am index 389d5d02..0d2fb6f3 100644 --- a/libpam/Makefile.am +++ b/libpam/Makefile.am @@ -3,6 +3,7 @@ # AM_CFLAGS = -DDEFAULT_MODULE_PATH=\"$(SECUREDIR)/\" -DLIBPAM_COMPILE \ + -DLOCALEDIR=\"$(localedir)\" \ -I$(srcdir)/include $(LIBPRELUDE_CFLAGS) $(ECONF_CFLAGS) \ -DPAM_VERSION=\"$(VERSION)\" -DSYSCONFDIR=\"$(sysconfdir)\" \ $(WARN_CFLAGS) diff --git a/libpam/pam_start.c b/libpam/pam_start.c index 5e9b0948..c32ce61c 100644 --- a/libpam/pam_start.c +++ b/libpam/pam_start.c @@ -25,6 +25,21 @@ static int _pam_start_internal ( D(("called pam_start: [%s] [%s] [%p] [%p]" ,service_name, user, pam_conversation, pamh)); +#ifdef HAVE_BINDTEXTDOMAIN + /* Bind text domain to pull in PAM translations for a case where + linux-pam is installed to non-default prefix. + + It is safe to call bindtextdomain() from multiple threads, but it + has a chance to have some overhead. Let's try to do it once (or a + small number of times as `bound_text_domain` is not protected by + a lock. */ + static int bound_text_domain = 0; + if (!bound_text_domain) { + bound_text_domain = 1; + bindtextdomain(PACKAGE, LOCALEDIR); + } +#endif + if (pamh == NULL) { pam_syslog(NULL, LOG_CRIT, "pam_start: invalid argument: pamh == NULL"); |