fixed internal handling of attribute deletion
authorAndrew Tridgell <tridge@samba.org>
Tue, 7 Apr 2009 06:33:54 +0000 (16:33 +1000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 7 Apr 2009 06:33:54 +0000 (16:33 +1000)
source4/lib/ldb/common/ldb_attributes.c

index cf45e8ef28a5af152730fc08930713d2157a7668..79c5dd69de43f0485abaf6e9a1633fbcccb3fb4e 100644 (file)
@@ -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;
        }