From 0eb6bc1257f5f3638d8ed524c61d0ab43c8c7f02 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 22 Jun 2005 03:10:40 +0000 Subject: r7833: changed ldbsearch and ldbedit to have command line syntax closer to ldapsearch. They look for an '=' in the first argument to see if it is a search expression, and if not then it does an 'all records' search (This used to be commit 91cc009fedefa7b263b345dfa511800e0f4f66a8) --- source4/lib/ldb/tests/test-generic.sh | 2 +- source4/lib/ldb/tools/ldbedit.c | 17 ++++++----------- source4/lib/ldb/tools/ldbsearch.c | 19 ++++++++++++------- 3 files changed, 19 insertions(+), 19 deletions(-) (limited to 'source4') diff --git a/source4/lib/ldb/tests/test-generic.sh b/source4/lib/ldb/tests/test-generic.sh index 02325b8356..aa5c5dfb88 100755 --- a/source4/lib/ldb/tests/test-generic.sh +++ b/source4/lib/ldb/tests/test-generic.sh @@ -37,7 +37,7 @@ $VALGRIND bin/ldbsearch '(|(uid=uham)(uid=uham)(objectclass=OpenLDAPperson))' | $VALGRIND bin/ldbsearch '(&(uid=uham)(uid=uham)(!(objectclass=xxx)))' || exit 1 $VALGRIND bin/ldbsearch '(&(objectclass=person)(uid=uham)(!(uid=uhamxx)))' uid \* \+ dn || exit 1 $VALGRIND bin/ldbsearch '(&(uid=uham)(uid=uha*)(title=*))' uid || exit 1 -$VALGRIND bin/ldbsearch '((' uid && exit 1 +$VALGRIND bin/ldbsearch '((' uid || exit 1 $VALGRIND bin/ldbsearch '(objectclass=)' uid || exit 1 $VALGRIND bin/ldbsearch -b 'cn=Hampster Ursula,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST' -s base "" sn || exit 1 diff --git a/source4/lib/ldb/tools/ldbedit.c b/source4/lib/ldb/tools/ldbedit.c index e8497ba18f..12bf12bfff 100644 --- a/source4/lib/ldb/tools/ldbedit.c +++ b/source4/lib/ldb/tools/ldbedit.c @@ -278,28 +278,23 @@ static void usage(void) struct ldb_context *ldb; struct ldb_message **msgs; int ret; - const char *expression = NULL; + const char *expression = "(|(objectclass=*)(dn=*))"; const char * const * attrs = NULL; ldb = ldb_init(NULL); options = ldb_cmdline_process(ldb, argc, argv, usage); - if (options->all_records) { - expression = "(|(objectclass=*)(dn=*))"; - } - - if (!expression) { - if (options->argc == 0) { - usage(); - } + /* the check for '=' is for compatibility with ldapsearch */ + if (options->argc > 0 && + strchr(options->argv[0], '=')) { expression = options->argv[0]; - options->argc--; options->argv++; + options->argc--; } if (options->argc > 0) { - attrs = (const char * const *)options->argv; + attrs = (const char * const *)(options->argv); } ret = ldb_search(ldb, options->basedn, options->scope, expression, attrs, &msgs); diff --git a/source4/lib/ldb/tools/ldbsearch.c b/source4/lib/ldb/tools/ldbsearch.c index 0e81da5de3..396bb7797a 100644 --- a/source4/lib/ldb/tools/ldbsearch.c +++ b/source4/lib/ldb/tools/ldbsearch.c @@ -120,18 +120,23 @@ static int do_search(struct ldb_context *ldb, const char * const * attrs = NULL; struct ldb_cmdline *options; int ret = -1; + const char *expression = "(|(objectclass=*)(dn=*))"; ldb = ldb_init(NULL); options = ldb_cmdline_process(ldb, argc, argv, usage); - - if (options->argc < 1 && !options->interactive) { - usage(); - exit(1); + + /* the check for '=' is for compatibility with ldapsearch */ + if (!options->interactive && + options->argc > 0 && + strchr(options->argv[0], '=')) { + expression = options->argv[0]; + options->argv++; + options->argc--; } - if (options->argc > 1) { - attrs = (const char * const *)(options->argv+1); + if (options->argc > 0) { + attrs = (const char * const *)(options->argv); } if (options->interactive) { @@ -144,7 +149,7 @@ static int do_search(struct ldb_context *ldb, } } else { ret = do_search(ldb, options->basedn, options->scope, options->sorted, - options->argv[0], attrs); + expression, attrs); } talloc_free(ldb); -- cgit