s3:net_idmap_dump deal with idmap config * : backend config style
authorChristian Ambach <ambi@samba.org>
Thu, 29 Nov 2012 20:39:54 +0000 (21:39 +0100)
committerMichael Adam <obnox@samba.org>
Tue, 29 Jan 2013 11:56:11 +0000 (12:56 +0100)
this is the new config style since Samba 3.6 and should be detected by net idmap dump

Signed-off-by: Christian Ambach <ambi@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
source3/utils/net_idmap.c

index ebc14e528dea965778d3a46f5625bab7796816e9..6e6f2055969f029b88799ed11875de04e5159fe0 100644 (file)
@@ -67,18 +67,25 @@ static int net_idmap_dump_one_entry(struct db_record *rec,
 static const char* net_idmap_dbfile(struct net_context *c)
 {
        const char* dbfile = NULL;
+       const char *backend = NULL;
+
+       /* prefer idmap config * : backend over idmap backend parameter */
+       backend = lp_parm_const_string(-1, "idmap config *", "backend", NULL);
+       if (!backend) {
+               backend = lp_idmap_backend();
+       }
 
        if (c->opt_db != NULL) {
                dbfile = talloc_strdup(talloc_tos(), c->opt_db);
                if (dbfile == NULL) {
                        d_fprintf(stderr, _("Out of memory!\n"));
                }
-       } else if (strequal(lp_idmap_backend(), "tdb")) {
+       } else if (strequal(backend, "tdb")) {
                dbfile = state_path("winbindd_idmap.tdb");
                if (dbfile == NULL) {
                        d_fprintf(stderr, _("Out of memory!\n"));
                }
-       } else if (strequal(lp_idmap_backend(), "tdb2")) {
+       } else if (strequal(backend, "tdb2")) {
                dbfile = lp_parm_talloc_string(talloc_tos(),
                                               -1, "tdb", "idmap2.tdb", NULL);
                if (dbfile == NULL) {
@@ -89,16 +96,16 @@ static const char* net_idmap_dbfile(struct net_context *c)
                        d_fprintf(stderr, _("Out of memory!\n"));
                }
        } else {
-               char* backend = talloc_strdup(talloc_tos(), lp_idmap_backend());
-               char* args = strchr(backend, ':');
+               char *_backend = talloc_strdup(talloc_tos(), backend);
+               char* args = strchr(_backend, ':');
                if (args != NULL) {
                        *args = '\0';
                }
 
                d_printf(_("Sorry, 'idmap backend = %s' is currently not supported\n"),
-                        backend);
+                          _backend);
 
-               talloc_free(backend);
+               talloc_free(_backend);
        }
 
        return dbfile;