mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
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 91cc009fed
)
This commit is contained in:
parent
3b9eabc2f3
commit
0eb6bc1257
@ -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
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user