/* 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;
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;
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;
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);
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 */
/* 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++;
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[])
*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[])
(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 */
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
{