Browse Source

tdb2: Hand error code to logging function.

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.
Rusty Russell 14 years ago
parent
commit
6e3d9e8a66

+ 1 - 0
ccan/tdb2/private.h

@@ -343,6 +343,7 @@ struct tdb_context {
 	/* Logging function */
 	/* Logging function */
 	void (*log_fn)(struct tdb_context *tdb,
 	void (*log_fn)(struct tdb_context *tdb,
 		       enum tdb_log_level level,
 		       enum tdb_log_level level,
+		       enum TDB_ERROR ecode,
 		       const char *message,
 		       const char *message,
 		       void *data);
 		       void *data);
 	void *log_data;
 	void *log_data;

+ 3 - 3
ccan/tdb2/tdb.c

@@ -431,11 +431,11 @@ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
 	va_end(ap);
 	va_end(ap);
 
 
 	if (len < 0) {
 	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);
 			    "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 {
 	} else {
-		tdb->log_fn(tdb, level, message, tdb->log_data);
+		tdb->log_fn(tdb, level, ecode, message, tdb->log_data);
 		free(message);
 		free(message);
 	}
 	}
 	errno = saved_errno;
 	errno = saved_errno;

+ 1 - 0
ccan/tdb2/tdb2.h

@@ -704,6 +704,7 @@ struct tdb_attribute_log {
 	struct tdb_attribute_base base; /* .attr = TDB_ATTRIBUTE_LOG */
 	struct tdb_attribute_base base; /* .attr = TDB_ATTRIBUTE_LOG */
 	void (*fn)(struct tdb_context *tdb,
 	void (*fn)(struct tdb_context *tdb,
 		   enum tdb_log_level level,
 		   enum tdb_log_level level,
+		   enum TDB_ERROR ecode,
 		   const char *message,
 		   const char *message,
 		   void *data);
 		   void *data);
 	void *data;
 	void *data;

+ 3 - 1
ccan/tdb2/test/logging.c

@@ -15,12 +15,14 @@ union tdb_attribute tap_log_attr = {
 
 
 void tap_log_fn(struct tdb_context *tdb,
 void tap_log_fn(struct tdb_context *tdb,
 		enum tdb_log_level level,
 		enum tdb_log_level level,
+		enum TDB_ERROR ecode,
 		const char *message, void *priv)
 		const char *message, void *priv)
 {
 {
 	if (suppress_logging)
 	if (suppress_logging)
 		return;
 		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)
 	if (log_last)
 		free(log_last);
 		free(log_last);
 	log_last = strdup(message);
 	log_last = strdup(message);

+ 1 - 0
ccan/tdb2/test/logging.h

@@ -12,5 +12,6 @@ extern char *log_last;
 
 
 void tap_log_fn(struct tdb_context *tdb,
 void tap_log_fn(struct tdb_context *tdb,
 		enum tdb_log_level level,
 		enum tdb_log_level level,
+		enum TDB_ERROR ecode,
 		const char *message, void *priv);
 		const char *message, void *priv);
 #endif /* TDB2_TEST_LOGGING_H */
 #endif /* TDB2_TEST_LOGGING_H */

+ 1 - 0
ccan/tdb2/test/run-seed.c

@@ -14,6 +14,7 @@ static int log_count = 0;
 /* Normally we get a log when setting random seed. */
 /* Normally we get a log when setting random seed. */
 static void my_log_fn(struct tdb_context *tdb,
 static void my_log_fn(struct tdb_context *tdb,
 		      enum tdb_log_level level,
 		      enum tdb_log_level level,
+		      enum TDB_ERROR ecode,
 		      const char *message, void *priv)
 		      const char *message, void *priv)
 {
 {
 	log_count++;
 	log_count++;

+ 3 - 1
ccan/tdb2/tools/growtdb-bench.c

@@ -10,10 +10,12 @@
 
 
 static void logfn(struct tdb_context *tdb,
 static void logfn(struct tdb_context *tdb,
 		  enum tdb_log_level level,
 		  enum tdb_log_level level,
+		  enum TDB_ERROR ecode,
 		  const char *message,
 		  const char *message,
 		  void *data)
 		  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[])
 int main(int argc, char *argv[])

+ 7 - 4
ccan/tdb2/tools/speed.c

@@ -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);
 	*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[])
 int main(int argc, char *argv[])

+ 7 - 3
ccan/tdb2/tools/tdb2tool.c

@@ -126,10 +126,14 @@ static double _end_timer(void)
 	       (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
 	       (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 */
 /* a tdb tool for manipulating a tdb database */

+ 7 - 3
ccan/tdb2/tools/tdb2torture.c

@@ -42,10 +42,14 @@ static int count_pipe;
 static union tdb_attribute log_attr;
 static union tdb_attribute log_attr;
 static union tdb_attribute seed_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);
 	fflush(stdout);
 #if 0
 #if 0
 	{
 	{