svn commit: samba r13197 - branches/SAMBA_3_0/source/tdb trunk/source/tdb

lmuelle at samba.org lmuelle at samba.org
Fri Jan 27 21:49:02 GMT 2006


Author: lmuelle
Date: 2006-01-27 21:49:01 +0000 (Fri, 27 Jan 2006)
New Revision: 13197

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13197

Log:
Add -k switch to dump the data of a single key.

Modified:
   branches/SAMBA_3_0/source/tdb/tdbdump.c
   trunk/source/tdb/tdbdump.c


Changeset:
Modified: branches/SAMBA_3_0/source/tdb/tdbdump.c
===================================================================
--- branches/SAMBA_3_0/source/tdb/tdbdump.c	2006-01-27 21:35:50 UTC (rev 13196)
+++ branches/SAMBA_3_0/source/tdb/tdbdump.c	2006-01-27 21:49:01 UTC (rev 13197)
@@ -59,9 +59,10 @@
 	return 0;
 }
 
-static int dump_tdb(const char *fname)
+static int dump_tdb(const char *fname, const char *keyname)
 {
 	TDB_CONTEXT *tdb;
+	TDB_DATA key, value;
 	
 	tdb = tdb_open(fname, 0, 0, O_RDONLY, 0);
 	if (!tdb) {
@@ -69,20 +70,55 @@
 		return 1;
 	}
 
-	tdb_traverse(tdb, traverse_fn, NULL);
+	if (!keyname) {
+		tdb_traverse(tdb, traverse_fn, NULL);
+	} else {
+		key.dptr = (char *)keyname;
+		key.dsize = strlen( keyname);
+		value = tdb_fetch(tdb, key);
+		if (!value.dptr) {
+			return 1;
+		} else {
+			print_data(value);
+			free(value.dptr);
+		}
+	}
+
 	return 0;
 }
 
+static void usage( void)
+{
+	printf( "Usage: tdbdump [options] <filename>\n\n");
+	printf( "   -h          this help message\n");
+	printf( "   -k keyname  dumps value of keyname\n");
+}
+
  int main(int argc, char *argv[])
 {
-	char *fname;
+	char *fname, *keyname=NULL;
+	int c;
 
 	if (argc < 2) {
 		printf("Usage: tdbdump <fname>\n");
 		exit(1);
 	}
 
-	fname = argv[1];
+	while ((c = getopt( argc, argv, "hk:")) != -1) {
+		switch (c) {
+		case 'h':
+			usage();
+			exit( 0);
+		case 'k':
+			keyname = optarg;
+			break;
+		default:
+			usage();
+			exit( 1);
+		}
+	}
 
-	return dump_tdb(fname);
+	fname = argv[optind];
+
+	return dump_tdb(fname, keyname);
 }

Modified: trunk/source/tdb/tdbdump.c
===================================================================
--- trunk/source/tdb/tdbdump.c	2006-01-27 21:35:50 UTC (rev 13196)
+++ trunk/source/tdb/tdbdump.c	2006-01-27 21:49:01 UTC (rev 13197)
@@ -59,9 +59,10 @@
 	return 0;
 }
 
-static int dump_tdb(const char *fname)
+static int dump_tdb(const char *fname, const char *keyname)
 {
 	TDB_CONTEXT *tdb;
+	TDB_DATA key, value;
 	
 	tdb = tdb_open(fname, 0, 0, O_RDONLY, 0);
 	if (!tdb) {
@@ -69,20 +70,55 @@
 		return 1;
 	}
 
-	tdb_traverse(tdb, traverse_fn, NULL);
+	if (!keyname) {
+		tdb_traverse(tdb, traverse_fn, NULL);
+	} else {
+		key.dptr = (char *)keyname;
+		key.dsize = strlen( keyname);
+		value = tdb_fetch(tdb, key);
+		if (!value.dptr) {
+			return 1;
+		} else {
+			print_data(value);
+			free(value.dptr);
+		}
+	}
+
 	return 0;
 }
 
+static void usage( void)
+{
+	printf( "Usage: tdbdump [options] <filename>\n\n");
+	printf( "   -h          this help message\n");
+	printf( "   -k keyname  dumps value of keyname\n");
+}
+
  int main(int argc, char *argv[])
 {
-	char *fname;
+	char *fname, *keyname=NULL;
+	int c;
 
 	if (argc < 2) {
 		printf("Usage: tdbdump <fname>\n");
 		exit(1);
 	}
 
-	fname = argv[1];
+	while ((c = getopt( argc, argv, "hk:")) != -1) {
+		switch (c) {
+		case 'h':
+			usage();
+			exit( 0);
+		case 'k':
+			keyname = optarg;
+			break;
+		default:
+			usage();
+			exit( 1);
+		}
+	}
 
-	return dump_tdb(fname);
+	fname = argv[optind];
+
+	return dump_tdb(fname, keyname);
 }



More information about the samba-cvs mailing list