diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-09-04 12:21:42 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:17:05 -0500 |
commit | 38fdde5d9bf15b10caa60ee216d278ba8d870c2e (patch) | |
tree | f5da0712c3bd704a0af17aa6d12d8c616a2d6e1b /source4/lib/ldb | |
parent | f6f4d868ea7d3a01ec28c6855240882911cae039 (diff) | |
download | samba-38fdde5d9bf15b10caa60ee216d278ba8d870c2e.tar.gz samba-38fdde5d9bf15b10caa60ee216d278ba8d870c2e.tar.bz2 samba-38fdde5d9bf15b10caa60ee216d278ba8d870c2e.zip |
r18031: Merge my replace fixes:
* libreplace can now build stand-alone
* add stub testsuite for libreplace
* make talloc/tdb/ldb use libreplace
(This used to be commit fe7ca4b1454e01a33ed0d53791ebffdd349298b4)
Diffstat (limited to 'source4/lib/ldb')
-rw-r--r-- | source4/lib/ldb/Makefile.in | 24 | ||||
-rwxr-xr-x | source4/lib/ldb/autogen.sh | 2 | ||||
-rw-r--r-- | source4/lib/ldb/config.mk | 30 | ||||
-rw-r--r-- | source4/lib/ldb/configure.in | 3 | ||||
-rw-r--r-- | source4/lib/ldb/include/includes.h | 14 | ||||
-rw-r--r-- | source4/lib/ldb/replace/config.m4 | 12 | ||||
-rw-r--r-- | source4/lib/ldb/replace/replace.c | 100 | ||||
-rw-r--r-- | source4/lib/ldb/replace/timegm.c | 72 |
8 files changed, 35 insertions, 222 deletions
diff --git a/source4/lib/ldb/Makefile.in b/source4/lib/ldb/Makefile.in index c13d3b4fe6..bc00c6b656 100644 --- a/source4/lib/ldb/Makefile.in +++ b/source4/lib/ldb/Makefile.in @@ -6,6 +6,7 @@ XSLTPROC = @XSLTPROC@ DOXYGEN = @DOXYGEN@ prefix = @prefix@ exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ includedir = @includedir@ libdir = @libdir@ bindir = @bindir@ @@ -21,20 +22,7 @@ CFLAGS=-I$(srcdir)/include -Iinclude -I$(srcdir) -I$(srcdir)/.. \ -I$(srcdir)/../tdb/include -I$(srcdir)/../tdb -I$(srcdir)/../talloc \ -DLIBDIR=\"$(libdir)\" -DSHLIBEXT=\"@SHLIBEXT@\" -DUSE_MMAP=1 @CFLAGS@ -LIB_FLAGS=-Llib -lldb @LIBS@ - -REPDIR=replace -REPLACE_OBJ=$(REPDIR)/replace.o $(REPDIR)/timegm.o - -TDBDIR=tdb -TDB_OBJ=$(TDBDIR)/common/tdb.o $(TDBDIR)/common/dump.o \ - $(TDBDIR)/common/io.o $(TDBDIR)/common/lock.o \ - $(TDBDIR)/common/open.o $(TDBDIR)/common/traverse.o \ - $(TDBDIR)/common/freelist.o $(TDBDIR)/common/error.o \ - $(TDBDIR)/common/transaction.o - -TALLOCDIR=talloc -TALLOC_OBJ=$(TALLOCDIR)/talloc.o +LIB_FLAGS=-L$(srcdir)/../tdb -L$(srcdir)/../talloc -Llib -lldb -ltdb -ltalloc @LIBS@ @REPLACE_LIB@ LDB_TDB_DIR=ldb_tdb LDB_TDB_OBJ=$(LDB_TDB_DIR)/ldb_tdb.o \ @@ -53,7 +41,7 @@ MODULES_OBJ=$(MODDIR)/operational.o $(MODDIR)/schema.o $(MODDIR)/rdn_name.o \ $(MODDIR)/objectclass.o \ $(MODDIR)/paged_results.o $(MODDIR)/sort.o $(MODDIR)/asq.o -OBJS = $(MODULES_OBJ) $(COMMON_OBJ) $(LDB_TDB_OBJ) $(TDB_OBJ) $(TALLOC_OBJ) $(EXTRA_OBJ) $(REPLACE_OBJ) +OBJS = $(MODULES_OBJ) $(COMMON_OBJ) $(LDB_TDB_OBJ) $(TDB_OBJ) $(TALLOC_OBJ) $(EXTRA_OBJ) LDB_LIB = lib/libldb.a @@ -63,7 +51,7 @@ LIBS = $(LDB_LIB) EXAMPLES = examples/ldbreader examples/ldifreader -DIRS = lib bin common replace ldb_tdb ldb_ldap ldb_sqlite3 modules tools examples tdb talloc +DIRS = lib bin common ldb_tdb ldb_ldap ldb_sqlite3 modules tools examples tdb talloc all: dirs $(OBJS) $(LDB_LIB) $(BINS) $(EXAMPLES) manpages @@ -159,3 +147,7 @@ etags: ctags: ctags `find $(srcdir) -name "*.[ch]"` + +@REPLACE_LIB@: + cd @REPLACE_DIR@ && ./autogen.sh && ./configure + $(MAKE) -C @REPLACE_DIR@ diff --git a/source4/lib/ldb/autogen.sh b/source4/lib/ldb/autogen.sh index 89053ad9f8..6050abce39 100755 --- a/source4/lib/ldb/autogen.sh +++ b/source4/lib/ldb/autogen.sh @@ -1,5 +1,7 @@ #!/bin/sh +rm -rf autom4te.cache/ + autoheader || exit 1 autoconf || exit 1 diff --git a/source4/lib/ldb/config.mk b/source4/lib/ldb/config.mk index 1f92cd5d62..8dff4df2dc 100644 --- a/source4/lib/ldb/config.mk +++ b/source4/lib/ldb/config.mk @@ -1,6 +1,7 @@ ################################################ # Start MODULE ldb_asq [MODULE::ldb_asq] +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_asq_init SUBSYSTEM = ldb OBJ_FILES = \ @@ -11,6 +12,7 @@ OBJ_FILES = \ ################################################ # Start MODULE ldb_server_sort [MODULE::ldb_server_sort] +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_sort_init SUBSYSTEM = ldb OBJ_FILES = \ @@ -22,6 +24,7 @@ OBJ_FILES = \ # Start MODULE ldb_paged_results [MODULE::ldb_paged_results] INIT_FUNCTION = ldb_paged_results_init +PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = ldb OBJ_FILES = \ modules/paged_results.o @@ -32,6 +35,7 @@ OBJ_FILES = \ # Start MODULE ldb_paged_results [MODULE::ldb_paged_searches] INIT_FUNCTION = ldb_paged_searches_init +PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = ldb OBJ_FILES = \ modules/paged_searches.o @@ -42,6 +46,7 @@ OBJ_FILES = \ # Start MODULE ldb_operational [MODULE::ldb_operational] SUBSYSTEM = ldb +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_operational_init OBJ_FILES = \ modules/operational.o @@ -52,6 +57,7 @@ OBJ_FILES = \ # Start MODULE ldb_objectclass [MODULE::ldb_objectclass] INIT_FUNCTION = ldb_objectclass_init +PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = ldb OBJ_FILES = \ modules/objectclass.o @@ -62,6 +68,7 @@ OBJ_FILES = \ # Start MODULE ldb_rdn_name [MODULE::ldb_rdn_name] SUBSYSTEM = ldb +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_rdn_name_init OBJ_FILES = \ modules/rdn_name.o @@ -82,6 +89,7 @@ OBJ_FILES = \ # Start MODULE ldb_ildap [MODULE::ldb_ildap] SUBSYSTEM = ldb +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_ildap_init ALIASES = ldapi ldaps ldap OBJ_FILES = \ @@ -94,6 +102,7 @@ PUBLIC_DEPENDENCIES = \ ################################################ # Start MODULE ldb_map [MODULE::ldb_map] +PRIVATE_DEPENDENCIES = LIBTALLOC SUBSYSTEM = ldb OBJ_FILES = \ modules/ldb_map_inbound.o \ @@ -106,6 +115,7 @@ OBJ_FILES = \ # Start MODULE ldb_skel [MODULE::ldb_skel] SUBSYSTEM = ldb +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_skel_init OBJ_FILES = modules/skel.o # End MODULE ldb_skel @@ -115,11 +125,12 @@ OBJ_FILES = modules/skel.o # Start MODULE ldb_sqlite3 [MODULE::ldb_sqlite3] SUBSYSTEM = ldb +PRIVATE_DEPENDENCIES = LIBTALLOC INIT_FUNCTION = ldb_sqlite3_init OBJ_FILES = \ ldb_sqlite3/ldb_sqlite3.o PUBLIC_DEPENDENCIES = \ - SQLITE3 + SQLITE3 LIBTALLOC # End MODULE ldb_sqlite3 ################################################ @@ -136,23 +147,13 @@ OBJ_FILES = \ ldb_tdb/ldb_cache.o \ ldb_tdb/ldb_tdb_wrap.o PUBLIC_DEPENDENCIES = \ - LIBTDB + LIBTDB LIBTALLOC # End MODULE ldb_tdb ################################################ -################################################ -# Start MODULE ldb_replace -[MODULE::ldb_replace] -SUBSYSTEM = ldb -OBJ_FILES = \ - replace/timegm.o \ - replace/replace.o -# End MODULE ldb_replace -################################################ - ./lib/ldb/common/ldb_modules.o: lib/ldb/common/ldb_modules.c Makefile @echo Compiling $< - @$(CC) $(CFLAGS) $(PICFLAG) -DMODULESDIR=\"$(MODULESDIR)/ldb\" -DSHLIBEXT=\"$(SHLIBEXT)\" -c $< -o $@ + @$(CC) -Iinclude $(CFLAGS) -Ilib/talloc -Ilib/ldb $(PICFLAG) -DLDBMODULESDIR=\"$(MODULESDIR)/ldb\" -DSHLIBEXT=\"$(SHLIBEXT)\" -c $< -o $@ ################################################ # Start SUBSYSTEM ldb @@ -186,6 +187,7 @@ PUBLIC_HEADERS = include/ldb.h include/ldb_errors.h ################################################ # Start SUBSYSTEM LDBSAMBA [SUBSYSTEM::LDBSAMBA] +PRIVATE_DEPENDENCIES = ldb PRIVATE_PROTO_HEADER = samba/ldif_handlers.h PUBLIC_DEPENDENCIES = LIBSECURITY SAMDB OBJ_FILES = \ @@ -199,7 +201,7 @@ OBJ_FILES = \ OBJ_FILES= \ tools/cmdline.o PUBLIC_DEPENDENCIES = ldb LIBSAMBA-UTIL LIBPOPT POPT_SAMBA POPT_CREDENTIALS -PRIVATE_DEPENDENCIES = gensec +PRIVATE_DEPENDENCIES = gensec # End SUBSYSTEM LIBLDB_CMDLINE ################################################ diff --git a/source4/lib/ldb/configure.in b/source4/lib/ldb/configure.in index 4f8640ec67..5ef3d1cc96 100644 --- a/source4/lib/ldb/configure.in +++ b/source4/lib/ldb/configure.in @@ -70,6 +70,9 @@ fi AC_SUBST(TESTS) AC_SUBST(EXTRA_OBJ) +sinclude(replace.m4) +SMB_REPLACE_FUNCS(strtoll) + sinclude(config.m4) sinclude(../talloc/config.m4) sinclude(../tdb/config.m4) diff --git a/source4/lib/ldb/include/includes.h b/source4/lib/ldb/include/includes.h index 31997d6008..0a73f7728f 100644 --- a/source4/lib/ldb/include/includes.h +++ b/source4/lib/ldb/include/includes.h @@ -6,19 +6,19 @@ #ifdef _SAMBA_BUILD_ -#include "system/filesys.h" -#include "system/locale.h" -#include "system/time.h" - /* tell ldb we have the internal ldap code */ #define HAVE_ILDAP 1 -#else /*_SAMBA_BUILD_*/ +#else +#include "config.h" +#endif /*_SAMBA_BUILD_*/ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif -#include "config.h" +#ifdef HAVE_REPLACE_H +#include "replace.h" +#endif #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -51,8 +51,6 @@ typedef int (*comparison_fn_t)(const void *, const void *); #include "talloc.h" -#endif /*_SAMBA_BUILD_*/ - #include "ldb.h" #include "ldb_errors.h" #include "ldb_private.h" diff --git a/source4/lib/ldb/replace/config.m4 b/source4/lib/ldb/replace/config.m4 deleted file mode 100644 index 2d21d1b315..0000000000 --- a/source4/lib/ldb/replace/config.m4 +++ /dev/null @@ -1,12 +0,0 @@ -AC_CHECK_HEADERS([stdint.h inttypes.h]) -AC_CHECK_TYPE(uint8_t, unsigned char) -AC_CHECK_TYPE(int64_t, long long) -AC_CHECK_TYPE(uint64_t, unsigned long long) -AC_CHECK_TYPE(comparison_fn_t, -[AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])]) - -AC_CHECK_FUNCS(strerror timegm strnlen setenv) -AC_CHECK_FUNCS(strtoull __strtoull strtouq strtoll __strtoll strtoq) -AC_HAVE_DECL(errno, [#include <errno.h>]) - -AC_CHECK_HEADERS(strings.h) diff --git a/source4/lib/ldb/replace/replace.c b/source4/lib/ldb/replace/replace.c deleted file mode 100644 index a63613fc10..0000000000 --- a/source4/lib/ldb/replace/replace.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - Unix SMB/CIFS implementation. - - replacement routines for broken systems - - Copyright (C) Andrew Tridgell 1992-2006 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include "includes.h" -#include "ldb/include/includes.h" - -#if !defined(HAVE_STRNLEN) && !defined(_SAMBA_BUILD_) -/** - Some platforms don't have strnlen -**/ - size_t strnlen(const char *s, size_t n) -{ - int i; - for (i=0; s[i] && i<n; i++) - /* noop */ ; - return i; -} -#endif - -#ifndef HAVE_STRTOLL - long long int strtoll(const char *str, char **endptr, int base) -{ -#ifdef HAVE_STRTOQ - return strtoq(str, endptr, base); -#elif defined(HAVE___STRTOLL) - return __strtoll(str, endptr, base); -#elif SIZEOF_LONG == SIZEOF_LONG_LONG - return (long long int) strtol(str, endptr, base); -#else -# error "You need a strtoll function" -#endif -} -#endif - - -#ifndef HAVE_STRTOULL - unsigned long long int strtoull(const char *str, char **endptr, int base) -{ -#ifdef HAVE_STRTOUQ - return strtouq(str, endptr, base); -#elif defined(HAVE___STRTOULL) - return __strtoull(str, endptr, base); -#elif SIZEOF_LONG == SIZEOF_LONG_LONG - return (unsigned long long int) strtoul(str, endptr, base); -#else -# error "You need a strtoull function" -#endif -} -#endif - -#ifndef HAVE_SETENV - int setenv(const char *name, const char *value, int overwrite) -{ - char *p; - size_t l1, l2; - int ret; - - if (!overwrite && getenv(name)) { - return 0; - } - - l1 = strlen(name); - l2 = strlen(value); - - p = malloc(l1+l2+2); - if (p == NULL) { - return -1; - } - memcpy(p, name, l1); - p[l1] = '='; - memcpy(p+l1+1, value, l2); - p[l1+l2+1] = 0; - - ret = putenv(p); - if (ret != 0) { - free(p); - } - - return ret; -} -#endif diff --git a/source4/lib/ldb/replace/timegm.c b/source4/lib/ldb/replace/timegm.c deleted file mode 100644 index 5fb15475f3..0000000000 --- a/source4/lib/ldb/replace/timegm.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 1997 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - adapted for Samba4 by Andrew Tridgell -*/ - -#include "includes.h" -#include "ldb/include/includes.h" - -#ifndef HAVE_TIMEGM - -static int is_leap(unsigned y) -{ - y += 1900; - return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0); -} - -time_t timegm(struct tm *tm) -{ - static const unsigned ndays[2][12] ={ - {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, - {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; - time_t res = 0; - unsigned i; - - for (i = 70; i < tm->tm_year; ++i) - res += is_leap(i) ? 366 : 365; - - for (i = 0; i < tm->tm_mon; ++i) - res += ndays[is_leap(tm->tm_year)][i]; - res += tm->tm_mday - 1; - res *= 24; - res += tm->tm_hour; - res *= 60; - res += tm->tm_min; - res *= 60; - res += tm->tm_sec; - return res; -} - -#endif /* HAVE_TIMEGM */ |