Commit 6e3d9e8a authored by Rusty Russell's avatar Rusty Russell

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.
parent de432e8f
...@@ -343,6 +343,7 @@ struct tdb_context { ...@@ -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;
......
...@@ -431,11 +431,11 @@ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, ...@@ -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;
......
...@@ -704,6 +704,7 @@ struct tdb_attribute_log { ...@@ -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;
......
...@@ -15,12 +15,14 @@ union tdb_attribute tap_log_attr = { ...@@ -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);
......
...@@ -12,5 +12,6 @@ extern char *log_last; ...@@ -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 */
...@@ -14,6 +14,7 @@ static int log_count = 0; ...@@ -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++;
......
...@@ -10,10 +10,12 @@ ...@@ -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[])
......
...@@ -126,11 +126,14 @@ static void dump_and_clear_stats(struct tdb_context **tdb, ...@@ -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, static void tdb_log(struct tdb_context *tdb,
const char *message, void *data) enum tdb_log_level level,
enum TDB_ERROR ecode,
const char *message,
void *data)
{ {
fputs(message, stderr); fprintf(stderr, "tdb:%s:%s:%s\n",
putc('\n', stderr); tdb_name(tdb), tdb_errorstr(ecode), message);
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
......
...@@ -126,10 +126,14 @@ static double _end_timer(void) ...@@ -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, static void tdb_log(struct tdb_context *tdb,
const char *message, void *priv) 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 */
......
...@@ -42,10 +42,14 @@ static int count_pipe; ...@@ -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, static void tdb_log(struct tdb_context *tdb,
const char *message, void *data) 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
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment