r10918: - fixed standalone ldb build
authorAndrew Tridgell <tridge@samba.org>
Wed, 12 Oct 2005 08:51:12 +0000 (08:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:39:43 +0000 (13:39 -0500)
- added note about allowedAttributesEffective (will be needed for mmc)

- fixed some more ldb warnings
(This used to be commit e9e4d81b6976549db8a7668572a5da466fbec4a9)

source4/lib/ldb/Makefile.in
source4/lib/ldb/common/ldb_dn.c
source4/lib/ldb/common/ldb_msg.c
source4/lib/ldb/config.mk
source4/lib/ldb/include/ldb.h
source4/lib/ldb/include/ldb_private.h
source4/lib/ldb/modules/operational.c
source4/lib/ldb/modules/timestamps.c [deleted file]

index 2ffe6d25b897b65f75066881276147d6b114f8d7..f7e4b234ee11cf8ce850acaa34b1b877868978a5 100644 (file)
@@ -59,7 +59,7 @@ COMMON_OBJ=common/ldb.o common/ldb_ldif.o \
           common/ldb_dn.o common/ldb_match.o common/ldb_attributes.o \
           common/attrib_handlers.o
 
           common/ldb_dn.o common/ldb_match.o common/ldb_attributes.o \
           common/attrib_handlers.o
 
-MODULES_OBJ=modules/timestamps.o modules/schema.o modules/rdn_name.o \
+MODULES_OBJ=modules/operational.o modules/schema.o modules/rdn_name.o \
                        modules/ldb_map.o
 
 OBJS =  $(MODULES_OBJ) $(COMMON_OBJ) $(LDB_TDB_OBJ) $(TDB_OBJ) $(TALLOC_OBJ) $(LDB_LDAP_OBJ) $(LDB_SQLITE3_OBJ)
                        modules/ldb_map.o
 
 OBJS =  $(MODULES_OBJ) $(COMMON_OBJ) $(LDB_TDB_OBJ) $(TDB_OBJ) $(TALLOC_OBJ) $(LDB_LDAP_OBJ) $(LDB_SQLITE3_OBJ)
index 92e06025d50423295b503ce1f99ecf8bdb00909c..b497de142bd8993474f75e4694dcf23ae1eaaa09 100644 (file)
@@ -127,7 +127,7 @@ static struct ldb_val ldb_dn_unescape_value(void *mem_ctx, const char *src)
        unsigned x;
        char *p, *dst = NULL, *end;
 
        unsigned x;
        char *p, *dst = NULL, *end;
 
-       value.length = 0;
+       memset(&value, 0, sizeof(value));
 
        LDB_DN_NULL_FAILED(src);
 
 
        LDB_DN_NULL_FAILED(src);
 
@@ -276,8 +276,9 @@ static struct ldb_dn_component ldb_dn_explode_component(void *mem_ctx, char *raw
        char *p;
        int ret, qs, qe;
 
        char *p;
        int ret, qs, qe;
 
+       memset(&dc, 0, sizeof(dc));
+
        if (raw_component == NULL) {
        if (raw_component == NULL) {
-               dc.name = NULL;
                return dc;
        }
 
                return dc;
        }
 
@@ -618,8 +619,8 @@ char *ldb_dn_linearize_casefold(struct ldb_context *ldb, const struct ldb_dn *ed
 static struct ldb_dn_component ldb_dn_copy_component(void *mem_ctx, struct ldb_dn_component *src)
 {
        struct ldb_dn_component dst;
 static struct ldb_dn_component ldb_dn_copy_component(void *mem_ctx, struct ldb_dn_component *src)
 {
        struct ldb_dn_component dst;
-       
-       dst.name = NULL;
+
+       memset(&dst, 0, sizeof(dst));
 
        if (src == NULL) {
                return dst;
 
        if (src == NULL) {
                return dst;
index a72a4616fbe3113214bd1a6ca19157ef12cd8f77..977f68144b0944207d39b3095580a5d8b164493a 100644 (file)
@@ -646,7 +646,7 @@ time_t ldb_string_to_time(const char *s)
        
        if (s == NULL) return 0;
        
        
        if (s == NULL) return 0;
        
-       ZERO_STRUCT(tm);
+       memset(&tm, 0, sizeof(tm));
        if (sscanf(s, "%04u%02u%02u%02u%02u%02u", 
                   &tm.tm_year, &tm.tm_mon, &tm.tm_mday, 
                   &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
        if (sscanf(s, "%04u%02u%02u%02u%02u%02u", 
                   &tm.tm_year, &tm.tm_mon, &tm.tm_mday, 
                   &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
index cdb0e171e5fe5202d5d2a9b455773619aa3e528f..205ddc972c00fd3761b21cdee310bc60725dec94 100644 (file)
@@ -1,12 +1,3 @@
-################################################
-# Start MODULE libldb_timestamps
-[MODULE::libldb_timestamps]
-SUBSYSTEM = LIBLDB
-INIT_OBJ_FILES = \
-               lib/ldb/modules/timestamps.o
-# End MODULE libldb_timestamps
-################################################
-
 ################################################
 # Start MODULE libldb_operational
 [MODULE::libldb_operational]
 ################################################
 # Start MODULE libldb_operational
 [MODULE::libldb_operational]
index 3629d9ec473aeef689f8714047de2572d37ffadc..adc8a3e061e83a40e1ae86ae30d2cf50b60fbef7 100644 (file)
@@ -453,7 +453,7 @@ const char *ldb_msg_find_string(const struct ldb_message *msg,
 
 void ldb_msg_sort_elements(struct ldb_message *msg);
 
 
 void ldb_msg_sort_elements(struct ldb_message *msg);
 
-struct ldb_message *ldb_msg_copy_shallow(TALLOC_CTX *mem_ctx, 
+struct ldb_message *ldb_msg_copy_shallow(void *mem_ctx, 
                                         const struct ldb_message *msg);
 struct ldb_message *ldb_msg_copy(void *mem_ctx, 
                                 const struct ldb_message *msg);
                                         const struct ldb_message *msg);
 struct ldb_message *ldb_msg_copy(void *mem_ctx, 
                                 const struct ldb_message *msg);
@@ -489,7 +489,7 @@ const struct ldb_attrib_handler *ldb_attrib_handler(struct ldb_context *ldb,
                                                    const char *attrib);
 
 
                                                    const char *attrib);
 
 
-const char **ldb_attr_list_copy(TALLOC_CTX *mem_ctx, const char * const *attrs);
+const char **ldb_attr_list_copy(void *mem_ctx, const char * const *attrs);
 int ldb_attr_in_list(const char * const *attrs, const char *attr);
 
 
 int ldb_attr_in_list(const char * const *attrs, const char *attr);
 
 
@@ -500,7 +500,7 @@ void ldb_parse_tree_attr_replace(struct ldb_parse_tree *tree,
 int ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace);
 int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *replace);
 
 int ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace);
 int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *replace);
 
-char *ldb_timestring(TALLOC_CTX *mem_ctx, time_t t);
+char *ldb_timestring(void *mem_ctx, time_t t);
 time_t ldb_string_to_time(const char *s);
 
 #endif
 time_t ldb_string_to_time(const char *s);
 
 #endif
index e444b7235a0df60dd60c5dd8961fc26a6983fea4..3fb73a93b74ad63106b50200347544ee32957024 100644 (file)
@@ -165,7 +165,7 @@ int lsqlite3_connect(struct ldb_context *ldb,
                     const char *url, 
                     unsigned int flags, 
                     const char *options[]);
                     const char *url, 
                     unsigned int flags, 
                     const char *options[]);
-struct ldb_module *timestamps_module_init(struct ldb_context *ldb, const char *options[]);
+struct ldb_module *operational_module_init(struct ldb_context *ldb, const char *options[]);
 struct ldb_module *schema_module_init(struct ldb_context *ldb, const char *options[]);
 struct ldb_module *rdn_name_module_init(struct ldb_context *ldb, const char *options[]);
 
 struct ldb_module *schema_module_init(struct ldb_context *ldb, const char *options[]);
 struct ldb_module *rdn_name_module_init(struct ldb_context *ldb, const char *options[]);
 
index 09f9a9e62ce9f9b8149aee518c64691e252bca94..c40936df07d72f44cc6b73e3505210ded12be46b 100644 (file)
      for this one we do the search as normal, then if requested ask
      for objectclass, change the attribute name, and add it
 
      for this one we do the search as normal, then if requested ask
      for objectclass, change the attribute name, and add it
 
+  allowedAttributesEffective: HIDDEN, CONSTRUCTED, not-searchable, 
+     list of attributes that can be modified - requires schema lookup
+
+
   attributeTypes: in schema only
   objectClasses: in schema only
   matchingRules: in schema only
   attributeTypes: in schema only
   objectClasses: in schema only
   matchingRules: in schema only
diff --git a/source4/lib/ldb/modules/timestamps.c b/source4/lib/ldb/modules/timestamps.c
deleted file mode 100644 (file)
index 8451da2..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/* 
-   ldb database library
-
-   Copyright (C) Simo Sorce  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 2 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, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-/*
- *  Name: ldb
- *
- *  Component: ldb timestamps module
- *
- *  Description: add object timestamping functionality
- *
- *  Author: Simo Sorce
- */
-
-#include "includes.h"
-#include "ldb/include/ldb.h"
-#include "ldb/include/ldb_private.h"
-#include <time.h>
-
-static int timestamps_search_bytree(struct ldb_module *module, const struct ldb_dn *base,
-                                   enum ldb_scope scope, struct ldb_parse_tree *tree,
-                                   const char * const *attrs, struct ldb_message ***res)
-{
-       ldb_debug(module->ldb, LDB_DEBUG_TRACE, "timestamps_search\n");
-       return ldb_next_search_bytree(module, base, scope, tree, attrs, res);
-}
-
-static int add_time_element(struct ldb_module *module, struct ldb_message *msg, 
-                           const char *attr_name, const char *time_string, unsigned int flags)
-{
-       struct ldb_message_element *attribute = NULL;
-
-       int i;
-
-       for (i = 0; i < msg->num_elements; i++) {
-               if (ldb_attr_cmp(msg->elements[i].name, attr_name) == 0) {
-                       return 0;
-               }
-       }
-
-       if (ldb_msg_add_string(msg, attr_name, time_string) != 0) {
-               return -1;
-       }
-
-       for (i = 0; i < msg->num_elements; i++) {
-               if (ldb_attr_cmp(attr_name, msg->elements[i].name) == 0) {
-                       attribute = &msg->elements[i];
-                       break;
-               }
-       }
-
-       if (!attribute) {
-               return -1;
-       }
-
-       attribute->flags = flags;
-
-       return 0;
-}
-
-/* add_record: add crateTimestamp/modifyTimestamp attributes */
-static int timestamps_add_record(struct ldb_module *module, const struct ldb_message *msg)
-{
-       struct ldb_message *msg2 = NULL;
-       struct tm *tm;
-       char *timestr;
-       time_t timeval;
-       int ret, i;
-
-       ldb_debug(module->ldb, LDB_DEBUG_TRACE, "timestamps_add_record\n");
-
-       /* do not manipulate our control entries */
-       if (ldb_dn_is_special(msg->dn)) {
-               return ldb_next_add_record(module, msg);
-       }
-
-       timeval = time(NULL);
-       tm = gmtime(&timeval);
-       if (!tm) {
-               return -1;
-       }
-
-       msg2 = talloc(module, struct ldb_message);
-       if (!msg2) {
-               return -1;
-       }
-
-       /* formatted like: 20040408072012.0Z */
-       timestr = talloc_asprintf(msg2, "%04u%02u%02u%02u%02u%02u.0Z",
-                                 tm->tm_year+1900, tm->tm_mon+1,
-                                 tm->tm_mday, tm->tm_hour, tm->tm_min,
-                                 tm->tm_sec);
-       if (!timestr) {
-               return -1;
-       }
-
-       msg2->dn = msg->dn;
-       msg2->num_elements = msg->num_elements;
-       msg2->private_data = msg->private_data;
-       msg2->elements = talloc_array(msg2, struct ldb_message_element, msg2->num_elements);
-       for (i = 0; i < msg2->num_elements; i++) {
-               msg2->elements[i] = msg->elements[i];
-       }
-
-       add_time_element(module, msg2, "createTimestamp", timestr, LDB_FLAG_MOD_ADD);
-       add_time_element(module, msg2, "modifyTimestamp", timestr, LDB_FLAG_MOD_ADD);
-       add_time_element(module, msg2, "whenCreated", timestr, LDB_FLAG_MOD_ADD);
-       add_time_element(module, msg2, "whenChanged", timestr, LDB_FLAG_MOD_ADD);
-
-       if (msg2) {
-               ret = ldb_next_add_record(module, msg2);
-               talloc_free(msg2);
-       } else {
-               ret = ldb_next_add_record(module, msg);
-       }
-
-       return ret;
-}
-
-/* modify_record: change modifyTimestamp as well */
-static int timestamps_modify_record(struct ldb_module *module, const struct ldb_message *msg)
-{
-       struct ldb_message *msg2 = NULL;
-       struct tm *tm;
-       char *timestr;
-       time_t timeval;
-       int ret, i;
-
-       ldb_debug(module->ldb, LDB_DEBUG_TRACE, "timestamps_modify_record\n");
-
-       /* do not manipulate our control entries */
-       if (ldb_dn_is_special(msg->dn)) {
-               return ldb_next_modify_record(module, msg);
-       }
-
-       timeval = time(NULL);
-       tm = gmtime(&timeval);
-       if (!tm) {
-               return -1;
-       }
-
-       msg2 = talloc(module, struct ldb_message);
-       if (!msg2) {
-               return -1;
-       }
-
-       /* formatted like: 20040408072012.0Z */
-       timestr = talloc_asprintf(msg2, 
-                               "%04u%02u%02u%02u%02u%02u.0Z",
-                               tm->tm_year+1900, tm->tm_mon+1,
-                               tm->tm_mday, tm->tm_hour, tm->tm_min,
-                               tm->tm_sec);
-       if (!timestr) {
-               return -1;
-       }
-
-       msg2->dn = msg->dn;
-       msg2->num_elements = msg->num_elements;
-       msg2->private_data = msg->private_data;
-       msg2->elements = talloc_array(msg2, struct ldb_message_element, msg2->num_elements);
-       for (i = 0; i < msg2->num_elements; i++) {
-               msg2->elements[i] = msg->elements[i];
-       }
-
-       add_time_element(module, msg2, "modifyTimestamp", timestr, LDB_FLAG_MOD_REPLACE);
-       add_time_element(module, msg2, "whenChanged", timestr, LDB_FLAG_MOD_REPLACE);
-
-       ret = ldb_next_modify_record(module, msg2);
-       talloc_free(msg2);
-
-       return ret;
-}
-
-
-static const struct ldb_module_ops timestamps_ops = {
-       .name              = "timestamps",
-       .search_bytree     = timestamps_search_bytree,
-       .add_record        = timestamps_add_record,
-       .modify_record     = timestamps_modify_record
-};
-
-
-/* the init function */
-#ifdef HAVE_DLOPEN_DISABLED
- struct ldb_module *init_module(struct ldb_context *ldb, const char *options[])
-#else
-struct ldb_module *timestamps_module_init(struct ldb_context *ldb, const char *options[])
-#endif
-{
-       struct ldb_module *ctx;
-
-       ctx = talloc(ldb, struct ldb_module);
-       if (!ctx)
-               return NULL;
-
-       ctx->private_data = NULL;
-       ctx->ldb = ldb;
-       ctx->prev = ctx->next = NULL;
-       ctx->ops = &timestamps_ops;
-
-       return ctx;
-}