summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-05-28 17:35:12 +1000
committerAndrew Tridgell <tridge@samba.org>2009-05-28 17:35:12 +1000
commit08be1420ba52ef9bba90d0f811c7810841ee8568 (patch)
tree9bd4ffe0f5d466cbde510686a1b1e0d7b0d4d6a9
parent5ab03dbecc33320e23304b126f26bde3f6bc6c7d (diff)
downloadsamba-08be1420ba52ef9bba90d0f811c7810841ee8568.tar.gz
samba-08be1420ba52ef9bba90d0f811c7810841ee8568.tar.bz2
samba-08be1420ba52ef9bba90d0f811c7810841ee8568.zip
fixed tdbbackup to give tdb error messages
-rw-r--r--lib/tdb/tools/tdbbackup.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/lib/tdb/tools/tdbbackup.c b/lib/tdb/tools/tdbbackup.c
index 83c0e16399..6aca8dd99c 100644
--- a/lib/tdb/tools/tdbbackup.c
+++ b/lib/tdb/tools/tdbbackup.c
@@ -53,6 +53,21 @@
static int failed;
+static struct tdb_logging_context log_ctx;
+
+#ifdef PRINTF_ATTRIBUTE
+static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, const char *format, ...) PRINTF_ATTRIBUTE(3,4);
+#endif
+static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ vfprintf(stdout, format, ap);
+ va_end(ap);
+ fflush(stdout);
+}
+
static char *add_suffix(const char *name, const char *suffix)
{
char *ret;
@@ -107,7 +122,8 @@ static int backup_tdb(const char *old_name, const char *new_name, int hash_size)
}
/* open the old tdb */
- tdb = tdb_open(old_name, 0, 0, O_RDWR, 0);
+ tdb = tdb_open_ex(old_name, 0, 0,
+ O_RDWR, 0, &log_ctx, NULL);
if (!tdb) {
printf("Failed to open %s\n", old_name);
free(tmp_name);
@@ -116,10 +132,11 @@ static int backup_tdb(const char *old_name, const char *new_name, int hash_size)
/* create the new tdb */
unlink(tmp_name);
- tdb_new = tdb_open(tmp_name,
- hash_size ? hash_size : tdb_hash_size(tdb),
- TDB_DEFAULT, O_RDWR|O_CREAT|O_EXCL,
- st.st_mode & 0777);
+ tdb_new = tdb_open_ex(tmp_name,
+ hash_size ? hash_size : tdb_hash_size(tdb),
+ TDB_DEFAULT,
+ O_RDWR|O_CREAT|O_EXCL, st.st_mode & 0777,
+ &log_ctx, NULL);
if (!tdb_new) {
perror(tmp_name);
free(tmp_name);
@@ -170,7 +187,11 @@ static int backup_tdb(const char *old_name, const char *new_name, int hash_size)
/* close the new tdb and re-open read-only */
tdb_close(tdb_new);
- tdb_new = tdb_open(tmp_name, 0, TDB_DEFAULT, O_RDONLY, 0);
+ tdb_new = tdb_open_ex(tmp_name,
+ 0,
+ TDB_DEFAULT,
+ O_RDONLY, 0,
+ &log_ctx, NULL);
if (!tdb_new) {
fprintf(stderr,"failed to reopen %s\n", tmp_name);
unlink(tmp_name);
@@ -211,7 +232,8 @@ static int verify_tdb(const char *fname, const char *bak_name)
int count = -1;
/* open the tdb */
- tdb = tdb_open(fname, 0, 0, O_RDONLY, 0);
+ tdb = tdb_open_ex(fname, 0, 0,
+ O_RDONLY, 0, &log_ctx, NULL);
/* traverse the tdb, then close it */
if (tdb) {
@@ -264,6 +286,8 @@ static void usage(void)
int hashsize = 0;
const char *suffix = ".bak";
+ log_ctx.log_fn = tdb_log;
+
while ((c = getopt(argc, argv, "vhs:n:")) != -1) {
switch (c) {
case 'h':