summaryrefslogtreecommitdiff
path: root/source3/lib/dbwrap/dbwrap.c
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-07-07 17:42:08 +0200
committerMichael Adam <obnox@samba.org>2011-07-29 13:34:22 +0200
commit0b5c4a601a983aab06e4aba158cd9359babd1e71 (patch)
tree8e2806398d731036115661a88867be107783e538 /source3/lib/dbwrap/dbwrap.c
parentd4c93ca721d0edd8780ce84e7cccd0e5a1ea4f37 (diff)
downloadsamba-0b5c4a601a983aab06e4aba158cd9359babd1e71.tar.gz
samba-0b5c4a601a983aab06e4aba158cd9359babd1e71.tar.bz2
samba-0b5c4a601a983aab06e4aba158cd9359babd1e71.zip
s3:dbwrap: move all .c and .h files of dbwrap to lib/dbwrap/
Autobuild-User: Michael Adam <obnox@samba.org> Autobuild-Date: Fri Jul 29 13:34:22 CEST 2011 on sn-devel-104
Diffstat (limited to 'source3/lib/dbwrap/dbwrap.c')
-rw-r--r--source3/lib/dbwrap/dbwrap.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/source3/lib/dbwrap/dbwrap.c b/source3/lib/dbwrap/dbwrap.c
new file mode 100644
index 0000000000..6a6d4c64e5
--- /dev/null
+++ b/source3/lib/dbwrap/dbwrap.c
@@ -0,0 +1,66 @@
+/*
+ Unix SMB/CIFS implementation.
+ Database interface wrapper
+ Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2006
+
+ Major code contributions from Aleksey Fedoseev (fedoseev@ru.ibm.com)
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "dbwrap/dbwrap.h"
+#include "dbwrap/dbwrap_private.h"
+
+/*
+ * Fall back using fetch_locked if no genuine fetch operation is provided
+ */
+
+int dbwrap_fallback_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
+ TDB_DATA key, TDB_DATA *data)
+{
+ struct db_record *rec;
+
+ if (!(rec = db->fetch_locked(db, mem_ctx, key))) {
+ return -1;
+ }
+
+ data->dsize = rec->value.dsize;
+ data->dptr = talloc_move(mem_ctx, &rec->value.dptr);
+ TALLOC_FREE(rec);
+ return 0;
+}
+
+/*
+ * Fall back using fetch if no genuine parse operation is provided
+ */
+
+int dbwrap_fallback_parse_record(struct db_context *db, TDB_DATA key,
+ int (*parser)(TDB_DATA key,
+ TDB_DATA data,
+ void *private_data),
+ void *private_data)
+{
+ TDB_DATA data;
+ int res;
+
+ res = db->fetch(db, talloc_tos(), key, &data);
+ if (res != 0) {
+ return res;
+ }
+
+ res = parser(key, data, private_data);
+ TALLOC_FREE(data.dptr);
+ return res;
+}