diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2008-01-22 16:39:56 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2008-01-22 16:39:56 +0100 |
commit | 4075a2ba982ea56ff925e0a33839f0760fd71911 (patch) | |
tree | 87d87734257f814b7960a843e54455c447f34a9e /source4/lib/ldb/tools | |
parent | 24da29746998de1001d18871dcbe8d37643667d5 (diff) | |
parent | 35c68316442808a135aafa864d19592108a4d879 (diff) | |
download | samba-4075a2ba982ea56ff925e0a33839f0760fd71911.tar.gz samba-4075a2ba982ea56ff925e0a33839f0760fd71911.tar.bz2 samba-4075a2ba982ea56ff925e0a33839f0760fd71911.zip |
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into v4-0-python
(This used to be commit 2f57e25f8f692889d9e057e13256f8a24c5ec10c)
Diffstat (limited to 'source4/lib/ldb/tools')
-rw-r--r-- | source4/lib/ldb/tools/ldbsearch.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/source4/lib/ldb/tools/ldbsearch.c b/source4/lib/ldb/tools/ldbsearch.c index c33cba1d77..24ceb30963 100644 --- a/source4/lib/ldb/tools/ldbsearch.c +++ b/source4/lib/ldb/tools/ldbsearch.c @@ -61,6 +61,7 @@ struct search_context { int sort; int num_stored; struct ldb_message **store; + int refs_stored; char **refs_store; int entries; @@ -87,15 +88,15 @@ static int store_message(struct ldb_message *msg, struct search_context *sctx) { static int store_referral(char *referral, struct search_context *sctx) { - sctx->refs_store = talloc_realloc(sctx, sctx->refs_store, char *, sctx->refs + 2); + sctx->refs_store = talloc_realloc(sctx, sctx->refs_store, char *, sctx->refs_stored + 2); if (!sctx->refs_store) { fprintf(stderr, "talloc_realloc failed while storing referrals\n"); return -1; } - sctx->refs_store[sctx->refs] = talloc_move(sctx->refs_store, &referral); - sctx->refs++; - sctx->refs_store[sctx->refs] = NULL; + sctx->refs_store[sctx->refs_stored] = talloc_move(sctx->refs_store, &referral); + sctx->refs_stored++; + sctx->refs_store[sctx->refs_stored] = NULL; return 0; } @@ -199,6 +200,7 @@ static int do_search(struct ldb_context *ldb, sctx->sort = options->sorted; sctx->num_stored = 0; + sctx->refs_stored = 0; sctx->store = NULL; sctx->req_ctrls = ldb_parse_control_strings(ldb, sctx, (const char **)options->controls); if (options->controls != NULL && sctx->req_ctrls== NULL) { @@ -241,22 +243,18 @@ again: if (sctx->pending) goto again; - if (sctx->sort && sctx->num_stored != 0) { + if (sctx->sort && (sctx->num_stored != 0 || sctx->refs != 0)) { int i; - ldb_qsort(sctx->store, ret, sizeof(struct ldb_message *), - ldb, (ldb_qsort_cmp_fn_t)do_compare_msg); - - if (ret != 0) { - fprintf(stderr, "An error occurred while sorting messages\n"); - exit(1); + if (sctx->num_stored) { + ldb_qsort(sctx->store, sctx->num_stored, sizeof(struct ldb_message *), + ldb, (ldb_qsort_cmp_fn_t)do_compare_msg); } - for (i = 0; i < sctx->num_stored; i++) { display_message(ldb, sctx->store[i], sctx); } - for (i = 0; i < sctx->refs; i++) { + for (i = 0; i < sctx->refs_stored; i++) { display_referral(sctx->refs_store[i], sctx); } } |