r23612: Revert 'net idmap dump' to the 3.0.24 behaviour.
authorVolker Lendecke <vlendec@samba.org>
Tue, 26 Jun 2007 19:15:26 +0000 (19:15 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:23:36 +0000 (12:23 -0500)
(This used to be commit 56a32f217a183f956ad1c57a62d61a43646aa391)

source3/utils/net_idmap.c

index dd16c4b02d937f31bde97441f41f56845c49571e..d4d2c931b84eb6262d92bbf60651e57fb0209e84 100644 (file)
        } } while(0)
 
 /***********************************************************
- Dump the current idmap
+ Helper function for net_idmap_dump. Dump one entry.
  **********************************************************/
-static int net_idmap_dump(int argc, const char **argv)
+static int net_idmap_dump_one_entry(TDB_CONTEXT *tdb,
+                                   TDB_DATA key,
+                                   TDB_DATA data,
+                                   void *unused)
 {
-       TALLOC_CTX *ctx;
-       char *filename;
-
-       if (argc != 1) {
-               return net_help_idmap(argc, argv);
+       if (strcmp((char *)key.dptr, "USER HWM") == 0) {
+               printf("USER HWM %d\n", IVAL(data.dptr,0));
+               return 0;
        }
 
-       if (! winbind_ping()) {
-               d_fprintf(stderr, "To use net idmap Winbindd must be running.\n");
-               return -1;
+       if (strcmp((char *)key.dptr, "GROUP HWM") == 0) {
+               printf("GROUP HWM %d\n", IVAL(data.dptr,0));
+               return 0;
        }
 
-       ctx = talloc_new(NULL);
-       ALLOC_CHECK(ctx);
+       if (strncmp((char *)key.dptr, "S-", 2) != 0)
+               return 0;
 
-       filename = talloc_strdup(ctx, argv[0]);
-       ALLOC_CHECK(filename);
+       printf("%s %s\n", data.dptr, key.dptr);
+       return 0;
+}
 
-       /* filename must be absolute */
-       if (*filename != '/') {
-               char path[4096];
-               
-               filename = getcwd(path, 4095);
-               if ( ! filename) {
-                       d_fprintf(stderr, "Failed to obtain full output file path");
-                       talloc_free(ctx);
-                       return -1;
-               }
+/***********************************************************
+ Dump the current idmap
+ **********************************************************/
+static int net_idmap_dump(int argc, const char **argv)
+{
+       TDB_CONTEXT *idmap_tdb;
 
-               filename = talloc_asprintf(ctx, "%s/%s", path, argv[0]);
-               ALLOC_CHECK(filename);
-       }
+       if ( argc != 1 )
+               return net_help_idmap( argc, argv );
 
-       if ( ! winbind_idmap_dump_maps(ctx, filename)) {
-               d_fprintf(stderr, "Failed to obtain idmap data from winbindd\n");
-               talloc_free(ctx);
+       idmap_tdb = tdb_open_log(argv[0], 0, TDB_DEFAULT, O_RDONLY, 0);
+
+       if (idmap_tdb == NULL) {
+               d_fprintf(stderr, "Could not open idmap: %s\n", argv[0]);
                return -1;
        }
 
-       talloc_free(ctx);
+       tdb_traverse(idmap_tdb, net_idmap_dump_one_entry, NULL);
+
+       tdb_close(idmap_tdb);
+
        return 0;
 }