diff options
author | Matthieu Patou <mat@matws.net> | 2009-12-22 20:44:19 +0300 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2009-12-23 08:09:19 -0500 |
commit | 3bd4f6792c63fffec66548ae5cfde60e45f865fa (patch) | |
tree | ae6081f371dd4e710c0346f1f420da6e6f36ed77 /source4/lib/ldb/tools/ldbmodify.c | |
parent | 5aa0d97464dd876e64b95cc9b302509430603217 (diff) | |
download | samba-3bd4f6792c63fffec66548ae5cfde60e45f865fa.tar.gz samba-3bd4f6792c63fffec66548ae5cfde60e45f865fa.tar.xz samba-3bd4f6792c63fffec66548ae5cfde60e45f865fa.zip |
s4: make ldbadd/ldbmodify/ldbdelete really use the --controls switch
Diffstat (limited to 'source4/lib/ldb/tools/ldbmodify.c')
-rw-r--r-- | source4/lib/ldb/tools/ldbmodify.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source4/lib/ldb/tools/ldbmodify.c b/source4/lib/ldb/tools/ldbmodify.c index 4936880d09..575658600c 100644 --- a/source4/lib/ldb/tools/ldbmodify.c +++ b/source4/lib/ldb/tools/ldbmodify.c @@ -33,6 +33,7 @@ #include "ldb.h" #include "tools/cmdline.h" +#include "ldbutil.h" static int failures; static struct ldb_cmdline *options; @@ -52,18 +53,23 @@ static int process_file(struct ldb_context *ldb, FILE *f, int *count) { struct ldb_ldif *ldif; int ret = LDB_SUCCESS; - + struct ldb_control **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 -1; + } + while ((ldif = ldb_ldif_read_file(ldb, f))) { switch (ldif->changetype) { case LDB_CHANGETYPE_NONE: case LDB_CHANGETYPE_ADD: - ret = ldb_add(ldb, ldif->msg); + ret = ldb_add_ctrl(ldb, ldif->msg,req_ctrls); break; case LDB_CHANGETYPE_DELETE: - ret = ldb_delete(ldb, ldif->msg->dn); + ret = ldb_delete_ctrl(ldb, ldif->msg->dn,req_ctrls); break; case LDB_CHANGETYPE_MODIFY: - ret = ldb_modify(ldb, ldif->msg); + ret = ldb_modify_ctrl(ldb, ldif->msg,req_ctrls); break; } if (ret != LDB_SUCCESS) { |