tdb2: Hand error code to logging function.
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 13 Sep 2011 21:42:13 +0000 (07:12 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 13 Sep 2011 21:42:13 +0000 (07:12 +0930)
Since we've deprecated tdb_error() function (and it didn't work right
from inside the logging function anyway, since we didn't set
tdb->ecode yet) we need to hand it to the log function.

(Imported from CCAN commit 6e3d9e8a66bf8b45150500f176452ee8e9ee9927)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/tdb2/private.h
lib/tdb2/tdb.c
lib/tdb2/tdb2.h
lib/tdb2/test/logging.c
lib/tdb2/test/logging.h
lib/tdb2/test/run-seed.c
lib/tdb2/tools/growtdb-bench.c
lib/tdb2/tools/speed.c
lib/tdb2/tools/tdb2tool.c
lib/tdb2/tools/tdb2torture.c

index 3f3860c42b453ba5609993df74b22b8ebc4118f1..a43fa4ac56401a6b462f9894e86d9783a2f6e4f1 100644 (file)
@@ -355,6 +355,7 @@ struct tdb_context {
        /* Logging function */
        void (*log_fn)(struct tdb_context *tdb,
                       enum tdb_log_level level,
+                      enum TDB_ERROR ecode,
                       const char *message,
                       void *data);
        void *log_data;
index 82b9c323d613bf6c2625d49778370d03f929c8e2..6f334a264b82b94cb0ee940c2af8a17ff0ca0f1a 100644 (file)
@@ -433,11 +433,11 @@ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
        va_end(ap);
 
        if (len < 0) {
-               tdb->log_fn(tdb, TDB_LOG_ERROR,
+               tdb->log_fn(tdb, TDB_LOG_ERROR, TDB_ERR_OOM,
                            "out of memory formatting message:", tdb->log_data);
-               tdb->log_fn(tdb, level, fmt, tdb->log_data);
+               tdb->log_fn(tdb, level, ecode, fmt, tdb->log_data);
        } else {
-               tdb->log_fn(tdb, level, message, tdb->log_data);
+               tdb->log_fn(tdb, level, ecode, message, tdb->log_data);
                free(message);
        }
        errno = saved_errno;
index 93f8e9d3cb03697a8b50962ddd6d4d4b0697766a..8b127add8142d0520ef688f14835f5967e7ec747 100644 (file)
@@ -706,6 +706,7 @@ struct tdb_attribute_log {
        struct tdb_attribute_base base; /* .attr = TDB_ATTRIBUTE_LOG */
        void (*fn)(struct tdb_context *tdb,
                   enum tdb_log_level level,
+                  enum TDB_ERROR ecode,
                   const char *message,
                   void *data);
        void *data;
index f2e675e9228b0ce4fbe8b673f55dd423061bb4c8..6927592b8a26cc06384b11a5accaa80fe65f234e 100644 (file)
@@ -15,12 +15,14 @@ union tdb_attribute tap_log_attr = {
 
 void tap_log_fn(struct tdb_context *tdb,
                enum tdb_log_level level,
+               enum TDB_ERROR ecode,
                const char *message, void *priv)
 {
        if (suppress_logging)
                return;
 
-       diag("tdb log level %u: %s%s", level, log_prefix, message);
+       diag("tdb log level %u: %s: %s%s",
+            level, tdb_errorstr(ecode), log_prefix, message);
        if (log_last)
                free(log_last);
        log_last = strdup(message);
index 0fd59ba6bb921ed0a4e70fddda2c00aa69d24de3..2dfea145c3370a8dc046448a65ee46774b150a70 100644 (file)
@@ -12,5 +12,6 @@ extern char *log_last;
 
 void tap_log_fn(struct tdb_context *tdb,
                enum tdb_log_level level,
+               enum TDB_ERROR ecode,
                const char *message, void *priv);
 #endif /* TDB2_TEST_LOGGING_H */
index a9b370b6e556e3a5bf44ef9d4cbd819ea81d242a..e1c23a0c577a8dd0767e22a58655789b21e520c4 100644 (file)
@@ -14,6 +14,7 @@ static int log_count = 0;
 /* Normally we get a log when setting random seed. */
 static void my_log_fn(struct tdb_context *tdb,
                      enum tdb_log_level level,
+                     enum TDB_ERROR ecode,
                      const char *message, void *priv)
 {
        log_count++;
index f7f6845a8a46b753eb788da1c2685cb4257a626a..ec81268bec7a1a0c692369534ea428fdfa641183 100644 (file)
 
 static void logfn(struct tdb_context *tdb,
                  enum tdb_log_level level,
+                 enum TDB_ERROR ecode,
                  const char *message,
                  void *data)
 {
-       fprintf(stderr, "tdb:%s:%s\n", tdb_name(tdb), message);
+       fprintf(stderr, "tdb:%s:%s:%s\n",
+               tdb_name(tdb), tdb_errorstr(ecode), message);
 }
 
 int main(int argc, char *argv[])
index 3222465a71265d42f7ea9d51e5a6830af765e54d..ccb5ae349d894f43d57ce0349b280d6539713e7d 100644 (file)
@@ -126,11 +126,14 @@ static void dump_and_clear_stats(struct tdb_context **tdb,
        *tdb = tdb_open("/tmp/speed.tdb", flags, O_RDWR, 0, attr);
 }
 
-static void tdb_log(struct tdb_context *tdb, enum tdb_log_level level,
-                   const char *message, void *data)
+static void tdb_log(struct tdb_context *tdb,
+                   enum tdb_log_level level,
+                   enum TDB_ERROR ecode,
+                   const char *message,
+                   void *data)
 {
-       fputs(message, stderr);
-       putc('\n', stderr);
+       fprintf(stderr, "tdb:%s:%s:%s\n",
+               tdb_name(tdb), tdb_errorstr(ecode), message);
 }
 
 int main(int argc, char *argv[])
index cd301c80b7887f5e8fb84ccbb91eafdc442d7134..9b3554de6c3a9745058d081513a47240db2cd79f 100644 (file)
@@ -126,10 +126,14 @@ static double _end_timer(void)
               (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
 }
 
-static void tdb_log(struct tdb_context *tdb, enum tdb_log_level level,
-                   const char *message, void *priv)
+static void tdb_log(struct tdb_context *tdb,
+                   enum tdb_log_level level,
+                   enum TDB_ERROR ecode,
+                   const char *message,
+                   void *data)
 {
-       fputs(message, stderr);
+       fprintf(stderr, "tdb:%s:%s:%s\n",
+               tdb_name(tdb), tdb_errorstr(ecode), message);
 }
 
 /* a tdb tool for manipulating a tdb database */
index f6a7a5064a330a8765c0fbf7f5a6a2a3f7e1193c..c2a4eaa0fb117a1cc47d4f289070fe4c1c0c79e7 100644 (file)
@@ -42,10 +42,14 @@ static int count_pipe;
 static union tdb_attribute log_attr;
 static union tdb_attribute seed_attr;
 
-static void tdb_log(struct tdb_context *tdb, enum tdb_log_level level,
-                   const char *message, void *data)
+static void tdb_log(struct tdb_context *tdb,
+                   enum tdb_log_level level,
+                   enum TDB_ERROR ecode,
+                   const char *message,
+                   void *data)
 {
-       fputs(message, stdout);
+       printf("tdb:%s:%s:%s\n",
+              tdb_name(tdb), tdb_errorstr(ecode), message);
        fflush(stdout);
 #if 0
        {