diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-07-05 10:01:32 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-07-05 17:24:47 +1000 |
commit | 8420a36dc7fe72fb665e065b8673fa44ff1bbf21 (patch) | |
tree | 5350041c1de4cdc73a813949f7cd154c423b3ec5 /source4/lib/ldb/tools/ldbdel.c | |
parent | c9a6dd56e42beafd297f4aefeb4e00ef9a09073a (diff) | |
download | samba-8420a36dc7fe72fb665e065b8673fa44ff1bbf21.tar.gz samba-8420a36dc7fe72fb665e065b8673fa44ff1bbf21.tar.bz2 samba-8420a36dc7fe72fb665e065b8673fa44ff1bbf21.zip |
ldb: make ldb a top level library for Samba 4.0
Signed-off-by: Andrew Tridgell <tridge@samba.org>
Diffstat (limited to 'source4/lib/ldb/tools/ldbdel.c')
-rw-r--r-- | source4/lib/ldb/tools/ldbdel.c | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/source4/lib/ldb/tools/ldbdel.c b/source4/lib/ldb/tools/ldbdel.c deleted file mode 100644 index 8036d09a70..0000000000 --- a/source4/lib/ldb/tools/ldbdel.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - ldb database library - - Copyright (C) Andrew Tridgell 2004 - - ** NOTE! The following LGPL license applies to the ldb - ** library. This does NOT imply that all of Samba is released - ** under the LGPL - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, see <http://www.gnu.org/licenses/>. -*/ - -/* - * Name: ldb - * - * Component: ldbdel - * - * Description: utility to delete records - modelled on ldapdelete - * - * Author: Andrew Tridgell - */ - -#include "replace.h" -#include "ldb.h" -#include "tools/cmdline.h" -#include "ldbutil.h" - -static int dn_cmp(struct ldb_message **msg1, struct ldb_message **msg2) -{ - return ldb_dn_compare((*msg1)->dn, (*msg2)->dn); -} - -static int ldb_delete_recursive(struct ldb_context *ldb, struct ldb_dn *dn,struct ldb_control **req_ctrls) -{ - int ret; - unsigned int i, total=0; - const char *attrs[] = { NULL }; - struct ldb_result *res; - - ret = ldb_search(ldb, ldb, &res, dn, LDB_SCOPE_SUBTREE, attrs, "distinguishedName=*"); - if (ret != LDB_SUCCESS) return ret; - - /* sort the DNs, deepest first */ - TYPESAFE_QSORT(res->msgs, res->count, dn_cmp); - - for (i = 0; i < res->count; i++) { - if (ldb_delete_ctrl(ldb, res->msgs[i]->dn,req_ctrls) == LDB_SUCCESS) { - total++; - } else { - printf("Failed to delete '%s' - %s\n", - ldb_dn_get_linearized(res->msgs[i]->dn), - ldb_errstring(ldb)); - } - } - - talloc_free(res); - - if (total == 0) { - return LDB_ERR_OPERATIONS_ERROR; - } - printf("Deleted %u records\n", total); - return LDB_SUCCESS; -} - -static void usage(struct ldb_context *ldb) -{ - printf("Usage: ldbdel <options> <DN...>\n"); - printf("Deletes records from a ldb\n\n"); - ldb_cmdline_help(ldb, "ldbdel", stdout); - exit(LDB_ERR_OPERATIONS_ERROR); -} - -int main(int argc, const char **argv) -{ - struct ldb_control **req_ctrls; - struct ldb_cmdline *options; - struct ldb_context *ldb; - int ret = 0, i; - TALLOC_CTX *mem_ctx = talloc_new(NULL); - - ldb = ldb_init(mem_ctx, NULL); - if (ldb == NULL) { - return LDB_ERR_OPERATIONS_ERROR; - } - - options = ldb_cmdline_process(ldb, argc, argv, usage); - - if (options->argc < 1) { - usage(ldb); - } - - req_ctrls = ldb_parse_control_strings(ldb, ldb, (const char **)options->controls); - if (options->controls != NULL && req_ctrls== NULL) { - printf("parsing controls failed: %s\n", ldb_errstring(ldb)); - return LDB_ERR_OPERATIONS_ERROR; - } - - for (i=0;i<options->argc;i++) { - struct ldb_dn *dn; - - dn = ldb_dn_new(ldb, ldb, options->argv[i]); - if (dn == NULL) { - return LDB_ERR_OPERATIONS_ERROR; - } - if (options->recursive) { - ret = ldb_delete_recursive(ldb, dn,req_ctrls); - } else { - ret = ldb_delete_ctrl(ldb, dn,req_ctrls); - if (ret == LDB_SUCCESS) { - printf("Deleted 1 record\n"); - } - } - if (ret != LDB_SUCCESS) { - printf("delete of '%s' failed - (%s) %s\n", - ldb_dn_get_linearized(dn), - ldb_strerror(ret), - ldb_errstring(ldb)); - } - } - - talloc_free(mem_ctx); - - return ret; -} |