s3:net idmap dump: use net_idmap_dbfile
authorGregor Beck <gbeck@sernet.de>
Tue, 8 Feb 2011 11:40:23 +0000 (12:40 +0100)
committerMichael Adam <obnox@samba.org>
Wed, 9 Feb 2011 13:00:35 +0000 (14:00 +0100)
source3/utils/net_idmap.c

index 439b6bbf919f6c69d34314f428430fce7ad9a862..347cbbf8a512b729e2fb1cb5a1934e3819d3c07b 100644 (file)
@@ -101,11 +101,13 @@ static int net_idmap_dump(struct net_context *c, int argc, const char **argv)
 {
        struct db_context *db;
        TALLOC_CTX *mem_ctx;
+       const char* dbfile;
+       int ret = -1;
 
-       if ( argc != 1  || c->display_usage) {
+       if ( argc > 1  || c->display_usage) {
                d_printf("%s\n%s",
                         _("Usage:"),
-                        _("net idmap dump <inputfile>\n"
+                        _("net idmap dump [[--db=]<inputfile>]\n"
                           "  Dump current ID mapping.\n"
                           "    inputfile\tTDB file to read mappings from.\n"));
                return c->display_usage?0:-1;
@@ -113,19 +115,25 @@ static int net_idmap_dump(struct net_context *c, int argc, const char **argv)
 
        mem_ctx = talloc_stackframe();
 
-       db = db_open(mem_ctx, argv[0], 0, TDB_DEFAULT, O_RDONLY, 0);
+       dbfile = (argc > 0) ? argv[0] : net_idmap_dbfile(c);
+       if (dbfile == NULL) {
+               goto done;
+       }
+       d_fprintf(stderr, _("dumping id mapping from %s\n"), dbfile);
+
+       db = db_open(mem_ctx, dbfile, 0, TDB_DEFAULT, O_RDONLY, 0);
        if (db == NULL) {
                d_fprintf(stderr, _("Could not open idmap db (%s): %s\n"),
                          argv[0], strerror(errno));
-               talloc_free(mem_ctx);
-               return -1;
+               goto done;
        }
 
        db->traverse_read(db, net_idmap_dump_one_entry, NULL);
+       ret = 0;
 
+done:
        talloc_free(mem_ctx);
-
-       return 0;
+       return ret;
 }
 
 /***********************************************************