summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-06-22 03:10:40 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:18:41 -0500
commit0eb6bc1257f5f3638d8ed524c61d0ab43c8c7f02 (patch)
treedec4337dd12db570713725ed4bfcd763d607da06
parent3b9eabc2f3fa495cdfdd68d04863f6f9787d2357 (diff)
downloadsamba-0eb6bc1257f5f3638d8ed524c61d0ab43c8c7f02.tar.gz
samba-0eb6bc1257f5f3638d8ed524c61d0ab43c8c7f02.tar.bz2
samba-0eb6bc1257f5f3638d8ed524c61d0ab43c8c7f02.zip
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)
-rwxr-xr-xsource4/lib/ldb/tests/test-generic.sh2
-rw-r--r--source4/lib/ldb/tools/ldbedit.c17
-rw-r--r--source4/lib/ldb/tools/ldbsearch.c19
3 files changed, 19 insertions, 19 deletions
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);