summaryrefslogtreecommitdiff
path: root/source4/lib/ldb
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-04-07 16:33:54 +1000
committerAndrew Tridgell <tridge@samba.org>2009-04-07 16:33:54 +1000
commit9181637170a994ef93bfb8c0fa69ab7b89837f0d (patch)
treebef7693e41eb02680e834d0c9535f382219323de /source4/lib/ldb
parentef6c6ab4c6cee26ea84c2e2a0041ad62f428ad01 (diff)
downloadsamba-9181637170a994ef93bfb8c0fa69ab7b89837f0d.tar.gz
samba-9181637170a994ef93bfb8c0fa69ab7b89837f0d.tar.bz2
samba-9181637170a994ef93bfb8c0fa69ab7b89837f0d.zip
fixed internal handling of attribute deletion
Diffstat (limited to 'source4/lib/ldb')
-rw-r--r--source4/lib/ldb/common/ldb_attributes.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/source4/lib/ldb/common/ldb_attributes.c b/source4/lib/ldb/common/ldb_attributes.c
index cf45e8ef28..79c5dd69de 100644
--- a/source4/lib/ldb/common/ldb_attributes.c
+++ b/source4/lib/ldb/common/ldb_attributes.c
@@ -118,22 +118,13 @@ static const struct ldb_schema_attribute ldb_attribute_default = {
/*
return the attribute handlers for a given attribute
*/
-const struct ldb_schema_attribute *ldb_schema_attribute_by_name(struct ldb_context *ldb,
- const char *name)
+static const struct ldb_schema_attribute *ldb_schema_attribute_by_name_internal(
+ struct ldb_context *ldb,
+ const char *name)
{
int i, e, b = 0, r;
const struct ldb_schema_attribute *def = &ldb_attribute_default;
- if (ldb->schema.attribute_handler_override) {
- const struct ldb_schema_attribute *ret =
- ldb->schema.attribute_handler_override(ldb,
- ldb->schema.attribute_handler_override_private,
- name);
- if (ret) {
- return ret;
- }
- }
-
/* as handlers are sorted, '*' must be the first if present */
if (strcmp(ldb->schema.attributes[0].name, "*") == 0) {
def = &ldb->schema.attributes[0];
@@ -162,6 +153,25 @@ const struct ldb_schema_attribute *ldb_schema_attribute_by_name(struct ldb_conte
return def;
}
+/*
+ return the attribute handlers for a given attribute
+*/
+const struct ldb_schema_attribute *ldb_schema_attribute_by_name(struct ldb_context *ldb,
+ const char *name)
+{
+ if (ldb->schema.attribute_handler_override) {
+ const struct ldb_schema_attribute *ret =
+ ldb->schema.attribute_handler_override(ldb,
+ ldb->schema.attribute_handler_override_private,
+ name);
+ if (ret) {
+ return ret;
+ }
+ }
+
+ return ldb_schema_attribute_by_name_internal(ldb, name);
+}
+
/*
add to the list of ldif handlers for this ldb context
@@ -171,7 +181,7 @@ void ldb_schema_attribute_remove(struct ldb_context *ldb, const char *name)
const struct ldb_schema_attribute *a;
int i;
- a = ldb_schema_attribute_by_name(ldb, name);
+ a = ldb_schema_attribute_by_name_internal(ldb, name);
if (a == NULL || a->name == NULL) {
return;
}