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 {
/* 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;
......
......@@ -431,11 +431,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;
......
......@@ -704,6 +704,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;
......
......@@ -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);
......
......@@ -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 */
......@@ -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++;
......
......@@ -10,10 +10,12 @@
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[])
......
......@@ -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[])
......
......@@ -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 */
......
......@@ -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
{
......
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