summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/include
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-06-18 07:42:21 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:18:24 -0500
commited3d8091ce2b2014350a2f7f22202dde6846a130 (patch)
tree8c1d6ee74907c2c0c2e82b9476ad1db08d7a2179 /source4/lib/ldb/include
parentd4d6d0d2e54510690fa3f868ad02625bc24e5b9d (diff)
downloadsamba-ed3d8091ce2b2014350a2f7f22202dde6846a130.tar.gz
samba-ed3d8091ce2b2014350a2f7f22202dde6846a130.tar.bz2
samba-ed3d8091ce2b2014350a2f7f22202dde6846a130.zip
r7709: - convert ldb to use popt, so that it can interact with the samba
cmdline credentials code (which will be done soon) - added a ldb_init() call, and changed ldb_connect() to take a ldb context. This allows for much better error handling in ldb_connect(), and also made the popt conversion easier - fixed up all the existing backends with the new syntax - improved error handling in *_connect() - fixed a crash bug in the new case_fold_required() code - ensured that ltdb_rename() and all ltdb_search() paths get the read lock - added a ldb_oom() macro to make it easier to report out of memory situations in ldb code (This used to be commit f648fdf187669d6d87d01dd4e786b03cd420f220)
Diffstat (limited to 'source4/lib/ldb/include')
-rw-r--r--source4/lib/ldb/include/ldb.h7
-rw-r--r--source4/lib/ldb/include/ldb_private.h33
2 files changed, 24 insertions, 16 deletions
diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h
index fabaec5da2..ecfa77f436 100644
--- a/source4/lib/ldb/include/ldb.h
+++ b/source4/lib/ldb/include/ldb.h
@@ -184,6 +184,10 @@ struct ldb_parse_tree *ldb_parse_tree(void *mem_ctx, const char *s);
char *ldb_filter_from_tree(void *mem_ctx, struct ldb_parse_tree *tree);
char *ldb_binary_encode(void *ctx, struct ldb_val val);
+/*
+ initialise a ldb context
+*/
+struct ldb_context *ldb_init(void *mem_ctx);
/*
connect to a database. The URL can either be one of the following forms
@@ -195,8 +199,7 @@ char *ldb_binary_encode(void *ctx, struct ldb_val val);
the options are passed uninterpreted to the backend, and are
backend specific
*/
-struct ldb_context *ldb_connect(const char *url, unsigned int flags,
- const char *options[]);
+int ldb_connect(struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[]);
/*
search the database given a LDAP-like search expression
diff --git a/source4/lib/ldb/include/ldb_private.h b/source4/lib/ldb/include/ldb_private.h
index 4acdd543f2..76a43cdbc2 100644
--- a/source4/lib/ldb/include/ldb_private.h
+++ b/source4/lib/ldb/include/ldb_private.h
@@ -86,6 +86,11 @@ typedef struct ldb_module *(*ldb_module_init_function)(struct ldb_context *ldb,
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
#endif
+/*
+ simplify out of memory handling
+*/
+#define ldb_oom(ldb) ldb_debug(ldb, LDB_DEBUG_FATAL, "ldb out of memory at %s:%d\n", __FILE__, __LINE__)
+
/* The following definitions come from lib/ldb/common/ldb_modules.c */
int ldb_load_modules(struct ldb_context *ldb, const char *options[]);
@@ -114,21 +119,21 @@ void ldb_debug(struct ldb_context *ldb, enum ldb_debug_level level, const char *
char *ldb_base64_encode(struct ldb_context *ldb, const char *buf, int len);
int ldb_should_b64_encode(const struct ldb_val *val);
-struct ldb_context *ltdb_connect(const char *url,
- unsigned int flags,
- const char *options[]);
-struct ldb_context *lldb_connect(const char *url,
- unsigned int flags,
- const char *options[]);
-struct ldb_context *ildb_connect(const char *url,
- unsigned int flags,
- const char *options[]);
-struct ldb_context *lsqlite3_connect(const char *url,
- unsigned int flags,
- const char *options[]);
+int ltdb_connect(struct ldb_context *ldb, const char *url,
+ unsigned int flags,
+ const char *options[]);
+int lldb_connect(struct ldb_context *ldb, const char *url,
+ unsigned int flags,
+ const char *options[]);
+int ildb_connect(struct ldb_context *ldb,
+ const char *url,
+ unsigned int flags,
+ const char *options[]);
+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 *schema_module_init(struct ldb_context *ldb, const char *options[]);
-const char **ldb_options_parse(const char **options, int *ldbopts, const char *arg);
-
#endif