[sssd] Fix several regressions since 1.5.x

Stephen Gallagher sgallagh at fedoraproject.org
Thu May 24 12:23:29 UTC 2012


commit 359d341a35142dd39d4182fd31ae7d4fee51e5c6
Author: Stephen Gallagher <sgallagh at redhat.com>
Date:   Thu May 24 08:23:25 2012 -0400

    Fix several regressions since 1.5.x
    
    - Ensure that the RPM creates the /var/lib/sss/mc directory
    - Add support for Netscape password warning expiration control
    - Rebuild against libldb 1.1.6

 ...ge-Kerberos-credential-cache-default-loca.patch |    3 +-
 ...ential-NULL-dereference-in-proxy-provider.patch |   25 +
 0003-Fix-typos-in-message-and-man-pages.patch      |   62 +
 0004-Fixed-two-minor-memory-leaks.patch            |   43 +
 ...name-struct-dom_sid-to-struct-sss_dom_sid.patch |  296 ++
 0006-Fix-libsss_hbac-library-version.patch         |   25 +
 ...pointer-to-body-after-body-is-reallocated.patch |   26 +
 ...se-sized_string-correctly-in-FQDN-domains.patch |   34 +
 ...llow-running-make-rpms-on-RHEL-5-machines.patch |   63 +
 ...db-attribute-name-not-LDAP-attribute-name.patch |   39 +
 ...in-memory-netgroup-cache-before-the-nowai.patch |   46 +
 ...positional-arguments-in-translatable-stri.patch |  264 ++
 ...ementation-of-Netscape-password-warning-e.patch |  204 +
 ...-Avoid-NULL-dereference-with-empty-keytab.patch |   45 +
 ...-to-syslog-when-dereference-requests-fail.patch |   27 +
 0016-Update-translation-sources.patch              | 4201 ++++++++++++++++++++
 ...-groups-Do-not-process-callback-with-_pos.patch |   58 +
 0018-Fixed-issue-in-SELinux-user-maps.patch        |   35 +
 ...fault-when-mmap-cache-cannot-be-initializ.patch |   35 +
 sssd.spec                                          |   35 +-
 20 files changed, 5562 insertions(+), 4 deletions(-)
---
diff --git a/FED01-Change-Kerberos-credential-cache-default-loca.patch b/0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch
similarity index 96%
rename from FED01-Change-Kerberos-credential-cache-default-loca.patch
rename to 0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch
index 99d9267..5aad9e0 100644
--- a/FED01-Change-Kerberos-credential-cache-default-loca.patch
+++ b/0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch
@@ -1,7 +1,8 @@
 From 05c49dd916dcbea2ce8f6a6b14fd54a5c67fd6db Mon Sep 17 00:00:00 2001
 From: Stephen Gallagher <sgallagh at redhat.com>
 Date: Wed, 22 Feb 2012 07:53:56 -0500
-Subject: [PATCH] FEDORA: Change Kerberos credential cache default location
+Subject: [PATCH 01/19] FEDORA: Change Kerberos credential cache default
+ location
 
 On Fedora, we need to default to using /run/user/%u for credential
 caches for improved security and to simplify rpc.gssd locating the
