diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-06-21 07:52:00 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:18:37 -0500 |
commit | 5be159f304411b58c417a979c819f9ab211a0337 (patch) | |
tree | 332eede05fc983d4a1fb872618162f98d0c2f990 /source4/lib/ldb/common | |
parent | eb0a13025aa6d693c7e9fa213ef04fa58cf60e3e (diff) | |
download | samba-5be159f304411b58c417a979c819f9ab211a0337.tar.gz samba-5be159f304411b58c417a979c819f9ab211a0337.tar.bz2 samba-5be159f304411b58c417a979c819f9ab211a0337.zip |
r7804: added the samba specific ldif handlers into the tree, but don't enable
them just yet. I have tested them, and they work fine, but enabling
them will break code in rpc_server/ and samdb, so we need to fix that
first
(This used to be commit 07d459406b4c63e49141e0e533e1274b4052abf9)
Diffstat (limited to 'source4/lib/ldb/common')
-rw-r--r-- | source4/lib/ldb/common/ldb_ldif.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/source4/lib/ldb/common/ldb_ldif.c b/source4/lib/ldb/common/ldb_ldif.c index 88ef9fae45..94109ce224 100644 --- a/source4/lib/ldb/common/ldb_ldif.c +++ b/source4/lib/ldb/common/ldb_ldif.c @@ -41,6 +41,30 @@ #include "ldb/include/ldb_private.h" #include <ctype.h> + +/* + add to the list of ldif handlers for this ldb context +*/ +int ldb_ldif_add_handlers(struct ldb_context *ldb, + const struct ldb_ldif_handler *handlers, + unsigned num_handlers) +{ + struct ldb_ldif_handler *h; + h = talloc_realloc(ldb, ldb->ldif_handlers, + struct ldb_ldif_handler, + ldb->ldif_num_handlers + num_handlers); + if (h == NULL) { + ldb_oom(ldb); + return -1; + } + ldb->ldif_handlers = h; + memcpy(h + ldb->ldif_num_handlers, + handlers, sizeof(*h) * num_handlers); + ldb->ldif_num_handlers += num_handlers; + return 0; +} + + /* default function for ldif read/write */ @@ -59,7 +83,7 @@ static ldb_ldif_handler_t ldb_ldif_read_fn(struct ldb_context *ldb, const char * { int i; for (i=0;i<ldb->ldif_num_handlers;i++) { - if (strcmp(attr, ldb->ldif_handlers[i].attr) == 0) { + if (ldb_attr_cmp(attr, ldb->ldif_handlers[i].attr) == 0) { return ldb->ldif_handlers[i].read_fn; } } @@ -73,7 +97,7 @@ static ldb_ldif_handler_t ldb_ldif_write_fn(struct ldb_context *ldb, const char { int i; for (i=0;i<ldb->ldif_num_handlers;i++) { - if (strcmp(attr, ldb->ldif_handlers[i].attr) == 0) { + if (ldb_attr_cmp(attr, ldb->ldif_handlers[i].attr) == 0) { return ldb->ldif_handlers[i].write_fn; } } |