The branch, master has been updated via 19242b2 docs-xml: document dbwrap_tool exists via 26515c5 s3:utils/dbwrap_tool add exists operation from 5512a43 docs: Fix bug 9809 -- missing entry in specfile
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 19242b2916b55d2f1d97855e038395d5c87ca421 Author: Christian Ambach <a...@samba.org> Date: Mon Apr 22 13:56:24 2013 +0200 docs-xml: document dbwrap_tool exists Signed-off-by: Christian Ambach <a...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Autobuild-User(master): Volker Lendecke <v...@samba.org> Autobuild-Date(master): Mon Apr 22 18:43:42 CEST 2013 on sn-devel-104 commit 26515c5d473c12f638e7405a5df3b1e24cd82ec8 Author: Christian Ambach <a...@samba.org> Date: Mon Apr 22 13:51:52 2013 +0200 s3:utils/dbwrap_tool add exists operation Signed-off-by: Christian Ambach <a...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> ----------------------------------------------------------------------- Summary of changes: docs-xml/manpages/dbwrap_tool.1.xml | 7 ++++++ source3/utils/dbwrap_tool.c | 38 +++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 4 deletions(-) Changeset truncated at 500 lines: diff --git a/docs-xml/manpages/dbwrap_tool.1.xml b/docs-xml/manpages/dbwrap_tool.1.xml index 59ef968..e2b2cee 100644 --- a/docs-xml/manpages/dbwrap_tool.1.xml +++ b/docs-xml/manpages/dbwrap_tool.1.xml @@ -49,6 +49,7 @@ <listitem><para>fetch: fetch a record</para></listitem> <listitem><para>store: create or modify a record</para></listitem> <listitem><para>delete: remove a record</para></listitem> + <listitem><para>exists: test for existance of a record</para></listitem> <listitem><para>erase: remove all records</para></listitem> <listitem><para>listkeys: list all available records</para></listitem> <listitem><para>listwatchers: list processes, which are waiting for changes in a record</para></listitem> @@ -101,6 +102,12 @@ </cmdsynopsis> </refsect2> <refsect2> + <title>exists</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> exists <key> + </cmdsynopsis> + </refsect2> + <refsect2> <title>erase</title> <cmdsynopsis> <command>dbwrap_tool</command> <database> erase </cmdsynopsis> diff --git a/source3/utils/dbwrap_tool.c b/source3/utils/dbwrap_tool.c index aab5773..79b40d2 100644 --- a/source3/utils/dbwrap_tool.c +++ b/source3/utils/dbwrap_tool.c @@ -30,7 +30,7 @@ #include "util_tdb.h" enum dbwrap_op { OP_FETCH, OP_STORE, OP_DELETE, OP_ERASE, OP_LISTKEYS, - OP_LISTWATCHERS }; + OP_LISTWATCHERS, OP_EXISTS }; enum dbwrap_type { TYPE_INT32, TYPE_UINT32, TYPE_STRING, TYPE_HEX, TYPE_NONE }; @@ -263,6 +263,24 @@ static int dbwrap_tool_delete(struct db_context *db, return 0; } +static int dbwrap_tool_exists(struct db_context *db, + const char *keyname, + const char *data) +{ + bool result; + + result = dbwrap_exists(db, string_term_tdb_data(keyname)); + + if (result) { + d_fprintf(stdout, "Key %s exists\n", keyname); + } else { + d_fprintf(stdout, "Key %s does not exist\n", keyname); + } + + return (result)?0:1; +} + + static int delete_fn(struct db_record *rec, void *priv) { dbwrap_record_delete(rec); @@ -373,6 +391,7 @@ struct dbwrap_op_dispatch_table dispatch_table[] = { { OP_ERASE, TYPE_INT32, dbwrap_tool_erase }, { OP_LISTKEYS, TYPE_INT32, dbwrap_tool_listkeys }, { OP_LISTWATCHERS, TYPE_NONE, dbwrap_tool_listwatchers }, + { OP_EXISTS, TYPE_STRING, dbwrap_tool_exists }, { 0, 0, NULL }, }; @@ -437,8 +456,8 @@ int main(int argc, const char **argv) d_fprintf(stderr, "USAGE: %s [options] <database> <op> [<key> [<type> " "[<value>]]]\n" - " ops: fetch, store, delete, erase, listkeys, " - "listwatchers\n" + " ops: fetch, store, delete, exists, " + "erase, listkeys, listwatchers\n" " types: int32, uint32, string, hex\n", argv[0]); goto done; @@ -496,10 +515,20 @@ int main(int argc, const char **argv) } op = OP_LISTWATCHERS; keytype = "none"; + } else if (strcmp(opname, "exists") == 0) { + if (extra_argc != 3) { + d_fprintf(stderr, "ERROR: operation 'exists' does " + "not allow type nor value argument\n"); + goto done; + } + keyname = extra_argv[2]; + op = OP_EXISTS; + keytype = "string"; } else { d_fprintf(stderr, "ERROR: invalid op '%s' specified\n" - " supported ops: fetch, store, delete\n", + " supported ops: fetch, store, delete, exists, " + "erase, listkeys, listwatchers\n", opname); goto done; } @@ -544,6 +573,7 @@ int main(int argc, const char **argv) case OP_DELETE: case OP_ERASE: case OP_LISTKEYS: + case OP_EXISTS: db = db_open(mem_ctx, dbname, 0, tdb_flags, O_RDWR | O_CREAT, 0644, DBWRAP_LOCK_ORDER_1); if (db == NULL) { -- Samba Shared Repository