diff --git a/0002-Potential-NULL-dereference-in-proxy-provider.patch b/0002-Potential-NULL-dereference-in-proxy-provider.patch
new file mode 100644
index 0000000..b75e224
--- /dev/null
+++ b/0002-Potential-NULL-dereference-in-proxy-provider.patch
@@ -0,0 +1,25 @@
+From 0b6df55aee996a4b1e8824d1c58c5494b0c5fb0b Mon Sep 17 00:00:00 2001
+From: Ariel Barria <arielb at fedoraproject.org>
+Date: Sat, 12 May 2012 11:00:51 -0500
+Subject: [PATCH 02/19] Potential NULL dereference in proxy provider
+
+---
+ src/providers/proxy/proxy_id.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/providers/proxy/proxy_id.c b/src/providers/proxy/proxy_id.c
+index 8a8c7ca80d1b24e53c3d55d06564e719a069642a..e7d9206e5081153ef389dd25db7a32816cc44839 100644
+--- a/src/providers/proxy/proxy_id.c
++++ b/src/providers/proxy/proxy_id.c
+@@ -215,7 +215,7 @@ static int save_user(struct sysdb_ctx *sysdb, bool lowercase,
+         shell = NULL;
+     }
+ 
+-    if (!lowercase || alias) {
++    if (lowercase || alias) {
+         attrs = sysdb_new_attrs(NULL);
+         if (!attrs) {
+             DEBUG(SSSDBG_CRIT_FAILURE, ("Allocation error ?!\n"));
+-- 
+1.7.10.1
+
diff --git a/0003-Fix-typos-in-message-and-man-pages.patch b/0003-Fix-typos-in-message-and-man-pages.patch
new file mode 100644
index 0000000..ced149b
--- /dev/null
+++ b/0003-Fix-typos-in-message-and-man-pages.patch
@@ -0,0 +1,62 @@
+From 47669c95501ee6adbb0700f4d4a62ae09daa21f7 Mon Sep 17 00:00:00 2001
+From: Yuri Chornoivan <yurchor at ukr.net>
+Date: Fri, 11 May 2012 23:12:19 +0300
+Subject: [PATCH 03/19] Fix typos in message and man pages.
+
+---
+ src/config/SSSDConfig.py            |    2 +-
+ src/man/include/ldap_id_mapping.xml |    2 +-
+ src/man/sssd.conf.5.xml             |    4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/config/SSSDConfig.py b/src/config/SSSDConfig.py
+index a44e138f6461681709d78bbece86f6f8720ae31c..11da7cf2ba42076f3088cbbff81b69b39a0dc449 100644
+--- a/src/config/SSSDConfig.py
++++ b/src/config/SSSDConfig.py
+@@ -85,7 +85,7 @@ option_strings = {
+     'autofs_negative_timeout' : _('Negative cache timeout length (seconds)'),
+ 
+     # [ssh]
+-    'ssh_hash_known_hosts': _('Whether to hash host names and adresses in the known_hosts file'),
++    'ssh_hash_known_hosts': _('Whether to hash host names and addresses in the known_hosts file'),
+ 
+     # [provider]
+     'id_provider' : _('Identity provider'),
+diff --git a/src/man/include/ldap_id_mapping.xml b/src/man/include/ldap_id_mapping.xml
+index 62e5598eb0d31fdc1185db13ae0c433b233b9ba2..75335f5032c36c01aa0bcc14d05b60ace0c22734 100644
+--- a/src/man/include/ldap_id_mapping.xml
++++ b/src/man/include/ldap_id_mapping.xml
+@@ -83,7 +83,7 @@ ldap_schema = ad
+                         </para>
+                         <para>
+                             NOTE: This option is different from
+-                            <quote>id_mn</quote> in that <quote>id_min</quote>
++                            <quote>id_min</quote> in that <quote>id_min</quote>
+                             acts to filter the output of requests to this domain,
+                             whereas this option controls the range of ID
+                             assignment. This is a subtle distinction, but the
+diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml
+index e283480e3a5725a1acee93c95b20d5b504393e4f..8eaeb13ce0e2af97b19b0855d8cc7f5985659214 100644
+--- a/src/man/sssd.conf.5.xml
++++ b/src/man/sssd.conf.5.xml
+@@ -521,7 +521,7 @@
+                     <listitem>
+                         <para>
+                             The default shell to use if the provider does not
+-                            return one during lookup. This option supercedes
++                            return one during lookup. This option supersedes
+                             any other shell options if it takes effect.
+                         </para>
+                         <para>
+@@ -786,7 +786,7 @@
+                     <term>ssh_hash_known_hosts (bool)</term>
+                     <listitem>
+                         <para>
+-                            Whether or not to hash host names and adresses in
++                            Whether or not to hash host names and addresses in
+                             the managed known_hosts file.
+                         </para>
+                         <para>
+-- 
+1.7.10.1
+
diff --git a/0004-Fixed-two-minor-memory-leaks.patch b/0004-Fixed-two-minor-memory-leaks.patch
new file mode 100644
index 0000000..17ecd1a
--- /dev/null
+++ b/0004-Fixed-two-minor-memory-leaks.patch
@@ -0,0 +1,43 @@
+From ac102092fe08183f916e6115fb6fef0f0a792126 Mon Sep 17 00:00:00 2001
+From: Jan Zeleny <jzeleny at redhat.com>
+Date: Mon, 14 May 2012 04:11:32 -0400
+Subject: [PATCH 04/19] Fixed two minor memory leaks
+
+---
+ src/providers/ldap/sdap.c       |    5 ++++-
+ src/providers/ldap/sdap_range.c |    3 ++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c
+index 1bb513ae639c37c64cd0064066f7c69552404671..01ba418a6e50808552845f6e91db448c57adbb83 100644
+--- a/src/providers/ldap/sdap.c
++++ b/src/providers/ldap/sdap.c
+@@ -123,7 +123,10 @@ int sdap_parse_entry(TALLOC_CTX *memctx,
+     }
+ 
+     attrs = sysdb_new_attrs(tmp_ctx);
+-    if (!attrs) return ENOMEM;
++    if (!attrs) {
++        ret = ENOMEM;
++        goto done;
++    }
+ 
+     str = ldap_get_dn(sh->ldap, sm->msg);
+     if (!str) {
+diff --git a/src/providers/ldap/sdap_range.c b/src/providers/ldap/sdap_range.c
+index 295b6605d15a83b7994bb440e3942f5f620cbeaf..a26443c8244bc58e609b2d9c6b4a2ded71193725 100644
+--- a/src/providers/ldap/sdap_range.c
++++ b/src/providers/ldap/sdap_range.c
+@@ -104,7 +104,8 @@ errno_t sdap_parse_range(TALLOC_CTX *mem_ctx,
+         DEBUG(SSSDBG_TRACE_LIBS,
+               ("[%s] contained the last set of values for this attribute\n",
+                attr_desc));
+-        return EOK;
++        ret = EOK;
++        goto done;
+     }
+ 
+     *range_offset = strtouint32(end_range, &endptr, 10);
+-- 
+1.7.10.1
+
diff --git a/0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch b/0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch
new file mode 100644
index 0000000..cc3b873
--- /dev/null
+++ b/0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch
@@ -0,0 +1,296 @@
+From 4e59e4c8f344e93a64d2bb53578c977475d76546 Mon Sep 17 00:00:00 2001
+From: Sumit Bose <sbose at redhat.com>
+Date: Mon, 14 May 2012 13:14:14 +0200
+Subject: [PATCH 05/19] Rename struct dom_sid to struct sss_dom_sid
+
+To avoid conflicts with struct dom_sid used by samba the sss_ prefix is
+added to the struct used by libsss_idmap.
+---
+ Makefile.am                    |    2 +-
+ src/lib/idmap/sss_idmap.c      |    6 +++---
+ src/lib/idmap/sss_idmap.h      |   14 +++++++-------
+ src/lib/idmap/sss_idmap_conv.c |   26 +++++++++++++-------------
+ src/tests/sss_idmap-tests.c    |   16 ++++++++--------
+ 5 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 5089b8e5c9cd6bddd0ad038423101a0d29e8b18e..2e13a9777a074e628b48bbd23626d019c2e5c617 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -500,7 +500,7 @@ libsss_idmap_la_SOURCES = \
+     src/lib/idmap/sss_idmap.c \
+     src/lib/idmap/sss_idmap_conv.c
+ libsss_idmap_la_LDFLAGS = \
+-    -version 1:0:1
++    -version-info 0:1:0
+ 
+ 
+ include_HEADERS = \
+diff --git a/src/lib/idmap/sss_idmap.c b/src/lib/idmap/sss_idmap.c
+index c970293bccd2385886453afdc2573e2bbbc9c7ad..c589bd458a01ecd9ba298e879e21f746a2ef50e6 100644
+--- a/src/lib/idmap/sss_idmap.c
++++ b/src/lib/idmap/sss_idmap.c
+@@ -361,7 +361,7 @@ enum idmap_error_code sss_idmap_unix_to_sid(struct sss_idmap_ctx *ctx,
+ }
+ 
+ enum idmap_error_code sss_idmap_dom_sid_to_unix(struct sss_idmap_ctx *ctx,
+-                                                struct dom_sid *dom_sid,
++                                                struct sss_dom_sid *dom_sid,
+                                                 uint32_t *id)
+ {
+     enum idmap_error_code err;
+@@ -407,11 +407,11 @@ done:
+ 
+ enum idmap_error_code sss_idmap_unix_to_dom_sid(struct sss_idmap_ctx *ctx,
+                                                 uint32_t id,
+-                                                struct dom_sid **_dom_sid)
++                                                struct sss_dom_sid **_dom_sid)
+ {
+     enum idmap_error_code err;
+     char *sid = NULL;
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+ 
+     CHECK_IDMAP_CTX(ctx, IDMAP_CONTEXT_INVALID);
+ 
+diff --git a/src/lib/idmap/sss_idmap.h b/src/lib/idmap/sss_idmap.h
+index 78e786afe680fa276e75148798a590115aec2c1b..a3ec919c8041bb151747cdb8b577dc25f64ad124 100644
+--- a/src/lib/idmap/sss_idmap.h
++++ b/src/lib/idmap/sss_idmap.h
+@@ -90,7 +90,7 @@ struct sss_idmap_range {
+ /**
+  * Opaque type for SIDs
+  */
+-struct dom_sid;
++struct sss_dom_sid;
+ 
+ /**
+  * Opaque type for the idmap context
+@@ -167,7 +167,7 @@ enum idmap_error_code sss_idmap_sid_to_unix(struct sss_idmap_ctx *ctx,
+  *                          idmap context
+  */
+ enum idmap_error_code sss_idmap_dom_sid_to_unix(struct sss_idmap_ctx *ctx,
+-                                                struct dom_sid *dom_sid,
++                                                struct sss_dom_sid *dom_sid,
+                                                 uint32_t *id);
+ 
+ /**
+@@ -220,7 +220,7 @@ enum idmap_error_code sss_idmap_unix_to_sid(struct sss_idmap_ctx *ctx,
+  */
+ enum idmap_error_code sss_idmap_unix_to_dom_sid(struct sss_idmap_ctx *ctx,
+                                                 uint32_t id,
+-                                                struct dom_sid **dom_sid);
++                                                struct sss_dom_sid **dom_sid);
+ 
+ /**
+  * @brief Translate unix UID or GID to a binary SID
+@@ -288,7 +288,7 @@ bool is_domain_sid(const char *str);
+ enum idmap_error_code sss_idmap_bin_sid_to_dom_sid(struct sss_idmap_ctx *ctx,
+                                                    const uint8_t *bin_sid,
+                                                    size_t length,
+-                                                   struct dom_sid **dom_sid);
++                                                   struct sss_dom_sid **dom_sid);
+ 
+ /**
+  * @brief Convert binary SID to SID string
+@@ -322,7 +322,7 @@ enum idmap_error_code sss_idmap_bin_sid_to_sid(struct sss_idmap_ctx *ctx,
+  *  - #IDMAP_OUT_OF_MEMORY: Failed to allocate memory for the result
+  */
+ enum idmap_error_code sss_idmap_dom_sid_to_bin_sid(struct sss_idmap_ctx *ctx,
+-                                                   struct dom_sid *dom_sid,
++                                                   struct sss_dom_sid *dom_sid,
+                                                    uint8_t **bin_sid,
+                                                    size_t *length);
+ 
+@@ -357,7 +357,7 @@ enum idmap_error_code sss_idmap_sid_to_bin_sid(struct sss_idmap_ctx *ctx,
+  *  - #IDMAP_OUT_OF_MEMORY: Failed to allocate memory for the result
+  */
+ enum idmap_error_code sss_idmap_dom_sid_to_sid(struct sss_idmap_ctx *ctx,
+-                                               struct dom_sid *dom_sid,
++                                               struct sss_dom_sid *dom_sid,
+                                                char **sid);
+ 
+ /**
+@@ -374,7 +374,7 @@ enum idmap_error_code sss_idmap_dom_sid_to_sid(struct sss_idmap_ctx *ctx,
+  */
+ enum idmap_error_code sss_idmap_sid_to_dom_sid(struct sss_idmap_ctx *ctx,
+                                                const char *sid,
+-                                               struct dom_sid **dom_sid);
++                                               struct sss_dom_sid **dom_sid);
+ /**
+  * @}
+  */
+diff --git a/src/lib/idmap/sss_idmap_conv.c b/src/lib/idmap/sss_idmap_conv.c
+index e2064f6dabf0c599ff415b9e5655c1d2d3f60dc5..df96fcc327679bedbe19fc2c8d7cc54f692a8161 100644
+--- a/src/lib/idmap/sss_idmap_conv.c
++++ b/src/lib/idmap/sss_idmap_conv.c
+@@ -33,7 +33,7 @@
+ 
+ #define SID_ID_AUTHS 6
+ #define SID_SUB_AUTHS 15
+-struct dom_sid {
++struct sss_dom_sid {
+         uint8_t sid_rev_num;
+         int8_t num_auths;                  /* [range(0,15)] */
+         uint8_t id_auth[SID_ID_AUTHS];     /* highest order byte has index 0 */
+@@ -43,19 +43,19 @@ struct dom_sid {
+ enum idmap_error_code sss_idmap_bin_sid_to_dom_sid(struct sss_idmap_ctx *ctx,
+                                                    const uint8_t *bin_sid,
+                                                    size_t length,
+-                                                   struct dom_sid **_dom_sid)
++                                                   struct sss_dom_sid **_dom_sid)
+ {
+     enum idmap_error_code err;
+-    struct dom_sid *dom_sid;
++    struct sss_dom_sid *dom_sid;
+     size_t i = 0;
+     size_t p = 0;
+     uint32_t val;
+ 
+     CHECK_IDMAP_CTX(ctx, IDMAP_CONTEXT_INVALID);
+ 
+-    if (length > sizeof(struct dom_sid)) return IDMAP_SID_INVALID;
++    if (length > sizeof(struct sss_dom_sid)) return IDMAP_SID_INVALID;
+ 
+-    dom_sid = ctx->alloc_func(sizeof(struct dom_sid), ctx->alloc_pvt);
++    dom_sid = ctx->alloc_func(sizeof(struct sss_dom_sid), ctx->alloc_pvt);
+     if (dom_sid == NULL) {
+         return IDMAP_OUT_OF_MEMORY;
+     }
+@@ -101,7 +101,7 @@ done:
+ }
+ 
+ enum idmap_error_code sss_idmap_dom_sid_to_bin_sid(struct sss_idmap_ctx *ctx,
+-                                                   struct dom_sid *dom_sid,
++                                                   struct sss_dom_sid *dom_sid,
+                                                    uint8_t **_bin_sid,
+                                                    size_t *_length)
+ {
+@@ -157,7 +157,7 @@ done:
+ }
+ 
+ enum idmap_error_code sss_idmap_dom_sid_to_sid(struct sss_idmap_ctx *ctx,
+-                                               struct dom_sid *dom_sid,
++                                               struct sss_dom_sid *dom_sid,
+                                                char **_sid)
+ {
+     enum idmap_error_code err;
+@@ -222,13 +222,13 @@ done:
+ 
+ enum idmap_error_code sss_idmap_sid_to_dom_sid(struct sss_idmap_ctx *ctx,
+                                                const char *sid,
+-                                               struct dom_sid **_dom_sid)
++                                               struct sss_dom_sid **_dom_sid)
+ {
+     enum idmap_error_code err;
+     unsigned long ul;
+     char *r;
+     char *end;
+-    struct dom_sid *dom_sid;
++    struct sss_dom_sid *dom_sid;
+ 
+     CHECK_IDMAP_CTX(ctx, IDMAP_CONTEXT_INVALID);
+ 
+@@ -236,11 +236,11 @@ enum idmap_error_code sss_idmap_sid_to_dom_sid(struct sss_idmap_ctx *ctx,
+             return IDMAP_SID_INVALID;
+     }
+ 
+-    dom_sid = ctx->alloc_func(sizeof(struct dom_sid), ctx->alloc_pvt);
++    dom_sid = ctx->alloc_func(sizeof(struct sss_dom_sid), ctx->alloc_pvt);
+     if (dom_sid == NULL) {
+         return IDMAP_OUT_OF_MEMORY;
+     }
+-    memset(dom_sid, 0, sizeof(struct dom_sid));
++    memset(dom_sid, 0, sizeof(struct sss_dom_sid));
+ 
+ 
+     if (!isdigit(sid[2])) {
+@@ -330,7 +330,7 @@ enum idmap_error_code sss_idmap_sid_to_bin_sid(struct sss_idmap_ctx *ctx,
+                                                size_t *_length)
+ {
+     enum idmap_error_code err;
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+     size_t length;
+     uint8_t *bin_sid = NULL;
+ 
+@@ -363,7 +363,7 @@ enum idmap_error_code sss_idmap_bin_sid_to_sid(struct sss_idmap_ctx *ctx,
+                                                char **_sid)
+ {
+     enum idmap_error_code err;
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+     char *sid = NULL;
+ 
+     err = sss_idmap_bin_sid_to_dom_sid(ctx, bin_sid, length, &dom_sid);
+diff --git a/src/tests/sss_idmap-tests.c b/src/tests/sss_idmap-tests.c
+index d81922f1195413674a7a2b5f8429cfe0c2c037c5..b821dfc98b806f71e4d2a11b1fb609711d3e91b7 100644
+--- a/src/tests/sss_idmap-tests.c
++++ b/src/tests/sss_idmap-tests.c
+@@ -182,7 +182,7 @@ START_TEST(idmap_test_dom_sid2uid)
+ {
+     enum idmap_error_code err;
+     uint32_t id;
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+ 
+     err = sss_idmap_sid_to_dom_sid(idmap_ctx, "S-1-5-21-1-2-3-1000", &dom_sid);
+     fail_unless(err == IDMAP_SUCCESS, "Failed to convert SID to SID structure");
+@@ -219,7 +219,7 @@ END_TEST
+ START_TEST(idmap_test_uid2dom_sid)
+ {
+     enum idmap_error_code err;
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+     char *sid = NULL;
+ 
+     err = sss_idmap_unix_to_dom_sid(idmap_ctx, 10000, &dom_sid);
+@@ -269,7 +269,7 @@ END_TEST
+ 
+ START_TEST(idmap_test_sid_bin2dom_sid)
+ {
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+     enum idmap_error_code err;
+     uint8_t *new_bin_sid = NULL;
+     size_t new_bin_sid_length;
+@@ -278,12 +278,12 @@ START_TEST(idmap_test_sid_bin2dom_sid)
+                                        test_bin_sid_length, &dom_sid);
+ 
+     fail_unless(err == IDMAP_SUCCESS,
+-                "Failed to convert binary SID to struct dom_sid.");
++                "Failed to convert binary SID to struct sss_dom_sid.");
+ 
+     err = sss_idmap_dom_sid_to_bin_sid(idmap_ctx, dom_sid, &new_bin_sid,
+                                        &new_bin_sid_length);
+     fail_unless(err == IDMAP_SUCCESS,
+-                "Failed to convert struct dom_sid to binary SID.");
++                "Failed to convert struct sss_dom_sid to binary SID.");
+ 
+     fail_unless(new_bin_sid_length == test_bin_sid_length,
+                 "Length of binary SIDs do not match.");
+@@ -297,18 +297,18 @@ END_TEST
+ 
+ START_TEST(idmap_test_sid2dom_sid)
+ {
+-    struct dom_sid *dom_sid = NULL;
++    struct sss_dom_sid *dom_sid = NULL;
+     enum idmap_error_code err;
+     char *new_sid = NULL;
+ 
+     err = sss_idmap_sid_to_dom_sid(idmap_ctx, "S-1-5-21-1-2-3-1000", &dom_sid);
+ 
+     fail_unless(err == IDMAP_SUCCESS,
+-                "Failed to convert SID string to struct dom_sid.");
++                "Failed to convert SID string to struct sss_dom_sid.");
+ 
+     err = sss_idmap_dom_sid_to_sid(idmap_ctx, dom_sid, &new_sid);
+     fail_unless(err == IDMAP_SUCCESS,
+-                "Failed to convert struct dom_sid to SID string.");
++                "Failed to convert struct sss_dom_sid to SID string.");
+ 
+     fail_unless(new_sid != NULL, "SID string not set");
+     fail_unless(strlen("S-1-5-21-1-2-3-1000") == strlen(new_sid),
+-- 
+1.7.10.1
+
diff --git a/0006-Fix-libsss_hbac-library-version.patch b/0006-Fix-libsss_hbac-library-version.patch
new file mode 100644
index 0000000..651a60f
--- /dev/null
+++ b/0006-Fix-libsss_hbac-library-version.patch
@@ -0,0 +1,25 @@
+From a231d0b597a79b1a9a2617f543b1fef084532c9e Mon Sep 17 00:00:00 2001
+From: Sumit Bose <sbose at redhat.com>
+Date: Mon, 14 May 2012 15:04:38 +0200
+Subject: [PATCH 06/19] Fix libsss_hbac library version
+
+---
+ Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2e13a9777a074e628b48bbd23626d019c2e5c617..e238b3538494a254c474518a1c4ea3fae7f975c8 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -492,7 +492,7 @@ libipa_hbac_la_SOURCES = \
+     src/providers/ipa/hbac_evaluator.c \
+     src/util/sss_utf8.c
+ libipa_hbac_la_LDFLAGS = \
+-    -version 1:0:1 \
++    -version-info 0:1:0 \
+     $(UNICODE_LIBS)
+ 
+ dist_pkgconfig_DATA += src/lib/idmap/sss_idmap.pc
+-- 
+1.7.10.1
+
diff --git a/0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch b/0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch
new file mode 100644
index 0000000..efcde7a
--- /dev/null
+++ b/0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch
@@ -0,0 +1,26 @@
+From 33c35e25ba25100dcd77562055eea2a0cb1197a9 Mon Sep 17 00:00:00 2001
+From: Jakub Hrozek <jhrozek at redhat.com>
+Date: Mon, 14 May 2012 15:53:18 +0200
+Subject: [PATCH 07/19] NSS: keep a pointer to body after body is reallocated
+
+---
+ src/responder/nss/nsssrv_cmd.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
+index f36a9a322ab92144c93b8cb9041d7a28515cc85d..43e82ae3ad1d98d440c076513ffb78ed46feb949 100644
+--- a/src/responder/nss/nsssrv_cmd.c
++++ b/src/responder/nss/nsssrv_cmd.c
+@@ -1919,6 +1919,9 @@ static int fill_grent(struct sss_packet *packet,
+         num++;
+ 
+         if (gr_mmap_cache) {
++            /* body was reallocated, so fullname might be pointing to
++             * where body used to be, not where it is */
++            to_sized_string(&fullname, (const char *)&body[rzero+STRS_ROFFSET]);
+             ret = sss_mmap_cache_gr_store(nctx->grp_mc_ctx,
+                                           &fullname, &pwfield, gid, memnum,
+                                           (char *)&body[rzero] + STRS_ROFFSET +
+-- 
+1.7.10.1
+
diff --git a/0008-Use-sized_string-correctly-in-FQDN-domains.patch b/0008-Use-sized_string-correctly-in-FQDN-domains.patch
new file mode 100644
index 0000000..a8b24db
--- /dev/null
+++ b/0008-Use-sized_string-correctly-in-FQDN-domains.patch
@@ -0,0 +1,34 @@
+From f12d3379b89bb16ec8e85f496f9dbd9fba95d874 Mon Sep 17 00:00:00 2001
+From: Jakub Hrozek <jhrozek at redhat.com>
+Date: Mon, 14 May 2012 15:58:37 +0200
+Subject: [PATCH 08/19] Use sized_string correctly in FQDN domains
+
+---
+ src/responder/nss/nsssrv_cmd.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
+index 43e82ae3ad1d98d440c076513ffb78ed46feb949..aa3ef3cbc0b98d3fe44e14dce212ecf1279f14f3 100644
+--- a/src/responder/nss/nsssrv_cmd.c
++++ b/src/responder/nss/nsssrv_cmd.c
+@@ -1863,7 +1863,7 @@ static int fill_grent(struct sss_packet *packet,
+                 if (add_domain) {
+                     ret = snprintf((char *)&body[rzero + rsize],
+                                     name.len + delim + dom_len,
+-                                    namefmt, name, domain);
++                                    namefmt, name.str, domain);
+                     if (ret >= (name.len + delim + dom_len)) {
+                         /* need more space,
+                          * got creative with the print format ? */
+@@ -1879,7 +1879,7 @@ static int fill_grent(struct sss_packet *packet,
+                         /* retry */
+                         ret = snprintf((char *)&body[rzero + rsize],
+                                         name.len + delim + dom_len,
+-                                        namefmt, name, domain);
++                                        namefmt, name.str, domain);
+                     }
+ 
+                     if (ret != name.len + delim + dom_len - 1) {
+-- 
+1.7.10.1
+
diff --git a/0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch b/0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch
new file mode 100644
index 0000000..9ce0146
--- /dev/null
+++ b/0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch
@@ -0,0 +1,63 @@
+From 6bfc4b41bfa7291eeb54a94c4eac85c7b9357565 Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh at redhat.com>
+Date: Tue, 15 May 2012 11:38:15 -0400
+Subject: [PATCH 09/19] RPM: Allow running 'make rpms' on RHEL 5 machines
+
+Our previous detection for this was flawed, because the %{rhel}
+macro did not exist on the version of RPM shipped with RHEL 5, but
+it worked when building for RHEL 5 through mock. This new patch
+relies on grepping /etc/redhat-release for the version
+information.
+
+https://fedorahosted.org/sssd/ticket/1206
+---
+ contrib/sssd.spec.in |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in
+index e5a4ed523ef71fe5efbe5e533f0ebb52f0d7f0f9..9972ebbd752d0abbcff35639819f03a97b19327c 100644
+--- a/contrib/sssd.spec.in
++++ b/contrib/sssd.spec.in
+@@ -3,8 +3,10 @@
+ %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
+ %endif
+ 
+-%if (0%{?rhel} == 5)
+-%{!?is_rhel57: %global is_rhel57 %(%{__grep} -c "5\.[^0-6]" /etc/redhat-release)}
++%global is_rhel5 %(%{__grep} -c "release 5" /etc/redhat-release)
++%global rhel5_minor %(%{__grep} -o "5.[0-9]*" /etc/redhat-release |%{__sed} -s 's/5.//')
++
++%if 0%{?is_rhel5} > 0
+ %global with_unicode_lib --with-unicode-lib=glib2
+ # we don't want to provide private python extension libs
+ %{?filter_setup:
+@@ -65,7 +67,7 @@ BuildRequires: automake
+ BuildRequires: libtool
+ BuildRequires: m4
+ %{?fedora:BuildRequires: popt-devel}
+-%if 0%{?rhel} <= 5
++%if 0%{?is_rhel5} > 0
+ BuildRequires: popt
+ %endif
+ %if 0%{?rhel} >= 6
+@@ -80,7 +82,7 @@ BuildRequires: libcollection-devel
+ BuildRequires: libini_config-devel
+ BuildRequires: dbus-devel
+ BuildRequires: dbus-libs
+-%if 0%{?is_rhel57} > 0
++%if 0%{?rhel5_minor} >= 7
+ BuildRequires: openldap24-libs-devel
+ %else
+ BuildRequires: openldap-devel
+@@ -106,7 +108,7 @@ BuildRequires: gettext-devel
+ BuildRequires: pkgconfig
+ BuildRequires: findutils
+ 
+-%if 0%{?rhel} == 5
++%if 0%{?is_rhel5} > 0
+ BuildRequires: glib2-devel
+ %else
+ BuildRequires: libunistring-devel
+-- 
+1.7.10.1
+
diff --git a/0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch b/0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch
new file mode 100644
index 0000000..c060e92
--- /dev/null
+++ b/0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch
@@ -0,0 +1,39 @@
+From 43818e4ba2a9c6fb11344da0b68138f0501f6bfc Mon Sep 17 00:00:00 2001
+From: Jakub Hrozek <jhrozek at redhat.com>
+Date: Wed, 16 May 2012 17:03:41 +0200
+Subject: [PATCH 10/19] Use the sysdb attribute name, not LDAP attribute name
+
+---
+ src/providers/ldap/sdap_async_autofs.c |    2 +-
+ src/providers/ldap/sdap_async_groups.c |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/providers/ldap/sdap_async_autofs.c b/src/providers/ldap/sdap_async_autofs.c
+index 3140596efb07e8433f6e044dc2e2c8bba8735886..d8a2d0eec75c3e42cd3dc39930d20a0a51e2c541 100644
+--- a/src/providers/ldap/sdap_async_autofs.c
++++ b/src/providers/ldap/sdap_async_autofs.c
+@@ -770,7 +770,7 @@ sdap_autofs_setautomntent_save(struct tevent_req *req)
+         ret = sysdb_attrs_to_list(
+                 tmp_ctx, state->entries,
+                 state->entries_count,
+-                state->opts->autofs_entry_map[SDAP_AT_AUTOFS_ENTRY_KEY].name,
++                state->opts->autofs_entry_map[SDAP_AT_AUTOFS_ENTRY_KEY].sys_name,
+                 &ldap_entrylist);
+         if (ret != EOK) {
+             DEBUG(SSSDBG_OP_FAILURE,
+diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c
+index 361525037eb270462251fe03d0c5e1df63de73f4..b48fe72eca1ab1dfe2dcb7a97a856ecef86d6f33 100644
+--- a/src/providers/ldap/sdap_async_groups.c
++++ b/src/providers/ldap/sdap_async_groups.c
+@@ -3044,7 +3044,7 @@ sdap_nested_group_process_deref_result(struct tevent_req *req)
+         } else if (dctx->deref_result[dctx->result_index]->map == \
+                    state->opts->group_map) {
+             ret = sysdb_attrs_get_string(dctx->deref_result[dctx->result_index]->attrs,
+-                                       state->opts->group_map[SDAP_AT_GROUP_NAME].name,
++                                       state->opts->group_map[SDAP_AT_GROUP_NAME].sys_name,
+                                        &tmp_name);
+             if (ret == ENOENT) {
+                 DEBUG(7, ("Dereferenced a group without name, skipping ...\n"));
+-- 
+1.7.10.1
+
diff --git a/0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch b/0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch
new file mode 100644
index 0000000..3d60493
--- /dev/null
+++ b/0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch
@@ -0,0 +1,46 @@
+From 977de33c57278fe0d90a3f937c58046298ab8742 Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh at redhat.com>
+Date: Wed, 16 May 2012 14:32:29 -0400
+Subject: [PATCH 11/19] NSS: Expire in-memory netgroup cache before the nowait
+ timeout
+
+The fact that we were keeping it in memory for the full duration
+of the cache timeout meant that we would never reap the benefits
+of the midpoint cache refresh.
+
+https://fedorahosted.org/sssd/ticket/1340
+---
+ src/responder/nss/nsssrv_netgroup.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c
+index 83e79a2fae7f957264d452bbc39550cacb792774..593b7e435b1e8e504975d20a2295ce65cb60e7a0 100644
+--- a/src/responder/nss/nsssrv_netgroup.c
++++ b/src/responder/nss/nsssrv_netgroup.c
+@@ -416,6 +416,7 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx)
+     struct getent_ctx *netgr;
+     struct sysdb_ctx *sysdb;
+     char *name = NULL;
++    uint32_t lifetime;
+ 
+     /* Check each domain for this netgroup name */
+     while (dom) {
+@@ -531,7 +532,14 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx)
+                   name, dom->name));
+         netgr->ready = true;
+         netgr->found = true;
+-        set_netgr_lifetime(dom->netgroup_timeout, step_ctx, netgr);
++        if (step_ctx->nctx->cache_refresh_percent) {
++            lifetime = dom->netgroup_timeout *
++                (step_ctx->nctx->cache_refresh_percent / 100);
++        } else {
++            lifetime = dom->netgroup_timeout;
++        }
++        if (lifetime < 10) lifetime = 10;
++        set_netgr_lifetime(lifetime, step_ctx, netgr);
+         return EOK;
+     }
+ 
+-- 
+1.7.10.1
+
diff --git a/0012-Always-use-positional-arguments-in-translatable-stri.patch b/0012-Always-use-positional-arguments-in-translatable-stri.patch
new file mode 100644
index 0000000..118ae1f
--- /dev/null
+++ b/0012-Always-use-positional-arguments-in-translatable-stri.patch
@@ -0,0 +1,264 @@
+From 56f1f51468005df27198c51acc203e2fe00312f8 Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh at redhat.com>
+Date: Thu, 17 May 2012 13:54:29 -0400
+Subject: [PATCH 12/19] Always use positional arguments in translatable
+ strings
+
+https://fedorahosted.org/sssd/ticket/1336
+---
+ src/sss_client/pam_sss.c  |    4 ++--
+ src/tools/sss_cache.c     |   10 +++++-----
+ src/tools/sss_groupdel.c  |    2 +-
+ src/tools/sss_groupmod.c  |    4 ++--
+ src/tools/sss_groupshow.c |   10 +++++-----
+ src/tools/sss_useradd.c   |    6 +++---
+ src/tools/sss_userdel.c   |    8 ++++----
+ src/tools/sss_usermod.c   |    4 ++--
+ src/tools/tools_util.h    |    2 +-
+ 9 files changed, 25 insertions(+), 25 deletions(-)
+
+diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c
+index e25792fc012c587e2ffc804057a2b43ec6b90068..9dca7e3c7b2f773abf08d5127d63b0bfc52ed06e 100644
+--- a/src/sss_client/pam_sss.c
++++ b/src/sss_client/pam_sss.c
+@@ -637,7 +637,7 @@ static int user_info_grace_login(pam_handle_t *pamh,
+     memcpy(&grace, buf + sizeof(uint32_t), sizeof(uint32_t));
+     ret = snprintf(user_msg, sizeof(user_msg),
+                    _("Your password has expired. "
+-                     "You have %d grace login(s) remaining."),
++                     "You have %1$d grace login(s) remaining."),
+                    grace);
+     if (ret < 0 || ret >= sizeof(user_msg)) {
+         D(("snprintf failed."));
+@@ -682,7 +682,7 @@ static int user_info_expire_warn(pam_handle_t *pamh,
+     }
+ 
+     ret = snprintf(user_msg, sizeof(user_msg),
+-                   _("Your password will expire in %d %s."), expire, unit);
++                   _("Your password will expire in %1$d %2$s."), expire, unit);
+     if (ret < 0 || ret >= sizeof(user_msg)) {
+         D(("snprintf failed."));
+         return PAM_SYSTEM_ERR;
+diff --git a/src/tools/sss_cache.c b/src/tools/sss_cache.c
+index d0f2b28714140a068ed43d22e0b0bf75feb804e3..1b2b29fe774b58bc15bf51ec0560a681382bc66d 100644
+--- a/src/tools/sss_cache.c
++++ b/src/tools/sss_cache.c
+@@ -169,10 +169,10 @@ bool invalidate_entries(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb,
+               ("Searching for %s with filter %s failed\n",
+                type_rec.type_string, filter));
+         if (name) {
+-            ERROR("No such %s named %s, skipping\n",
++            ERROR("No such %1$s named %2$s, skipping\n",
+                     type_rec.type_string, name);
+         } else {
+-            ERROR("No objects of type %s in the cache, skipping\n",
++            ERROR("No objects of type %1$s in the cache, skipping\n",
+                     type_rec.type_string);
+         }
+         return false;
+@@ -184,14 +184,14 @@ bool invalidate_entries(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb,
+         if (c_name == NULL) {
+             DEBUG(SSSDBG_MINOR_FAILURE,
+                   ("Something bad happened, can't find attribute %s", SYSDB_NAME));
+-            ERROR("Couldn't invalidate %s", type_rec.type_string);
++            ERROR("Couldn't invalidate %1$s", type_rec.type_string);
+             iret = false;
+         } else {
+             ret = invalidate_entry(ctx, sysdb, c_name, entry_type);
+             if (ret != EOK) {
+                 DEBUG(SSSDBG_MINOR_FAILURE,
+                       ("Couldn't invalidate %s %s", type_rec.type_string, c_name));
+-                ERROR("Couldn't invalidate %s %s", type_rec.type_string, c_name);
++                ERROR("Couldn't invalidate %1$s %2$s", type_rec.type_string, c_name);
+                 iret = false;
+             }
+         }
+@@ -452,7 +452,7 @@ errno_t init_context(int argc, const char *argv[], struct cache_tool_ctx **tctx)
+     ret = init_domains(ctx, domain);
+     if (ret != EOK) {
+         if (domain) {
+-            ERROR("Could not open domain %s\n", domain);
++            ERROR("Could not open domain %1$s\n", domain);
+         } else {
+             ERROR("Could not open available domains\n");
+         }
+diff --git a/src/tools/sss_groupdel.c b/src/tools/sss_groupdel.c
+index 09f73504df9039a38879ba16e7d8628741176ec8..70030cab4f38b89cfbb61d896a04903eeac311f0 100644
+--- a/src/tools/sss_groupdel.c
++++ b/src/tools/sss_groupdel.c
+@@ -98,7 +98,7 @@ int main(int argc, const char **argv)
+ 
+     if ((tctx->octx->gid < tctx->local->id_min) ||
+         (tctx->local->id_max && tctx->octx->gid > tctx->local->id_max)) {
+-        ERROR("Group %s is outside the defined ID range for domain\n",
++        ERROR("Group %1$s is outside the defined ID range for domain\n",
+               tctx->octx->name);
+         ret = EXIT_FAILURE;
+         goto fini;
+diff --git a/src/tools/sss_groupmod.c b/src/tools/sss_groupmod.c
+index 47134aedf78354aa1107cf30e01fc1fcbe2abc4f..abab4f57f644215e130b787a176bf4b9a72d9e44 100644
+--- a/src/tools/sss_groupmod.c
++++ b/src/tools/sss_groupmod.c
+@@ -152,7 +152,7 @@ int main(int argc, const char **argv)
+         /* Check group names in the LOCAL domain */
+         ret = check_group_names(tctx, tctx->octx->addgroups, &badgroup);
+         if (ret != EOK) {
+-            ERROR("Cannot find group %s in local domain, "
++            ERROR("Cannot find group %1$s in local domain, "
+                   "only groups in local domain are allowed\n", badgroup);
+             ret = EXIT_FAILURE;
+             goto fini;
+@@ -179,7 +179,7 @@ int main(int argc, const char **argv)
+         /* Check group names in the LOCAL domain */
+         ret = check_group_names(tctx, tctx->octx->rmgroups, &badgroup);
+         if (ret != EOK) {
+-            ERROR("Cannot find group %s in local domain, "
++            ERROR("Cannot find group %1$s in local domain, "
+                   "only groups in local domain are allowed\n", badgroup);
+             ret = EXIT_FAILURE;
+             goto fini;
+diff --git a/src/tools/sss_groupshow.c b/src/tools/sss_groupshow.c
+index 764e32416b046dfc6ff2a47de37627e40b0109f0..0eecd3a9671c1aae5ced8e8fa35f4ab6a3310075 100644
+--- a/src/tools/sss_groupshow.c
++++ b/src/tools/sss_groupshow.c
+@@ -559,26 +559,26 @@ static void print_group_info(struct group_info *g, int level)
+     snprintf(fmt, 8, "%%%ds", level*PADDING_SPACES);
+     snprintf(padding, 512, fmt, "");
+ 
+-    printf(_("%s%sGroup: %s\n"), padding,
++    printf(_("%1$s%2$sGroup: %3$s\n"), padding,
+                                  g->mpg ? _("Magic Private ") : "",
+                                  g->name);
+-    printf(_("%sGID number: %d\n"), padding, g->gid);
++    printf(_("%1$sGID number: %2$d\n"), padding, g->gid);
+ 
+-    printf(_("%sMember users: "), padding);
++    printf(_("%1$sMember users: "), padding);
+     if (g->user_members) {
+         for (i=0; g->user_members[i]; ++i) {
+             printf("%s%s", i>0 ? "," : "",
+                            g->user_members[i]);
+         }
+     }
+-    printf(_("\n%sIs a member of: "), padding);
++    printf(_("\n%1$sIs a member of: "), padding);
+     if (g->memberofs) {
+         for (i=0; g->memberofs[i]; ++i) {
+             printf("%s%s", i>0 ? "," : "",
+                            g->memberofs[i]);
+         }
+     }
+-    printf(_("\n%sMember groups: "), padding);
++    printf(_("\n%1$sMember groups: "), padding);
+ }
+ 
+ static void print_recursive(struct group_info **group_members, int level)
+diff --git a/src/tools/sss_useradd.c b/src/tools/sss_useradd.c
+index 5ca2612a351bb060f172434ace3bce9c7e022a1d..4df7c098e554d4b8c924961305f35492bfba3807 100644
+--- a/src/tools/sss_useradd.c
++++ b/src/tools/sss_useradd.c
+@@ -150,7 +150,7 @@ int main(int argc, const char **argv)
+         /* Check group names in the LOCAL domain */
+         ret = check_group_names(tctx, tctx->octx->addgroups, &badgroup);
+         if (ret != EOK) {
+-            ERROR("Cannot find group %s in local domain\n", badgroup);
++            ERROR("Cannot find group %1$s in local domain\n", badgroup);
+             ret = EXIT_FAILURE;
+             goto fini;
+         }
+@@ -229,7 +229,7 @@ int main(int argc, const char **argv)
+             ERROR("User's home directory already exists, not copying "
+                   "data from skeldir\n");
+         } else if (ret != EOK) {
+-            ERROR("Cannot create user's home directory: %s\n", strerror(ret));
++            ERROR("Cannot create user's home directory: %1$s\n", strerror(ret));
+             ret = EXIT_FAILURE;
+             goto fini;
+         }
+@@ -240,7 +240,7 @@ int main(int argc, const char **argv)
+                                 tctx->octx->uid,
+                                 tctx->octx->gid);
+         if (ret != EOK) {
+-            ERROR("Cannot create user's mail spool: %s\n", strerror(ret));
++            ERROR("Cannot create user's mail spool: %1$s\n", strerror(ret));
+             DEBUG(1, ("Cannot create user's mail spool: [%d][%s].\n",
+                         ret, strerror(ret)));
+             ret = EXIT_FAILURE;
+diff --git a/src/tools/sss_userdel.c b/src/tools/sss_userdel.c
+index 6d5e8295877afee3106e2a9d978504697f870d46..0d1c63e4ce58544775ae28041c65443ac054ee0d 100644
+--- a/src/tools/sss_userdel.c
++++ b/src/tools/sss_userdel.c
+@@ -227,7 +227,7 @@ int main(int argc, const char **argv)
+ 
+     if ((tctx->octx->uid < tctx->local->id_min) ||
+         (tctx->local->id_max && tctx->octx->uid > tctx->local->id_max)) {
+-        ERROR("User %s is outside the defined ID range for domain\n",
++        ERROR("User %1$s is outside the defined ID range for domain\n",
+               tctx->octx->name);
+         ret = EXIT_FAILURE;
+         goto fini;
+@@ -264,7 +264,7 @@ int main(int argc, const char **argv)
+                 break;
+ 
+             case EOK:
+-                ERROR("WARNING: The user (uid %lu) was still logged in when "
++                ERROR("WARNING: The user (uid %1$lu) was still logged in when "
+                       "deleted.\n", (unsigned long) tctx->octx->uid);
+                 break;
+ 
+@@ -281,7 +281,7 @@ int main(int argc, const char **argv)
+ 
+     ret = run_userdel_cmd(tctx);
+     if (ret != EOK) {
+-        ERROR("The post-delete command failed: %s\n", strerror(ret));
++        ERROR("The post-delete command failed: %1$s\n", strerror(ret));
+         goto fini;
+     }
+ 
+@@ -295,7 +295,7 @@ int main(int argc, const char **argv)
+         if (ret == EPERM) {
+             ERROR("Not removing home dir - not owned by user\n");
+         } else if (ret != EOK) {
+-            ERROR("Cannot remove homedir: %s\n", strerror(ret));
++            ERROR("Cannot remove homedir: %1$s\n", strerror(ret));
+             ret = EXIT_FAILURE;
+             goto fini;
+         }
+diff --git a/src/tools/sss_usermod.c b/src/tools/sss_usermod.c
+index dfcde9e56c632b6ddee0ec5cf375258c713ac360..b761de225de5842624d8f888bb0d7053617eb37d 100644
+--- a/src/tools/sss_usermod.c
++++ b/src/tools/sss_usermod.c
+@@ -173,7 +173,7 @@ int main(int argc, const char **argv)
+         /* Check group names in the LOCAL domain */
+         ret = check_group_names(tctx, tctx->octx->addgroups, &badgroup);
+         if (ret != EOK) {
+-            ERROR("Cannot find group %s in local domain, "
++            ERROR("Cannot find group %1$s in local domain, "
+                   "only groups in local domain are allowed\n", badgroup);
+             ret = EXIT_FAILURE;
+             goto fini;
+@@ -200,7 +200,7 @@ int main(int argc, const char **argv)
+         /* Check group names in the LOCAL domain */
+         ret = check_group_names(tctx, tctx->octx->rmgroups, &badgroup);
+         if (ret != EOK) {
+-            ERROR("Cannot find group %s in local domain, "
++            ERROR("Cannot find group %1$s in local domain, "
+                   "only groups in local domain are allowed\n", badgroup);
+             ret = EXIT_FAILURE;
+             goto fini;
+diff --git a/src/tools/tools_util.h b/src/tools/tools_util.h
+index fccd9d96bdc293f85d4af2ebcb0756a1fcc940cc..fd26b89056cf16b974102b5163e7ee76608a2d2e 100644
+--- a/src/tools/tools_util.h
++++ b/src/tools/tools_util.h
+@@ -37,7 +37,7 @@
+     val = getuid(); \
+     if (val != 0) { \
+         DEBUG(1, ("Running under %d, must be root\n", val)); \
+-        ERROR("%s must be run as root\n", prg_name); \
++        ERROR("%1$s must be run as root\n", prg_name); \
+         val = EXIT_FAILURE; \
+         goto fini; \
+     } \
+-- 
+1.7.10.1
+
diff --git a/0013-Simple-implementation-of-Netscape-password-warning-e.patch b/0013-Simple-implementation-of-Netscape-password-warning-e.patch
new file mode 100644
index 0000000..b1b8b3a
--- /dev/null
+++ b/0013-Simple-implementation-of-Netscape-password-warning-e.patch
@@ -0,0 +1,204 @@
+From 0aac71d726bda4af3ba141bed7707512cda7fd9a Mon Sep 17 00:00:00 2001
+From: Joshua Roys <roysjosh at gmail.com>
+Date: Mon, 14 May 2012 10:23:34 -0400
+Subject: [PATCH 13/19] Simple implementation of Netscape password warning
+ expiration control
+
+---
+ src/providers/ldap/sdap_async_connection.c |   96 +++++++++++++++++++++-------
+ src/util/sss_ldap.h                        |    8 +++
+ 2 files changed, 82 insertions(+), 22 deletions(-)
+
+diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c
+index e933e296b7df20ff8d034c2a11745b5c68b25e65..efd9cd8cc7205e4cb838523b0311ffd50805d590 100644
+--- a/src/providers/ldap/sdap_async_connection.c
++++ b/src/providers/ldap/sdap_async_connection.c
+@@ -26,6 +26,7 @@
+ #include "util/util.h"
+ #include "util/sss_krb5.h"
+ #include "util/sss_ldap.h"
++#include "util/strtonum.h"
+ #include "providers/ldap/sdap_async_private.h"
+ #include "providers/ldap/ldap_common.h"
+ 
+@@ -541,7 +542,9 @@ static void simple_bind_done(struct sdap_op *op,
+     struct simple_bind_state *state = tevent_req_data(req,
+                                             struct simple_bind_state);
+     char *errmsg = NULL;
+-    int ret;
++    char *nval;
++    errno_t ret;
++    int lret;
+     LDAPControl **response_controls;
+     int c;
+     ber_int_t pp_grace;
+@@ -555,30 +558,33 @@ static void simple_bind_done(struct sdap_op *op,
+ 
+     state->reply = talloc_steal(state, reply);
+ 
+-    ret = ldap_parse_result(state->sh->ldap, state->reply->msg,
++    lret = ldap_parse_result(state->sh->ldap, state->reply->msg,
+                             &state->result, NULL, &errmsg, NULL,
+                             &response_controls, 0);
+-    if (ret != LDAP_SUCCESS) {
+-        DEBUG(2, ("ldap_parse_result failed (%d)\n", state->op->msgid));
++    if (lret != LDAP_SUCCESS) {
++        DEBUG(SSSDBG_MINOR_FAILURE,
++              ("ldap_parse_result failed (%d)\n", state->op->msgid));
+         ret = EIO;
+         goto done;
+     }
+ 
+     if (response_controls == NULL) {
+-        DEBUG(5, ("Server returned no controls.\n"));
++        DEBUG(SSSDBG_TRACE_LIBS, ("Server returned no controls.\n"));
+         state->ppolicy = NULL;
+     } else {
+         for (c = 0; response_controls[c] != NULL; c++) {
+-            DEBUG(9, ("Server returned control [%s].\n",
+-                      response_controls[c]->ldctl_oid));
++            DEBUG(SSSDBG_TRACE_INTERNAL,
++                  ("Server returned control [%s].\n",
++                   response_controls[c]->ldctl_oid));
+             if (strcmp(response_controls[c]->ldctl_oid,
+                        LDAP_CONTROL_PASSWORDPOLICYRESPONSE) == 0) {
+-                ret = ldap_parse_passwordpolicy_control(state->sh->ldap,
++                lret = ldap_parse_passwordpolicy_control(state->sh->ldap,
+                                                         response_controls[c],
+                                                         &pp_expire, &pp_grace,
+                                                         &pp_error);
+-                if (ret != LDAP_SUCCESS) {
+-                    DEBUG(1, ("ldap_parse_passwordpolicy_control failed.\n"));
++                if (lret != LDAP_SUCCESS) {
++                    DEBUG(SSSDBG_MINOR_FAILURE,
++                          ("ldap_parse_passwordpolicy_control failed.\n"));
+                     ret = EIO;
+                     goto done;
+                 }
+@@ -586,9 +592,10 @@ static void simple_bind_done(struct sdap_op *op,
+                 DEBUG(7, ("Password Policy Response: expire [%d] grace [%d] "
+                           "error [%s].\n", pp_expire, pp_grace,
+                           ldap_passwordpolicy_err2txt(pp_error)));
+-                state->ppolicy = talloc(state, struct sdap_ppolicy_data);
++                if (!state->ppolicy)
++                    state->ppolicy = talloc_zero(state,
++                                                 struct sdap_ppolicy_data);
+                 if (state->ppolicy == NULL) {
+-                    DEBUG(1, ("talloc failed.\n"));
+                     ret = ENOMEM;
+                     goto done;
+                 }
+@@ -596,36 +603,81 @@ static void simple_bind_done(struct sdap_op *op,
+                 state->ppolicy->expire = pp_expire;
+                 if (state->result == LDAP_SUCCESS) {
+                     if (pp_error == PP_changeAfterReset) {
+-                        DEBUG(4, ("Password was reset. "
+-                                  "User must set a new password.\n"));
++                        DEBUG(SSSDBG_TRACE_LIBS,
++                              ("Password was reset. "
++                               "User must set a new password.\n"));
+                         state->result = LDAP_X_SSSD_PASSWORD_EXPIRED;
+                     } else if (pp_grace > 0) {
+-                        DEBUG(4, ("Password expired. "
+-                                  "[%d] grace logins remaining.\n", pp_grace));
++                        DEBUG(SSSDBG_TRACE_LIBS,
++                              ("Password expired. "
++                               "[%d] grace logins remaining.\n",
++                               pp_grace));
+                     } else if (pp_expire > 0) {
+-                        DEBUG(4, ("Password will expire in [%d] seconds.\n",
+-                                  pp_expire));
++                        DEBUG(SSSDBG_TRACE_LIBS,
++                              ("Password will expire in [%d] seconds.\n",
++                               pp_expire));
+                     }
+                 } else if (state->result == LDAP_INVALID_CREDENTIALS &&
+                            pp_error == PP_passwordExpired) {
+-                    DEBUG(4,
++                    DEBUG(SSSDBG_TRACE_LIBS,
+                           ("Password expired user must set a new password.\n"));
+                     state->result = LDAP_X_SSSD_PASSWORD_EXPIRED;
+                 }
++            } else if (strcmp(response_controls[c]->ldctl_oid,
++                              LDAP_CONTROL_PWEXPIRED) == 0) {
++                DEBUG(SSSDBG_TRACE_LIBS,
++                      ("Password expired user must set a new password.\n"));
++                state->result = LDAP_X_SSSD_PASSWORD_EXPIRED;
++            } else if (strcmp(response_controls[c]->ldctl_oid,
++                              LDAP_CONTROL_PWEXPIRING) == 0) {
++                /* ignore controls with suspiciously long values */
++                if (response_controls[c]->ldctl_value.bv_len > 32) {
++                    continue;
++                }
++
++                if (!state->ppolicy) {
++                    state->ppolicy = talloc(state, struct sdap_ppolicy_data);
++                }
++
++                if (state->ppolicy == NULL) {
++                    ret = ENOMEM;
++                    goto done;
++                }
++                /* ensure that bv_val is a null-terminated string */
++                nval = talloc_strndup(NULL,
++                                      response_controls[c]->ldctl_value.bv_val,
++                                      response_controls[c]->ldctl_value.bv_len);
++                if (nval == NULL) {
++                    ret = ENOMEM;
++                    goto done;
++                }
++                state->ppolicy->expire = strtouint32(nval, NULL, 10);
++                ret = errno;
++                talloc_zfree(nval);
++                if (ret != EOK) {
++                    DEBUG(SSSDBG_MINOR_FAILURE,
++                          ("Could not convert control response to an integer. ",
++                           "[%s]\n", strerror(ret)));
++                    goto done;
++                }
++
++                DEBUG(SSSDBG_TRACE_LIBS,
++                      ("Password will expire in [%d] seconds.\n",
++                       state->ppolicy->expire));
+             }
+         }
+     }
+ 
+-    DEBUG(3, ("Bind result: %s(%d), %s\n",
++    DEBUG(SSSDBG_TRACE_FUNC, ("Bind result: %s(%d), %s\n",
+               sss_ldap_err2string(state->result), state->result,
+               errmsg ? errmsg : "no errmsg set"));
+ 
+-    ret = LDAP_SUCCESS;
++    ret = EOK;
+ done:
+     ldap_controls_free(response_controls);
+     ldap_memfree(errmsg);
+ 
+-    if (ret == LDAP_SUCCESS) {
++    if (ret == EOK) {
+         tevent_req_done(req);
+     } else {
+         tevent_req_error(req, ret);
+diff --git a/src/util/sss_ldap.h b/src/util/sss_ldap.h
+index 8a69b832965bf5ad23986a9b64cb5252cc3b1999..46829259aedcf4a4f2ba3f94fc059c343c0e9ba6 100644
+--- a/src/util/sss_ldap.h
++++ b/src/util/sss_ldap.h
+@@ -29,6 +29,14 @@
+ 
+ #define LDAP_X_SSSD_PASSWORD_EXPIRED 0x555D
+ 
++#ifndef LDAP_CONTROL_PWEXPIRED
++#define LDAP_CONTROL_PWEXPIRED "2.16.840.1.113730.3.4.4"
++#endif
++
++#ifndef LDAP_CONTROL_PWEXPIRING
++#define LDAP_CONTROL_PWEXPIRING "2.16.840.1.113730.3.4.5"
++#endif
++
+ #ifdef LDAP_OPT_DIAGNOSTIC_MESSAGE
+ #define SDAP_DIAGNOSTIC_MESSAGE LDAP_OPT_DIAGNOSTIC_MESSAGE
+ #else
+-- 
+1.7.10.1
+
diff --git a/0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch b/0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch
new file mode 100644
index 0000000..d3d9193
--- /dev/null
+++ b/0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch
@@ -0,0 +1,45 @@
+From 0549c49a94c24672657748303fff1d33128c1c74 Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh at redhat.com>
+Date: Mon, 21 May 2012 20:36:44 -0400
+Subject: [PATCH 14/19] KRB5: Avoid NULL-dereference with empty keytab
+
+https://fedorahosted.org/sssd/ticket/1330
+---
+ src/util/sss_krb5.c |   20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c
+index 988531995aba7fd7a2a1d801fabde19fa537e26b..81a1623ef9df340d7618bdf55c1707ce4cfb1a6a 100644
+--- a/src/util/sss_krb5.c
++++ b/src/util/sss_krb5.c
+@@ -1104,14 +1104,20 @@ sss_krb5_read_etypes_for_keytab(TALLOC_CTX *mem_ctx,
+     }
+ 
+     if (ret == 0) {
+-        /* Sort the preferred enctypes first */
+-        qsort(etypes, count, sizeof(*etypes), compare_etypes);
+-        etypes = talloc_realloc(tmp_ctx, etypes, krb5_enctype, count);
+-        if (etypes == NULL) {
+-            ret = ENOMEM;
++        if (etypes) {
++            /* Sort the preferred enctypes first */
++            qsort(etypes, count, sizeof(*etypes), compare_etypes);
++            etypes = talloc_realloc(tmp_ctx, etypes, krb5_enctype, count);
++            if (etypes == NULL) {
++                ret = ENOMEM;
++            } else {
++                *etype_list = talloc_steal(mem_ctx, etypes);
++                *n_etype_list = count;
++            }
+         } else {
+-            *etype_list = talloc_steal(mem_ctx, etypes);
+-            *n_etype_list = count;
++            /* The key table was empty. There are no enctypes to match */
++            *etype_list = NULL;
++            *n_etype_list = 0;
+         }
+     }
+ 
+-- 
+1.7.10.1
+
diff --git a/0015-Warn-to-syslog-when-dereference-requests-fail.patch b/0015-Warn-to-syslog-when-dereference-requests-fail.patch
new file mode 100644
index 0000000..e5b0a40
--- /dev/null
+++ b/0015-Warn-to-syslog-when-dereference-requests-fail.patch
@@ -0,0 +1,27 @@
+From e52a31484c88d46e381238493384f26d9c95f8ff Mon Sep 17 00:00:00 2001
+From: Ariel Barria <arielb at fedoraproject.org>
+Date: Tue, 22 May 2012 07:13:21 -0500
+Subject: [PATCH 15/19] Warn to syslog when dereference requests fail
+
+---
+ src/providers/ldap/sdap_async.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c
+index a8a12c3d390a4ebee0dca81d6610be9fe240a4a6..14a27bcba2385fef5980a5a933cb7e7a9742a231 100644
+--- a/src/providers/ldap/sdap_async.c
++++ b/src/providers/ldap/sdap_async.c
+@@ -2051,8 +2051,8 @@ static void sdap_deref_search_done(struct tevent_req *subreq)
+ 
+     talloc_zfree(subreq);
+     if (ret != EOK) {
+-        DEBUG(2, ("dereference processing failed [%d]: %s\n",
+-                  ret, strerror(ret)));
++        DEBUG(2, ("dereference processing failed [%d]: %s\n", ret, strerror(ret)));
++        sss_log(SSS_LOG_WARNING, "dereference processing failed : %s", strerror(ret));
+         tevent_req_error(req, ret);
+         return;
+     }
+-- 
+1.7.10.1
+
diff --git a/0016-Update-translation-sources.patch b/0016-Update-translation-sources.patch
new file mode 100644
index 0000000..574fdb1
--- /dev/null
+++ b/0016-Update-translation-sources.patch
@@ -0,0 +1,4201 @@
+From fcd4d3ed036573128d83e447ef4dac3b370f232c Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh at redhat.com>
+Date: Tue, 22 May 2012 09:34:31 -0400
+Subject: [PATCH 16/19] Update translation sources
+
+---
+ po/de.po                 |   48 +++++++++++++-------------
+ po/es.po                 |   82 +++++++++++++++++++++----------------------
+ po/fr.po                 |   86 +++++++++++++++++++++++-----------------------
+ po/hu.po                 |   64 +++++++++++++++++-----------------
+ po/id.po                 |   64 +++++++++++++++++-----------------
+ po/it.po                 |   78 ++++++++++++++++++++---------------------
+ po/ja.po                 |   86 +++++++++++++++++++++++-----------------------
+ po/nb.po                 |   48 +++++++++++++-------------
+ po/nl.po                 |   82 +++++++++++++++++++++----------------------
+ po/pl.po                 |   86 +++++++++++++++++++++++-----------------------
+ po/pt.po                 |   82 +++++++++++++++++++++----------------------
+ po/ru.po                 |   80 +++++++++++++++++++++---------------------
+ po/sssd.pot              |   48 +++++++++++++-------------
+ po/sv.po                 |   64 +++++++++++++++++-----------------
+ po/tg.po                 |   48 +++++++++++++-------------
+ po/uk.po                 |   86 +++++++++++++++++++++++-----------------------
+ po/zh_TW.po              |   74 +++++++++++++++++++--------------------
+ src/man/po/cs.po         |    8 ++---
+ src/man/po/es.po         |    8 ++---
+ src/man/po/fr.po         |    8 ++---
+ src/man/po/ja.po         |    8 ++---
+ src/man/po/nl.po         |    8 ++---
+ src/man/po/pt.po         |    8 ++---
+ src/man/po/ru.po         |    8 ++---
+ src/man/po/sssd-docs.pot |   10 +++---
+ src/man/po/tg.po         |    8 ++---
+ src/man/po/uk.po         |    8 ++---
+ 27 files changed, 645 insertions(+), 643 deletions(-)
+
+diff --git a/po/de.po b/po/de.po
+index edcab536e6dba2a2d21a4fa9fbe69aa462792e76..06cf016f3d2b82a4dbe8d7957d41f0ed46e955c7 100644
+--- a/po/de.po
++++ b/po/de.po
+@@ -9,7 +9,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: German <trans-de at lists.fedoraproject.org>\n"
+@@ -174,7 +174,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -989,12 +989,12 @@ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+ #, c-format
+-msgid "Your password will expire in %d %s."
++msgid "Your password will expire in %1$d %2$s."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1184,7 +1184,7 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:153
+ #, c-format
+-msgid "Cannot find group %s in local domain\n"
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1209,12 +1209,12 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:232
+ #, c-format
+-msgid "Cannot create user's home directory: %s\n"
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:243
+ #, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1259,7 +1259,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:101
+ #, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1302,7 +1302,7 @@ msgstr ""
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+ #, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ 
+@@ -1320,7 +1320,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1329,26 +1329,26 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+ #, c-format
+-msgid "%sGID number: %d\n"
++msgid "%1$sGID number: %2$d\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1391,7 +1391,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:230
+ #, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1400,7 +1400,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1413,7 +1413,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1422,7 +1422,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:298
+ #, c-format
+-msgid "Cannot remove homedir: %s\n"
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1482,22 +1482,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1550,7 +1550,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1571,7 +1571,7 @@ msgstr ""
+ 
+ #: src/tools/tools_util.h:40
+ #, c-format
+-msgid "%s must be run as root\n"
++msgid "%1$s must be run as root\n"
+ msgstr ""
+ 
+ #: src/util/util.h:93
+diff --git a/po/es.po b/po/es.po
+index 1877773833a3f6a626a0d7625d4c1d6fb43f60c1..bd172763fb27ba40e132b1536538e3a6564bcf10 100644
+--- a/po/es.po
++++ b/po/es.po
+@@ -12,7 +12,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Spanish (Castilian) <trans-es at lists.fedoraproject.org>\n"
+@@ -199,7 +199,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -1041,13 +1041,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", su contraseña cacheada vencerá el:"
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "Su contraseña ha expirado. Dispone de %d ingreso(s) excepcionales. "
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "Su contraseña expirará en %d %s."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1237,8 +1237,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Los grupos deben estar en el mismo dominio que el usuario\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "No se pudo encontrar el grupo %s en el dominio local\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1264,13 +1264,13 @@ msgstr ""
+ "esqueleto\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "No se pudo crear el directorio personal del usuario: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "No se pudo crear el receptor de correo del usuario: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1314,8 +1314,8 @@ msgid "Specify group to delete\n"
+ msgstr "Especifique el grupo a borrar\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "El grupo %s está fuera del rango de ID definido para los dominios\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1361,9 +1361,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "No se pudo encontrar el grupo %s en el dominio local, solo se permiten los "
+@@ -1385,8 +1385,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Error de transacción. No se pudo modificar el grupo.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sGrupo: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1394,29 +1394,29 @@ msgid "Magic Private "
+ msgstr "Magia privada"
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sGID número: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sMember usuarios: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%sEs miembro de: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sGrupos de miembro: "
+@@ -1462,8 +1462,8 @@ msgid "Specify user to delete\n"
+ msgstr "Especifique el usuario a borrar\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "El usuario %s está fuera del rango de ID para el dominio\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1471,8 +1471,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "No es posible reiniciar contexto de registro de SELinux\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "ADVERTENCIA: El usuario (uid %lu) todavía se encontraba registrado mientras "
+ "se lo eliminaba.\n"
+@@ -1487,8 +1487,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "Error mientras se verificaba si el usuario se encontraba registrado\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "Falló el comando de post-eliminación: %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1496,8 +1496,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "No eliminando el directorio de inicio - no pertenece al usuario\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr " Imposible eliminar el directorio de inicio: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1564,22 +1564,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1632,7 +1632,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1652,8 +1652,8 @@ msgid "Out of memory\n"
+ msgstr "Falta memoria\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s se debe ejecutar como root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/fr.po b/po/fr.po
+index 5e712aaf9055f5dade46a88b5094454fa04ad6f1..2bc642d0b778db6770d127c0562784e6ef9bde15 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -10,7 +10,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-05-08 08:54+0000\n"
+ "Last-Translator: Jérôme Fenal <jfenal at gmail.com>\n"
+ "Language-Team: French <trans-fr at lists.fedoraproject.org>\n"
+@@ -201,7 +201,7 @@ msgstr ""
+ "avant de demander au fournisseur à nouveau"
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -1037,13 +1037,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", votre mot de passe en cache expirera à :"
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "Votre mot de passe a expiré. Il vous reste %d connexion autorisée."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "Votre mot de passe expirera dans %d %s."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1233,8 +1233,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Les groupes doivent être dans le même domaine que l'utilisateur\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Impossible de trouver le groupe %s dans le domaine local\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1260,13 +1260,13 @@ msgstr ""
+ "squelette ne sont pas copiées\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Impossible de créer le répertoire de l'utilisateur : %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr ""
+ "Impossible de créer le répertoire de gestion des mails pour l'utilisateur : "
+ "%s\n"
+@@ -1313,8 +1313,8 @@ msgid "Specify group to delete\n"
+ msgstr "Spécifier le groupe à supprimer\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "Le groupe %s est en dehors de la plage d'identifiants pour le domaine\n"
+ 
+@@ -1362,9 +1362,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Impossible de trouver le groupe %s dans le domaine local, seuls les groupes "
+@@ -1387,8 +1387,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Erreur de transaction. Impossible de modifier le groupe.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%s groupe : %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1396,29 +1396,29 @@ msgid "Magic Private "
+ msgstr "Magie privée"
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%s GID numéro : %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%s utilisateurs membres :"
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%s est membre de :"
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%s groupes membres :"
+@@ -1464,8 +1464,8 @@ msgid "Specify user to delete\n"
+ msgstr "Définir l'utilisateur à supprimer\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "L'utilisateur %s est en dehors de la plage d'identifiants pour le domaine\n"
+ 
+@@ -1474,8 +1474,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "Impossible de réinitialiser le contexte de connexion SELinux\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "ATTENTION : l'utilisateur (uid %lu) était encore connecté lors de la "
+ "suppression.\n"
+@@ -1490,8 +1490,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "Erreur en vérifiant si l'utilisateur était connecté\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "La commande de post-suppression a échoué : %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1501,8 +1501,8 @@ msgstr ""
+ "propriétaire\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Impossible de supprimer le répertoire utilisateur : %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1570,22 +1570,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+-#, c-format
+-msgid "Couldn't invalidate %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s"
+ msgstr "Impossible d'invalider %s"
+ 
+ #: src/tools/sss_cache.c:194
+-#, c-format
+-msgid "Couldn't invalidate %s %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr "Impossible d'invalider %s %s"
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1642,7 +1642,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1662,8 +1662,8 @@ msgid "Out of memory\n"
+ msgstr "Mémoire saturée\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s doit être exécuté en tant que root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/hu.po b/po/hu.po
+index ba60733934e27550fbb78d3b2d5b0a30a6f706b1..78e2a16d76530cd737468181673b70479f436735 100644
+--- a/po/hu.po
++++ b/po/hu.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Hungarian <trans-hu at lists.fedoraproject.org>\n"
+@@ -173,7 +173,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -987,13 +987,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", a gyorsítótárazott jelszó lejár ekkor: "
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "A jelszava lejárt. Még %d bejelentkezés engedélyezett."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "A jelszava le fog járni %d %s múlva."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1183,7 +1183,7 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:153
+ #, c-format
+-msgid "Cannot find group %s in local domain\n"
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1209,14 +1209,14 @@ msgstr ""
+ "bele\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Nem sikerült létrehozni a felhasználó könyvtárát: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
+-msgstr ""
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
++msgstr "Nem sikerült létrehozni a felhasználó könyvtárát: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+ msgid "Could not allocate ID for the user - domain full?\n"
+@@ -1260,7 +1260,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:101
+ #, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1303,7 +1303,7 @@ msgstr ""
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+ #, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ 
+@@ -1321,7 +1321,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1329,27 +1329,27 @@ msgid "Magic Private "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%s GID-je: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1392,7 +1392,7 @@ msgstr "Adja meg a törlendő felhasználót\n"
+ 
+ #: src/tools/sss_userdel.c:230
+ #, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1401,7 +1401,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1414,7 +1414,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1422,8 +1422,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Nem lehet eltávolítani a(z) %s könyvtárat\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1483,22 +1483,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1551,7 +1551,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1571,8 +1571,8 @@ msgid "Out of memory\n"
+ msgstr "Elfogyott a memória\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s csak rendszergazdaként futtatható\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/id.po b/po/id.po
+index d5e1e22061e67756927d684b6801ecaa312c7ba9..c88f63ae2cde5efe481c4a9e0820d100c242c555 100644
+--- a/po/id.po
++++ b/po/id.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Indonesian <trans-id at lists.fedoraproject.org>\n"
+@@ -172,7 +172,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -987,12 +987,12 @@ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+ #, c-format
+-msgid "Your password will expire in %d %s."
++msgid "Your password will expire in %1$d %2$s."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1181,8 +1181,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Grup harus berada dalam domain yang sama dengan pengguna\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Tidak dapat menemukan grup %s dalam domain lokal\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1207,13 +1207,13 @@ msgstr ""
+ "Direktori home milik pengguna sudah ada, tidak menyalin data dari skeldir\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Tidak dapat membuat direktori home milik pengguna: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Tidak dapat membuat spool mail milik pengguna: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1257,8 +1257,8 @@ msgid "Specify group to delete\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "Grup %s berada di luar rentang ID yang telah didefinisikan untuk domain\n"
+ 
+@@ -1306,9 +1306,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Tidak dapat menemukan grup %s di domain lokal, hanya grup dalam domain lokal "
+@@ -1329,7 +1329,7 @@ msgstr "Kesalahan transaksi. Tidak bisa memodifikasi grup.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1338,26 +1338,26 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+ #, c-format
+-msgid "%sGID number: %d\n"
++msgid "%1$sGID number: %2$d\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1399,8 +1399,8 @@ msgid "Specify user to delete\n"
+ msgstr "Tentukan pengguna yang akan dihapus\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "Pengguna %s berada di luar rentang ID yang telah didefinisikan untuk domain\n"
+ 
+@@ -1410,7 +1410,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1423,7 +1423,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1431,8 +1431,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "Tidak menghapus home dir - tidak dimiliki oleh pengguna\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Tidak dapat menghapus homedir: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1498,22 +1498,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1566,7 +1566,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1586,8 +1586,8 @@ msgid "Out of memory\n"
+ msgstr "Kehabisan memori\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s harus dijalankan sebagai root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/it.po b/po/it.po
+index 9864a2123f9dcf4dd6bb264c2bbd24ab5fa8ef1c..341e1c02ffdf9d10d3a11fdd495bfb1a215ecc7b 100644
+--- a/po/it.po
++++ b/po/it.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Italian <trans-it at lists.fedoraproject.org>\n"
+@@ -176,7 +176,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -997,13 +997,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", la password in cache scadrà il: "
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "La password è scaduta. Hai ancora a disposizione %d login di cortesia."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "La password scadrà tra %d %s"
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1192,8 +1192,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "I gruppi devono essere nello stesso dominio dell'utente\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Impossibile trovare il gruppo %s nel dominio locale\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1219,13 +1219,13 @@ msgstr ""
+ "directory skeleton\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Impossibile creare la directory home dell'utente: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Impossibile creare lo spool di mail dell'utente: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1269,8 +1269,8 @@ msgid "Specify group to delete\n"
+ msgstr "Specificare il gruppo da eliminare\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "Il gruppo %s è al di fuori del range di ID specificato per il dominio\n"
+ 
+@@ -1317,9 +1317,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Impossibile trovare il gruppo %s nel dominio locale, solo i gruppi nel "
+@@ -1342,8 +1342,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Errore della transazione. Impossibile modificare il gruppo.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sGruppo: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1351,29 +1351,29 @@ msgid "Magic Private "
+ msgstr "Magic Private "
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sNumero GID: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sUtenti membri: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%sE' membro di: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sGruppi membro: "
+@@ -1419,8 +1419,8 @@ msgid "Specify user to delete\n"
+ msgstr "Specificare l'utente da cancellare\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "L'utente %s è all'interno del range di ID definito per il dominio\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1429,7 +1429,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1442,7 +1442,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1450,8 +1450,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "Home directory non eliminata - non appartiene all'utente\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Impossibile rimuovere la home directory: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1517,22 +1517,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1585,7 +1585,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1605,8 +1605,8 @@ msgid "Out of memory\n"
+ msgstr "Memoria esaurita\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s deve essere eseguito come root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/ja.po b/po/ja.po
+index 65c795c7c45caaa4edd9b50281900546e13135d3..da73a9c5afd03543fa7ed88b8dad3d132f46339c 100644
+--- a/po/ja.po
++++ b/po/ja.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-23 00:36+0000\n"
+ "Last-Translator: Tomoyuki KATO <tomo at dream.daynight.jp>\n"
+ "Language-Team: Japanese <trans-ja at lists.fedoraproject.org>\n"
+@@ -178,7 +178,7 @@ msgid ""
+ msgstr "再びプロバイダーに問い合わせる前に sudo ルールをキャッシュする秒数"
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -994,14 +994,14 @@ msgid ", your cached password will expire at: "
+ msgstr "、キャッシュされたパスワードが失効します: "
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ "パスワードの期限が切れました。%d 回の穏やかなログインが残されています。"
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "あなたのパスワードは %d %s に期限が切れます。"
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1191,8 +1191,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "グループがユーザーと同じドメインになければいけません\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "グループ %s をローカルドメインに見つけられませんでした\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1218,13 +1218,13 @@ msgstr ""
+ "らデータをコピーしません\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "ユーザーのホームディレクトリーを作成できません: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "ユーザーのメールスプールを作成できません: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1268,8 +1268,8 @@ msgid "Specify group to delete\n"
+ msgstr "削除するグループを指定してください\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "グループ %s はドメインに対して定義された ID の範囲を越えています\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1314,9 +1314,9 @@ msgstr "メンバーグループが親グループと同じドメインにある
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "ローカルドメインにグループ %s が見つかりませんでした。ローカルドメインにある"
+@@ -1338,8 +1338,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "トランザクションエラー。グループを変更できませんでした。\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%s グループ: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1347,29 +1347,29 @@ msgid "Magic Private "
+ msgstr "マジックプライベート "
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%s GID 番号: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%s メンバーユーザー: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%s は次のメンバーです: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%s メンバーグループ: "
+@@ -1415,8 +1415,8 @@ msgid "Specify user to delete\n"
+ msgstr "削除するユーザーを指定する\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "ユーザー %s はドメインに対して定義された ID の範囲を越えています\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1424,8 +1424,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "SELinux ログインコンテキストをリセットできません\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "警告: ユーザー (uid %lu) が削除されたときにまだログインしていました。\n"
+ 
+@@ -1439,8 +1439,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "ユーザーがログインしていたかを確認中にエラーが発生しました\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "post-delete コマンドに失敗しました: %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1449,8 +1449,8 @@ msgstr ""
+ "ホームディレクトリーを削除していません - ユーザーにより所有されていません\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "ホームディレクトリーを削除できません: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1516,22 +1516,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+-#, c-format
+-msgid "Couldn't invalidate %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s"
+ msgstr "%s を無効化できませんでした"
+ 
+ #: src/tools/sss_cache.c:194
+-#, c-format
+-msgid "Couldn't invalidate %s %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr "%s %s を無効化できませんでした"
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1588,7 +1588,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1608,8 +1608,8 @@ msgid "Out of memory\n"
+ msgstr "メモリー不足\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s は root として実行する必要があります\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/nb.po b/po/nb.po
+index dfc90ff226e4778aea3378e9a3219c91d6e3bb13..b808d0a7ca5629b319660e70ada18b3c1087a7e9 100644
+--- a/po/nb.po
++++ b/po/nb.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-25 18:21+0000\n"
+ "Last-Translator: Kjartan Maraas <kmaraas at gnome.org>\n"
+ "Language-Team: Norwegian Bokmål <i18n-nb at lister.ping.uio.no>\n"
+@@ -173,7 +173,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -987,12 +987,12 @@ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+ #, c-format
+-msgid "Your password will expire in %d %s."
++msgid "Your password will expire in %1$d %2$s."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1182,7 +1182,7 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:153
+ #, c-format
+-msgid "Cannot find group %s in local domain\n"
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1207,12 +1207,12 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:232
+ #, c-format
+-msgid "Cannot create user's home directory: %s\n"
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:243
+ #, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1257,7 +1257,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:101
+ #, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1300,7 +1300,7 @@ msgstr ""
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+ #, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ 
+@@ -1318,7 +1318,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1327,26 +1327,26 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+ #, c-format
+-msgid "%sGID number: %d\n"
++msgid "%1$sGID number: %2$d\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1389,7 +1389,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:230
+ #, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1398,7 +1398,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1411,7 +1411,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1420,7 +1420,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:298
+ #, c-format
+-msgid "Cannot remove homedir: %s\n"
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1480,22 +1480,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1548,7 +1548,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1569,7 +1569,7 @@ msgstr ""
+ 
+ #: src/tools/tools_util.h:40
+ #, c-format
+-msgid "%s must be run as root\n"
++msgid "%1$s must be run as root\n"
+ msgstr ""
+ 
+ #: src/util/util.h:93
+diff --git a/po/nl.po b/po/nl.po
+index 4bde6a9181c16351c6e8d6e0d79989157470a944..26bc48370a9bb03664a898197c241a7073b914d7 100644
+--- a/po/nl.po
++++ b/po/nl.po
+@@ -11,7 +11,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Dutch (http://www.transifex.net/projects/p/fedora/language/"
+@@ -195,7 +195,7 @@ msgstr ""
+ "provider er opnieuw om wordt gevraagd"
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -1036,13 +1036,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", uw wachtwoord verloopt op:"
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "Uw wachtwoord is verlopen. U heeft %d genadigde login(s) over."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "Uw wachtwoord verloopt in %d %s."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1232,8 +1232,8 @@ msgstr ""
+ "De groepen moeten zich in het zelfde domein als de gebruiker bevinden\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Kan de groep %s niet vinden in het lokale domein\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1257,13 +1257,13 @@ msgid "User's home directory already exists, not copying data from skeldir\n"
+ msgstr "De gebruikersmap bestaat reeds, voorbeeldmap niet gekopieerd\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Kan de gebruikersmap niet aanmaken: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Kan het postbestand van de gebruiker niet aanmaken: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1307,8 +1307,8 @@ msgid "Specify group to delete\n"
+ msgstr "Geef groep op om te verwijderen\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "De groep %s valt buiten het toegestane bereik voor het domein\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1355,9 +1355,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Kan de groep %s niet vinden in het lokale domein, alleen groepen in het "
+@@ -1379,8 +1379,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Transactiefout. Kan de groep niet aanpassen.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sGroep:%s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1388,29 +1388,29 @@ msgid "Magic Private "
+ msgstr "Magic Private "
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sGID nummer: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sLeden: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%sIs lid van: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sLidgroepen: "
+@@ -1458,8 +1458,8 @@ msgid "Specify user to delete\n"
+ msgstr "Specificeer de te verwijderen gebruiker\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "Gebruiker %s valt buiten het toegestane ID-bereik voor het domein\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1467,8 +1467,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "Kan de SELinux logincontext niet herstellen\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "WAARSCHUWING: De gebruiker (uid %lu) was nogsteeds ingelogd tijdens het "
+ "verwijderen.\n"
+@@ -1482,8 +1482,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "Fout bij het controleren of de gebruiker was ingelogd\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "Het post-verwijder commando faalde: %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1492,8 +1492,8 @@ msgstr ""
+ "De gebruikersmap wordt niet verwijderd - de gebruiker is geen eigenaar\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Kan de gebruikersmap niet verwijderen: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1559,22 +1559,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1627,7 +1627,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1647,8 +1647,8 @@ msgid "Out of memory\n"
+ msgstr "Het geheugen zit vol\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s moet als root gestart worden\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/pl.po b/po/pl.po
+index f5ad70cae0811e0678ba1bb8b498507fe4954341..7c92af701b7e63f3154fc5ae11c9b06b619d2134 100644
+--- a/po/pl.po
++++ b/po/pl.po
+@@ -9,7 +9,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: Piotr Drąg <piotrdrag at gmail.com>\n"
+ "Language-Team: Polish (http://www.transifex.net/projects/p/fedora/language/"
+@@ -190,7 +190,7 @@ msgstr ""
+ "zapytaniem dostawcy"
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -1024,13 +1024,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", hasło w pamięci podręcznej wygaśnie za: "
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "Hasło wygasło. Pozostało %d możliwych logowań."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "Hasło wygaśnie za %d %s."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1219,8 +1219,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Grupy muszą być w tej samej domenie co użytkownik\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Nie można odnaleźć grupy %s w lokalnej domenie\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1246,13 +1246,13 @@ msgstr ""
+ "zostaną skopiowane\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Nie można utworzyć katalogu domowego użytkownika: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Nie można utworzyć buforu poczty użytkownika: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1298,8 +1298,8 @@ msgid "Specify group to delete\n"
+ msgstr "Proszę podać grupę do usunięcia\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "Grupa %s jest poza określonym zakresem identyfikatorów dla domeny\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1344,9 +1344,9 @@ msgstr "Członkowie grupy muszą być w tej samej domenie co grupa nadrzędna\n"
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Nie można odnaleźć grupy %s w lokalnej domenie, tylko grupy w lokalnej "
+@@ -1369,8 +1369,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Błąd transakcji. Nie można zmodyfikować grupy.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sGrupa: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1378,29 +1378,29 @@ msgid "Magic Private "
+ msgstr "Prywatne magic "
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sNumer GID: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sUżytkownicy będący członkami: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%sJest członkiem: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sGrupy będące członkami: "
+@@ -1446,8 +1446,8 @@ msgid "Specify user to delete\n"
+ msgstr "Proszę podać użytkownika do usunięcia\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "Użytkownik %s jest poza określonym zakresem identyfikatorów dla domeny\n"
+ 
+@@ -1456,8 +1456,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "Nie można przywrócić kontekstu loginu SELinuksa\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "OSTRZEŻENIE: użytkownik (UID %lu) był zalogowany podczas jego usunięcia.\n"
+ 
+@@ -1470,8 +1470,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "Błąd podczas sprawdzania, czy użytkownik był zalogowany\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "Polecenie po usunięciu nie powiodło się: %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1480,8 +1480,8 @@ msgstr ""
+ "Katalog domowy nie zostanie usunięty - użytkownik nie jest właścicielem\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Nie można usunąć katalogu domowego: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1549,22 +1549,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+-#, c-format
+-msgid "Couldn't invalidate %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s"
+ msgstr "Nie można unieważnić %s"
+ 
+ #: src/tools/sss_cache.c:194
+-#, c-format
+-msgid "Couldn't invalidate %s %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr "Nie można unieważnić %s %s"
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1621,7 +1621,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1641,8 +1641,8 @@ msgid "Out of memory\n"
+ msgstr "Brak pamięci\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s musi zostać uruchomione jako root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/pt.po b/po/pt.po
+index db2d704f719ecfcda772816849e35515f5d124f6..6edc7dc103564e8510cde7e24ea38ed998f657a6 100644
+--- a/po/pt.po
++++ b/po/pt.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Portuguese <trans-pt at lists.fedoraproject.org>\n"
+@@ -177,7 +177,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -997,13 +997,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", a sua senha guardada em cache irá expirar em: "
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "A sua senha expirou. Restam-lhe %d sessões de tolerância."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "A sua senha irá expirar em %d %s."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1192,8 +1192,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Os grupos têm de pertencer ao mesmo domínio que o utilizador\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Incapaz de encontrar o grupo %s no domínio local\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1218,13 +1218,13 @@ msgstr ""
+ "A pasta pessoal do utilizador já existe. Conteúdo skeldir não copiado\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Incapaz de criar pasta pessoal do utilizador: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Incapaz de criar o ficheiro de correio do utilizador: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1268,8 +1268,8 @@ msgid "Specify group to delete\n"
+ msgstr "Especifique grupo a remover\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "O grupo %s está fora do intervalo de IDs para o domínio\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1314,9 +1314,9 @@ msgstr "Grupos membro têm de estar no mesmo domínio do grupo pai\n"
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Grupo %s não foi encontrado no domínio local. Apenas são permitidos grupos "
+@@ -1338,8 +1338,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Erro de transacção. Não foi possível modificar o grupo.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sGrupo: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1347,29 +1347,29 @@ msgid "Magic Private "
+ msgstr "\"Magic\" Privada"
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sNúmero GID: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sUtilizadores Membros: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%sIs um membro de: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sGrupos Membros: "
+@@ -1415,8 +1415,8 @@ msgid "Specify user to delete\n"
+ msgstr "Especificar o utilizador a remover\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "O utilizador %s está fora do intervalo de IDs para o domínio\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1424,8 +1424,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "Não foi possível redefinir o contexto SELinux para a sessão\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "AVISO: O utilizador (uid %lu) ainda estava numa sessão quando foi removido.\n"
+ 
+@@ -1440,8 +1440,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "Erro ao verificar se o utilizador estava autenticado\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "O comando após-remoção falhou: %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1449,8 +1449,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "Pasta pessoal não removida - não pertence ao utilizador\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Incapaz de remover pasta pessoal: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1516,22 +1516,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1584,7 +1584,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1604,8 +1604,8 @@ msgid "Out of memory\n"
+ msgstr "Memória esgotada\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s tem de executar como root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/ru.po b/po/ru.po
+index 15abf7ccab6b83331057f5e3d13c4848253dde96..a37381f9cd51fd92d2acc575d88d32720b27c173 100644
+--- a/po/ru.po
++++ b/po/ru.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Russian <trans-ru at lists.fedoraproject.org>\n"
+@@ -177,7 +177,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -998,13 +998,13 @@ msgstr ", срок действия вашего кэшированного па
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
+-msgstr ""
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
++msgstr ", срок действия вашего кэшированного пароль истечёт:"
+ 
+ #: src/sss_client/pam_sss.c:734
+ msgid "Authentication is denied until: "
+@@ -1192,8 +1192,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Группы должны быть в том же домене, что и пользователь\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Не удалось найти группу %s в локальном домене\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1219,13 +1219,13 @@ msgstr ""
+ "скелетной директории выполнено не будет\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Не удалось создать домашний каталог пользователя: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Не удалось создать пользовательскую почтовую очередь: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1269,8 +1269,8 @@ msgid "Specify group to delete\n"
+ msgstr "Укажите группу для удаления\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "Группа %s находится вне назначенного для домена диапазона ID\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1316,9 +1316,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Не удалось найти группу %s в локальном домене, разрешены только группы "
+@@ -1338,8 +1338,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Ошибка в транзакции. Не удалось изменить группу.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sГруппа: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1347,27 +1347,29 @@ msgid "Magic Private "
+ msgstr "Magic Private"
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sНомер GID: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sПользователи: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
++"\n"
++"%sГруппы-участники: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sГруппы-участники: "
+@@ -1413,8 +1415,8 @@ msgid "Specify user to delete\n"
+ msgstr "Укажите пользователя для удаления\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "Пользователь %s находится вне определённого диапазона ID для домена\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1423,7 +1425,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1436,7 +1438,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1445,8 +1447,8 @@ msgstr ""
+ "Домашняя директория не удалена — пользователь не является её владельцем\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Не удалось удалить домашнюю директорию: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1510,22 +1512,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1578,7 +1580,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1598,8 +1600,8 @@ msgid "Out of memory\n"
+ msgstr "Недостаточно памяти\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s должно выполняться от имени root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/sssd.pot b/po/sssd.pot
+index 547053bb21bf829235998b9a4672d4fdd315773a..81da5586d0bf1fd534b52d9663d37882fdc140aa 100644
+--- a/po/sssd.pot
++++ b/po/sssd.pot
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL at li.org>\n"
+@@ -172,7 +172,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -986,12 +986,12 @@ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+ #, c-format
+-msgid "Your password will expire in %d %s."
++msgid "Your password will expire in %1$d %2$s."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1181,7 +1181,7 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:153
+ #, c-format
+-msgid "Cannot find group %s in local domain\n"
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1206,12 +1206,12 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:232
+ #, c-format
+-msgid "Cannot create user's home directory: %s\n"
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:243
+ #, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1256,7 +1256,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:101
+ #, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1299,7 +1299,7 @@ msgstr ""
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+ #, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ 
+@@ -1317,7 +1317,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1326,26 +1326,26 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+ #, c-format
+-msgid "%sGID number: %d\n"
++msgid "%1$sGID number: %2$d\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1388,7 +1388,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:230
+ #, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1397,7 +1397,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1410,7 +1410,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1419,7 +1419,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:298
+ #, c-format
+-msgid "Cannot remove homedir: %s\n"
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1479,22 +1479,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1547,7 +1547,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1568,7 +1568,7 @@ msgstr ""
+ 
+ #: src/tools/tools_util.h:40
+ #, c-format
+-msgid "%s must be run as root\n"
++msgid "%1$s must be run as root\n"
+ msgstr ""
+ 
+ #: src/util/util.h:93
+diff --git a/po/sv.po b/po/sv.po
+index 1a3356580f4b51c1ce87a02d9b187362beeda756..eb75edbe1907067215a1bbe57705d4cf8bc457f6 100644
+--- a/po/sv.po
++++ b/po/sv.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Swedish (http://www.transifex.net/projects/p/fedora/language/"
+@@ -174,7 +174,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -989,12 +989,12 @@ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+ #, c-format
+-msgid "Your password will expire in %d %s."
++msgid "Your password will expire in %1$d %2$s."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1183,8 +1183,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Grupper måste finnas i samma domän som användaren\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Hittar inte grupp %s i den lokala domänen\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1210,13 +1210,13 @@ msgstr ""
+ "skelettkatalogen\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Kan inte skapa användarens hemkatalog: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Kan inte skapa användarens brevlåda: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1260,8 +1260,8 @@ msgid "Specify group to delete\n"
+ msgstr "Ange grupp att ta bort\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "Grupp %s är utanför det definierade ID-intervallet för domänen\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1306,9 +1306,9 @@ msgstr "Medlemsgrupper måster ligga i samma domän som föräldragrupper\n"
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Kan inte hitta grupp %s i den lokala domänen, endast grupper i den lokala "
+@@ -1331,7 +1331,7 @@ msgstr "Transaktionsfel.  Det gick inte att ändra gruppen.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1340,26 +1340,26 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+ #, c-format
+-msgid "%sGID number: %d\n"
++msgid "%1$sGID number: %2$d\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1401,8 +1401,8 @@ msgid "Specify user to delete\n"
+ msgstr "Ange användare att ta bort\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "Användare %s är utanför det definierade ID-intervallet för domänen\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1411,7 +1411,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1424,7 +1424,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1432,8 +1432,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "Tar inte bort hemkatalogen - ägs inte av användaren\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Kan inte ta bort hemkatalogen: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1499,22 +1499,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1567,7 +1567,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1587,8 +1587,8 @@ msgid "Out of memory\n"
+ msgstr "Slut på minne\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s måste köras som root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/tg.po b/po/tg.po
+index 037ecf3e99127ba6bf1aa24551779f7286b7240b..d45ecfe3a0a9fe5040f57f9d6c0994fae1f56870 100644
+--- a/po/tg.po
++++ b/po/tg.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Tajik (http://www.transifex.net/projects/p/fedora/language/"
+@@ -173,7 +173,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -988,12 +988,12 @@ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+ #, c-format
+-msgid "Your password will expire in %d %s."
++msgid "Your password will expire in %1$d %2$s."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1183,7 +1183,7 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:153
+ #, c-format
+-msgid "Cannot find group %s in local domain\n"
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1208,12 +1208,12 @@ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:232
+ #, c-format
+-msgid "Cannot create user's home directory: %s\n"
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:243
+ #, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1258,7 +1258,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:101
+ #, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1301,7 +1301,7 @@ msgstr ""
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+ #, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ 
+@@ -1319,7 +1319,7 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:562
+ #, c-format
+-msgid "%s%sGroup: %s\n"
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1328,26 +1328,26 @@ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:565
+ #, c-format
+-msgid "%sGID number: %d\n"
++msgid "%1$sGID number: %2$d\n"
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1390,7 +1390,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:230
+ #, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1399,7 +1399,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1412,7 +1412,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1421,7 +1421,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:298
+ #, c-format
+-msgid "Cannot remove homedir: %s\n"
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1481,22 +1481,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1549,7 +1549,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1570,7 +1570,7 @@ msgstr "Берун аз хотира\n"
+ 
+ #: src/tools/tools_util.h:40
+ #, c-format
+-msgid "%s must be run as root\n"
++msgid "%1$s must be run as root\n"
+ msgstr ""
+ 
+ #: src/util/util.h:93
+diff --git a/po/uk.po b/po/uk.po
+index f100049cc1049e13c529fcc9e45e98803c600e8f..9c210ed4219368b3399bfbe75ed687d07b40f8a3 100644
+--- a/po/uk.po
++++ b/po/uk.po
+@@ -9,7 +9,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
+ "Language-Team: Ukrainian <trans-uk at lists.fedoraproject.org>\n"
+@@ -196,7 +196,7 @@ msgstr ""
+ "запит до служби буде надіслано знову."
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -1038,13 +1038,13 @@ msgid ", your cached password will expire at: "
+ msgstr ", строк дії вашого кешованого пароля завершиться: "
+ 
+ #: src/sss_client/pam_sss.c:639
+-#, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++#, fuzzy, c-format
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr "Строк дії вашого пароля вичерпано. Залишилося %d резервних входи."
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
+ msgstr "Строк дії вашого пароля завершиться за %d %s."
+ 
+ #: src/sss_client/pam_sss.c:734
+@@ -1233,8 +1233,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "Групи мають належати до того самого домену, що і користувач\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "Не вдалося знайти групу %s у локальному домені\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1261,13 +1261,13 @@ msgstr ""
+ "виконуватиметься\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "Не вдалося створити домашній каталог користувача: %s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "Не вдалося створити поштовий буфер користувача: %s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1314,8 +1314,8 @@ msgid "Specify group to delete\n"
+ msgstr "Вкажіть групу, яку слід вилучити\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
+ msgstr "Група %s не належить визначеному діапазону ідентифікаторів домену\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+@@ -1361,9 +1361,9 @@ msgstr ""
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr ""
+ "Не вдалося знайти групу %s у локальному домені, можна використовувати лише "
+@@ -1385,8 +1385,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "Помилка під час виконання операції Не вдалося змінити групу.\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%sГрупа: %s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1394,29 +1394,29 @@ msgid "Magic Private "
+ msgstr "Магічна приватна "
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sНомер GID: %d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+-#, c-format
+-msgid "%sMember users: "
++#, fuzzy, c-format
++msgid "%1$sMember users: "
+ msgstr "%sКористувачі-учасники: "
+ 
+ #: src/tools/sss_groupshow.c:574
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ "\n"
+ "%sє учасником: "
+ 
+ #: src/tools/sss_groupshow.c:581
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ "\n"
+ "%sГрупи-учасники: "
+@@ -1462,8 +1462,8 @@ msgid "Specify user to delete\n"
+ msgstr "Вкажіть користувача, запис якого слід вилучити\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr ""
+ "Користувач %s не належить визначеному діапазону ідентифікаторів домену\n"
+ 
+@@ -1472,8 +1472,8 @@ msgid "Cannot reset SELinux login context\n"
+ msgstr "Не вдалося відновити початковий контекст входу SELinux\n"
+ 
+ #: src/tools/sss_userdel.c:267
+-#, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++#, fuzzy, c-format
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ "ПОПЕРЕДЖЕННЯ: користувач (uid %lu) все ще працював у системі на час "
+ "вилучення його запису.\n"
+@@ -1488,8 +1488,8 @@ msgid "Error while checking if the user was logged in\n"
+ msgstr "Помилка під час перевірки входу користувача до системи\n"
+ 
+ #: src/tools/sss_userdel.c:284
+-#, c-format
+-msgid "The post-delete command failed: %s\n"
++#, fuzzy, c-format
++msgid "The post-delete command failed: %1$s\n"
+ msgstr "Помилка команди, яку слід було виконати після вилучення запису: %s\n"
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1497,8 +1497,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "Домашній каталог не буде вилучено. Він не належить користувачеві.\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "Не вдалося вилучити домашній каталог: %s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1566,22 +1566,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+-#, c-format
+-msgid "Couldn't invalidate %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s"
+ msgstr "Не вдалося скасувати визначення %s"
+ 
+ #: src/tools/sss_cache.c:194
+-#, c-format
+-msgid "Couldn't invalidate %s %s"
++#, fuzzy, c-format
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr "Не вдалося скасувати визначення %s %s"
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1638,7 +1638,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1658,8 +1658,8 @@ msgid "Out of memory\n"
+ msgstr "Не вистачає пам'яті\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s слід виконувати від імені користувача root\n"
+ 
+ #: src/util/util.h:93
+diff --git a/po/zh_TW.po b/po/zh_TW.po
+index 7c253a4a41a92fc997bb3dfd7247d5fca1c54335..8b981465fab13c91e8e3c062f909eabced5ff36e 100644
+--- a/po/zh_TW.po
++++ b/po/zh_TW.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at lists.fedorahosted.org\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0400\n"
++"POT-Creation-Date: 2012-05-22 09:33-0400\n"
+ "PO-Revision-Date: 2012-04-20 16:09+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Chinese (Taiwan) <trans-zh_TW at lists.fedoraproject.org>\n"
+@@ -172,7 +172,7 @@ msgid ""
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:88
+-msgid "Whether to hash host names and adresses in the known_hosts file"
++msgid "Whether to hash host names and addresses in the known_hosts file"
+ msgstr ""
+ 
+ #: src/config/SSSDConfig.py:91
+@@ -986,13 +986,13 @@ msgstr ",您快取的密碼將在此刻過期:"
+ 
+ #: src/sss_client/pam_sss.c:639
+ #, c-format
+-msgid "Your password has expired. You have %d grace login(s) remaining."
++msgid "Your password has expired. You have %1$d grace login(s) remaining."
+ msgstr ""
+ 
+ #: src/sss_client/pam_sss.c:685
+-#, c-format
+-msgid "Your password will expire in %d %s."
+-msgstr ""
++#, fuzzy, c-format
++msgid "Your password will expire in %1$d %2$s."
++msgstr ",您快取的密碼將在此刻過期:"
+ 
+ #: src/sss_client/pam_sss.c:734
+ msgid "Authentication is denied until: "
+@@ -1180,8 +1180,8 @@ msgid "Groups must be in the same domain as user\n"
+ msgstr "群組必須位於與使用者相同的網域內\n"
+ 
+ #: src/tools/sss_useradd.c:153
+-#, c-format
+-msgid "Cannot find group %s in local domain\n"
++#, fuzzy, c-format
++msgid "Cannot find group %1$s in local domain\n"
+ msgstr "在本機網域內找不到 %s 群組\n"
+ 
+ #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214
+@@ -1205,13 +1205,13 @@ msgid "User's home directory already exists, not copying data from skeldir\n"
+ msgstr "使用者的家目錄已經存在,不會從骨幹目錄複製資料\n"
+ 
+ #: src/tools/sss_useradd.c:232
+-#, c-format
+-msgid "Cannot create user's home directory: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's home directory: %1$s\n"
+ msgstr "無法建立使用者的家目錄:%s\n"
+ 
+ #: src/tools/sss_useradd.c:243
+-#, c-format
+-msgid "Cannot create user's mail spool: %s\n"
++#, fuzzy, c-format
++msgid "Cannot create user's mail spool: %1$s\n"
+ msgstr "無法建立使用者的郵件 spool:%s\n"
+ 
+ #: src/tools/sss_useradd.c:255
+@@ -1255,9 +1255,9 @@ msgid "Specify group to delete\n"
+ msgstr "指定要刪除的群組\n"
+ 
+ #: src/tools/sss_groupdel.c:101
+-#, c-format
+-msgid "Group %s is outside the defined ID range for domain\n"
+-msgstr ""
++#, fuzzy, c-format
++msgid "Group %1$s is outside the defined ID range for domain\n"
++msgstr "使用者 %s 位於為網域所定義的 ID 範圍外\n"
+ 
+ #: src/tools/sss_groupdel.c:115
+ msgid ""
+@@ -1297,9 +1297,9 @@ msgstr "成員群組必須位於與親代群組相同的網域內\n"
+ 
+ #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182
+ #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203
+-#, c-format
++#, fuzzy, c-format
+ msgid ""
+-"Cannot find group %s in local domain, only groups in local domain are "
++"Cannot find group %1$s in local domain, only groups in local domain are "
+ "allowed\n"
+ msgstr "在本機網域內找不到 %s 群組,只許可本機網域內的群組\n"
+ 
+@@ -1316,8 +1316,8 @@ msgid "Transaction error. Could not modify group.\n"
+ msgstr "處理事項發生錯誤。無法修改群組。\n"
+ 
+ #: src/tools/sss_groupshow.c:562
+-#, c-format
+-msgid "%s%sGroup: %s\n"
++#, fuzzy, c-format
++msgid "%1$s%2$sGroup: %3$s\n"
+ msgstr "%s%s群組:%s\n"
+ 
+ #: src/tools/sss_groupshow.c:563
+@@ -1325,27 +1325,27 @@ msgid "Magic Private "
+ msgstr "魔法隱私"
+ 
+ #: src/tools/sss_groupshow.c:565
+-#, c-format
+-msgid "%sGID number: %d\n"
++#, fuzzy, c-format
++msgid "%1$sGID number: %2$d\n"
+ msgstr "%sGID 編號:%d\n"
+ 
+ #: src/tools/sss_groupshow.c:567
+ #, c-format
+-msgid "%sMember users: "
++msgid "%1$sMember users: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:574
+ #, c-format
+ msgid ""
+ "\n"
+-"%sIs a member of: "
++"%1$sIs a member of: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:581
+ #, c-format
+ msgid ""
+ "\n"
+-"%sMember groups: "
++"%1$sMember groups: "
+ msgstr ""
+ 
+ #: src/tools/sss_groupshow.c:617
+@@ -1387,8 +1387,8 @@ msgid "Specify user to delete\n"
+ msgstr "指定要刪除的使用者\n"
+ 
+ #: src/tools/sss_userdel.c:230
+-#, c-format
+-msgid "User %s is outside the defined ID range for domain\n"
++#, fuzzy, c-format
++msgid "User %1$s is outside the defined ID range for domain\n"
+ msgstr "使用者 %s 位於為網域所定義的 ID 範圍外\n"
+ 
+ #: src/tools/sss_userdel.c:255
+@@ -1397,7 +1397,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:267
+ #, c-format
+-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n"
++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:272
+@@ -1410,7 +1410,7 @@ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:284
+ #, c-format
+-msgid "The post-delete command failed: %s\n"
++msgid "The post-delete command failed: %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_userdel.c:296
+@@ -1418,8 +1418,8 @@ msgid "Not removing home dir - not owned by user\n"
+ msgstr "不會移除家目錄 - 並非由使用者所擁有\n"
+ 
+ #: src/tools/sss_userdel.c:298
+-#, c-format
+-msgid "Cannot remove homedir: %s\n"
++#, fuzzy, c-format
++msgid "Cannot remove homedir: %1$s\n"
+ msgstr "無法移除家目錄:%s\n"
+ 
+ #: src/tools/sss_userdel.c:309
+@@ -1479,22 +1479,22 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:172
+ #, c-format
+-msgid "No such %s named %s, skipping\n"
++msgid "No such %1$s named %2$s, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:175
+ #, c-format
+-msgid "No objects of type %s in the cache, skipping\n"
++msgid "No objects of type %1$s in the cache, skipping\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:187
+ #, c-format
+-msgid "Couldn't invalidate %s"
++msgid "Couldn't invalidate %1$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:194
+ #, c-format
+-msgid "Couldn't invalidate %s %s"
++msgid "Couldn't invalidate %1$s %2$s"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:323
+@@ -1547,7 +1547,7 @@ msgstr ""
+ 
+ #: src/tools/sss_cache.c:455
+ #, c-format
+-msgid "Could not open domain %s\n"
++msgid "Could not open domain %1$s\n"
+ msgstr ""
+ 
+ #: src/tools/sss_cache.c:457
+@@ -1567,8 +1567,8 @@ msgid "Out of memory\n"
+ msgstr "記憶體耗盡\n"
+ 
+ #: src/tools/tools_util.h:40
+-#, c-format
+-msgid "%s must be run as root\n"
++#, fuzzy, c-format
++msgid "%1$s must be run as root\n"
+ msgstr "%s 必須以 root 身分執行\n"
+ 
+ #: src/util/util.h:93
+diff --git a/src/man/po/cs.po b/src/man/po/cs.po
+index 086a85bb5acc019acc3df65dab150fcf011f294d..a93533bb85c37c74017834cec7c461c97a182eea 100644
+--- a/src/man/po/cs.po
++++ b/src/man/po/cs.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Czech (http://www.transifex.net/projects/p/fedora/language/"
+@@ -825,7 +825,7 @@ msgstr ""
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1111,7 +1111,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7160,7 +7160,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/es.po b/src/man/po/es.po
+index 1b8d0649bd40c5e1de2f89efd1a097e8457375a1..9e7f11441c05f4b305d4b24507423d48498f4027 100644
+--- a/src/man/po/es.po
++++ b/src/man/po/es.po
+@@ -11,7 +11,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Spanish (Castilian) <trans-es at lists.fedoraproject.org>\n"
+@@ -916,7 +916,7 @@ msgstr "default_shell (cadena)"
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1212,7 +1212,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7564,7 +7564,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/fr.po b/src/man/po/fr.po
+index c93dc22acdc18e1e77970131f9a90061ed1d2783..bac140c0d963ac1d5a636f3a84b50c6e2249e97c 100644
+--- a/src/man/po/fr.po
++++ b/src/man/po/fr.po
+@@ -9,7 +9,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: French <trans-fr at lists.fedoraproject.org>\n"
+@@ -967,7 +967,7 @@ msgstr "default_shell (chaîne)"
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1284,7 +1284,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -8232,7 +8232,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/ja.po b/src/man/po/ja.po
+index 40c9d4775e59715efc58e326698b93c077cc4b86..42eebe0ed82b1d0319f7ec719e6b9e7c6ec1c4d6 100644
+--- a/src/man/po/ja.po
++++ b/src/man/po/ja.po
+@@ -10,7 +10,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-23 00:55+0000\n"
+ "Last-Translator: Tomoyuki KATO <tomo at dream.daynight.jp>\n"
+ "Language-Team: Japanese <trans-ja at lists.fedoraproject.org>\n"
+@@ -956,7 +956,7 @@ msgstr "default_shell (文字列)"
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1282,7 +1282,7 @@ msgstr "sss_ssh_knownhostsproxy"
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -8416,7 +8416,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/nl.po b/src/man/po/nl.po
+index 21a1b19940509ccba174b2ac854eb4c9e5abed9e..bd18147110053a76428850d73d943151f4dae14e 100644
+--- a/src/man/po/nl.po
++++ b/src/man/po/nl.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Dutch (http://www.transifex.net/projects/p/fedora/language/"
+@@ -906,7 +906,7 @@ msgstr ""
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1198,7 +1198,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7249,7 +7249,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/pt.po b/src/man/po/pt.po
+index be27d826e148fdb061dd1b92f790cd90df46c1cd..63d0c9caefd5d427c16b4ac90f7d0290a3c781f7 100644
+--- a/src/man/po/pt.po
++++ b/src/man/po/pt.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Portuguese <trans-pt at lists.fedoraproject.org>\n"
+@@ -875,7 +875,7 @@ msgstr "default_shell (string)"
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1165,7 +1165,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7361,7 +7361,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/ru.po b/src/man/po/ru.po
+index b0bb45e23b57a22dee35c04de28c8766ca96f1ce..67a38ae151e3d0a31f25b11c45fd83f6594b1453 100644
+--- a/src/man/po/ru.po
++++ b/src/man/po/ru.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Russian <trans-ru at lists.fedoraproject.org>\n"
+@@ -829,7 +829,7 @@ msgstr "По умолчанию: loginShell"
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1117,7 +1117,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7142,7 +7142,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/sssd-docs.pot b/src/man/po/sssd-docs.pot
+index c478138ed02f31fde66e03a4031c75a623f1d89f..829318635de82a03290ccf2f60bbe80cd8add8a9 100644
+--- a/src/man/po/sssd-docs.pot
++++ b/src/man/po/sssd-docs.pot
+@@ -6,9 +6,9 @@
+ #, fuzzy
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: sssd-docs 1.8.90\n"
++"Project-Id-Version: sssd-docs 1.8.92\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL at li.org>\n"
+@@ -792,7 +792,7 @@ msgstr ""
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during "
+-"lookup. This option supercedes any other shell options if it takes effect."
++"lookup. This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1080,7 +1080,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7144,7 +7144,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have "
+diff --git a/src/man/po/tg.po b/src/man/po/tg.po
+index d2c41ac2c31498b273e3b340ba9db0f401ab0989..e3c732a1284f8fef0a2cb3da7aa5eebfd6695afd 100644
+--- a/src/man/po/tg.po
++++ b/src/man/po/tg.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: sgallagh <sgallagh at redhat.com>\n"
+ "Language-Team: Tajik (http://www.transifex.net/projects/p/fedora/language/"
+@@ -824,7 +824,7 @@ msgstr ""
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1112,7 +1112,7 @@ msgstr ""
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -7139,7 +7139,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+diff --git a/src/man/po/uk.po b/src/man/po/uk.po
+index 28b0a82c938dd33e00112f9ca0e88b8cc6394a90..a5f31065f8c897e0d4edb97b870c9bd1c45d4f5c 100644
+--- a/src/man/po/uk.po
++++ b/src/man/po/uk.po
+@@ -9,7 +9,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: SSSD\n"
+ "Report-Msgid-Bugs-To: sssd-devel at redhat.com\n"
+-"POT-Creation-Date: 2012-05-11 14:59-0300\n"
++"POT-Creation-Date: 2012-05-22 09:33-0300\n"
+ "PO-Revision-Date: 2012-04-20 17:34+0000\n"
+ "Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
+ "Language-Team: Ukrainian <trans-uk at lists.fedoraproject.org>\n"
+@@ -978,7 +978,7 @@ msgstr "default_shell (рядок)"
+ #: sssd.conf.5.xml:523
+ msgid ""
+ "The default shell to use if the provider does not return one during lookup. "
+-"This option supercedes any other shell options if it takes effect."
++"This option supersedes any other shell options if it takes effect."
+ msgstr ""
+ 
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+@@ -1316,7 +1316,7 @@ msgstr "sss_ssh_knownhostsproxy"
+ #. type: Content of: <reference><refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
+ #: sssd.conf.5.xml:789
+ msgid ""
+-"Whether or not to hash host names and adresses in the managed known_hosts "
++"Whether or not to hash host names and addresses in the managed known_hosts "
+ "file."
+ msgstr ""
+ 
+@@ -8756,7 +8756,7 @@ msgstr ""
+ #. type: Content of: <refsect1><refsect2><refsect3><variablelist><varlistentry><listitem><para>
+ #: include/ldap_id_mapping.xml:85
+ msgid ""
+-"NOTE: This option is different from <quote>id_mn</quote> in that "
++"NOTE: This option is different from <quote>id_min</quote> in that "
+ "<quote>id_min</quote> acts to filter the output of requests to this domain, "
+ "whereas this option controls the range of ID assignment. This is a subtle "
+ "distinction, but the good general advice would be to have <quote>id_min</"
+-- 
+1.7.10.1
+
diff --git a/0017-LDAP-nested-groups-Do-not-process-callback-with-_pos.patch b/0017-LDAP-nested-groups-Do-not-process-callback-with-_pos.patch
new file mode 100644
index 0000000..85d5716
--- /dev/null
+++ b/0017-LDAP-nested-groups-Do-not-process-callback-with-_pos.patch
@@ -0,0 +1,58 @@
+From 04462f020ebb14c9b7a34425606f47db064f4f4a Mon Sep 17 00:00:00 2001
+From: Jakub Hrozek <jhrozek at redhat.com>
+Date: Tue, 22 May 2012 17:41:52 +0200
+Subject: [PATCH 17/19] LDAP nested groups: Do not process callback with _post
+ deep in the nested structure
+
+https://fedorahosted.org/sssd/ticket/1343
+---
+ src/providers/ldap/sdap_async_groups.c |   22 ++++++++++------------
+ 1 file changed, 10 insertions(+), 12 deletions(-)
+
+diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c
+index b48fe72eca1ab1dfe2dcb7a97a856ecef86d6f33..c3cc2ac92b80a52632655be03f8386ab2e68d7b9 100644
+--- a/src/providers/ldap/sdap_async_groups.c
++++ b/src/providers/ldap/sdap_async_groups.c
+@@ -2493,14 +2493,13 @@ static errno_t sdap_nested_group_lookup_user(struct tevent_req *req,
+                 ret = sdap_nested_group_process_step(req);
+             }
+ 
+-            if (ret == EOK) {
+-                /* EOK means it's complete */
+-                tevent_req_done(req);
+-                tevent_req_post(req, state->ev);
+-            } else if (ret != EAGAIN) {
++            if (ret != EOK && ret != EAGAIN) {
++                DEBUG(SSSDBG_OP_FAILURE, ("Nested group processing failed\n"));
+                 return ret;
++            } else if (ret == EOK) {
++                DEBUG(SSSDBG_TRACE_FUNC, ("All done.\n"));
++                tevent_req_done(req);
+             }
+-
+             return EOK;
+         }
+         /*
+@@ -2578,14 +2577,13 @@ static errno_t sdap_nested_group_lookup_group(struct tevent_req *req)
+             ret = sdap_nested_group_process_step(req);
+         }
+ 
+-        if (ret == EOK) {
+-            /* EOK means it's complete */
+-            tevent_req_done(req);
+-            tevent_req_post(req, state->ev);
+-        } else if (ret != EAGAIN) {
++        if (ret != EOK && ret != EAGAIN) {
++            DEBUG(SSSDBG_OP_FAILURE, ("Nested group processing failed\n"));
+             return ret;
++        } else if (ret == EOK) {
++            DEBUG(SSSDBG_TRACE_FUNC, ("All done.\n"));
++            tevent_req_done(req);
+         }
+-
+         return EOK;
+     }
+ 
+-- 
+1.7.10.1
+
diff --git a/0018-Fixed-issue-in-SELinux-user-maps.patch b/0018-Fixed-issue-in-SELinux-user-maps.patch
new file mode 100644
index 0000000..bf6172e
--- /dev/null
+++ b/0018-Fixed-issue-in-SELinux-user-maps.patch
@@ -0,0 +1,35 @@
+From 2c3443347ea83ff5e39515bd47b632c8efa1124c Mon Sep 17 00:00:00 2001
+From: Jan Zeleny <jzeleny at redhat.com>
+Date: Tue, 15 May 2012 10:49:14 -0400
+Subject: [PATCH 18/19] Fixed issue in SELinux user maps
+
+There was an issue when IPA provider didn't set PAM_SUCCESS when
+successfully finished loading SELinux user maps. This lead to the map
+not being read in the responder.
+---
+ src/providers/ipa/ipa_session.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/providers/ipa/ipa_session.c b/src/providers/ipa/ipa_session.c
+index e23b0120e6c2ce1303f4e70190721721a99b124a..238acdde776520dbb69046b8d45ecac4569e5cbc 100644
+--- a/src/providers/ipa/ipa_session.c
++++ b/src/providers/ipa/ipa_session.c
+@@ -104,6 +104,7 @@ static void ipa_session_handler_done(struct tevent_req *req)
+     struct sysdb_attrs **maps;
+     bool in_transaction = false;
+     char *default_user;
++    struct pam_data *pd = talloc_get_type(breq->req_data, struct pam_data);
+     char *map_order;
+ 
+     ret = ipa_get_selinux_recv(req, breq, &map_count, &maps,
+@@ -140,6 +141,7 @@ static void ipa_session_handler_done(struct tevent_req *req)
+     in_transaction = false;
+ 
+ 
++    pd->pam_status = PAM_SUCCESS;
+     breq->fn(breq, DP_ERR_OK, EOK, "Success");
+     return;
+ 
+-- 
+1.7.10.1
+
diff --git a/0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch b/0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch
new file mode 100644
index 0000000..d42e495
--- /dev/null
+++ b/0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch
@@ -0,0 +1,35 @@
+From faa68e44b8f4237cc7a99a94dadc090ae8bd003f Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh at redhat.com>
+Date: Wed, 23 May 2012 08:35:26 -0400
+Subject: [PATCH 19/19] NSS: Fix segfault when mmap cache cannot be
+ initialized
+
+---
+ src/responder/nss/nsssrv_cmd.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
+index aa3ef3cbc0b98d3fe44e14dce212ecf1279f14f3..1b444e68a2f09749a3f230905febc5efa15c8a82 100644
+--- a/src/responder/nss/nsssrv_cmd.c
++++ b/src/responder/nss/nsssrv_cmd.c
+@@ -365,7 +365,7 @@ static int fill_pwent(struct sss_packet *packet,
+ 
+         num++;
+ 
+-        if (pw_mmap_cache) {
++        if (pw_mmap_cache && nctx->pwd_mc_ctx) {
+             ret = sss_mmap_cache_pw_store(nctx->pwd_mc_ctx,
+                                           &fullname, &pwfield,
+                                           uid, gid,
+@@ -1918,7 +1918,7 @@ static int fill_grent(struct sss_packet *packet,
+ 
+         num++;
+ 
+-        if (gr_mmap_cache) {
++        if (gr_mmap_cache && nctx->grp_mc_ctx) {
+             /* body was reallocated, so fullname might be pointing to
+              * where body used to be, not where it is */
+             to_sized_string(&fullname, (const char *)&body[rzero+STRS_ROFFSET]);
+-- 
+1.7.10.1
+
diff --git a/sssd.spec b/sssd.spec
index 7538704..275bd80 100644
--- a/sssd.spec
+++ b/sssd.spec
@@ -12,11 +12,11 @@
 
 # Determine the location of the LDB modules directory
 %global ldb_modulesdir %(pkg-config --variable=modulesdir ldb)
-%global ldb_version 1.1.4
+%global ldb_version 1.1.6
 
 Name: sssd
 Version: 1.9.0
-Release: 1%{?dist}.beta1
+Release: 2%{?dist}.beta1
 Group: Applications/System
 Summary: System Security Services Daemon
 License: GPLv3+
@@ -26,7 +26,27 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 
 ### Patches ###
 
-Patch1001: FED01-Change-Kerberos-credential-cache-default-loca.patch
+#Fedora-specific: set the default credential cache location
+Patch0001: 0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch
+
+Patch0002: 0002-Potential-NULL-dereference-in-proxy-provider.patch
+Patch0003: 0003-Fix-typos-in-message-and-man-pages.patch
+Patch0004: 0004-Fixed-two-minor-memory-leaks.patch
+Patch0005: 0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch
+Patch0006: 0006-Fix-libsss_hbac-library-version.patch
+Patch0007: 0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch
+Patch0008: 0008-Use-sized_string-correctly-in-FQDN-domains.patch
+Patch0009: 0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch
+Patch0010: 0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch
+Patch0011: 0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch
+Patch0012: 0012-Always-use-positional-arguments-in-translatable-stri.patch
+Patch0013: 0013-Simple-implementation-of-Netscape-password-warning-e.patch
+Patch0014: 0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch
+Patch0015: 0015-Warn-to-syslog-when-dereference-requests-fail.patch
+Patch0016: 0016-Update-translation-sources.patch
+Patch0017: 0017-LDAP-nested-groups-Do-not-process-callback-with-_pos.patch
+Patch0018: 0018-Fixed-issue-in-SELinux-user-maps.patch
+Patch0019: 0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch
 
 ### Dependencies ###
 
@@ -48,6 +68,7 @@ Requires(postun): systemd-units initscripts chkconfig /sbin/ldconfig
 %global dbpath %{sssdstatedir}/db
 %global pipepath %{sssdstatedir}/pipes
 %global pubconfpath %{sssdstatedir}/pubconf
+%global mcachepath %{sssdstatedir}/mc
 
 ### Build Dependencies ###
 
@@ -213,6 +234,7 @@ autoreconf -ivf
     --with-db-path=%{dbpath} \
     --with-pipe-path=%{pipepath} \
     --with-pubconf-path=%{pubconfpath} \
+    --with-mcache-path=%{mcachepath} \
     --with-init-dir=%{_initrddir} \
     --with-krb5-rcache-dir=%{_localstatedir}/cache/krb5rcache \
     --enable-nsslibdir=/%{_lib} \
@@ -336,6 +358,7 @@ rm -rf $RPM_BUILD_ROOT
 %attr(700,root,root) %dir %{dbpath}
 %attr(755,root,root) %dir %{pipepath}
 %attr(755,root,root) %dir %{pubconfpath}
+%attr(755,root,root) %dir %{mcachepath}
 %attr(700,root,root) %dir %{pipepath}/private
 %attr(750,root,root) %dir %{_var}/log/%{name}
 %attr(700,root,root) %dir %{_sysconfdir}/sssd
@@ -486,6 +509,12 @@ fi
 %postun -n libipa_hbac -p /sbin/ldconfig
 
 %changelog
+* Thu May 24 2012 Stephen Gallagher <sgallagh at redhat.com> - 1.9.0-2.beta1
+- Fix several regressions since 1.5.x
+- Ensure that the RPM creates the /var/lib/sss/mc directory
+- Add support for Netscape password warning expiration control
+- Rebuild against libldb 1.1.6
+
 * Fri May 11 2012 Stephen Gallagher <sgallagh at redhat.com> - 1.9.0-1.beta1
 - New upstream release 1.9.0 beta 1
 - https://fedorahosted.org/sssd/wiki/Releases/Notes-1.9.0beta1


More information about the scm-commits mailing list