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
 
-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)
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;
 
-       value.length = 0;
+       memset(&value, 0, sizeof(value));
 
        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;
 
+       memset(&dc, 0, sizeof(dc));
+
        if (raw_component == NULL) {
-               dc.name = NULL;
                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;
-       
-       dst.name = NULL;
+
+       memset(&dst, 0, sizeof(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;
        
-       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) {
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]
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);
 
-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);
@@ -489,7 +489,7 @@ const struct ldb_attrib_handler *ldb_attrib_handler(struct ldb_context *ldb,
                                                    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);
 
 
@@ -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);
 
-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
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[]);
-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[]);
 
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
 
+  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
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;
-}