X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftdb.c;h=fa8e88769bc5505a6836e546b0143aa1292b4f82;hp=58a62cb400da905dba1fbae3845ed4a0d1f47dbe;hb=f6d1f564b9dd7c1871128e70477e19e4044ff50f;hpb=587982955ca9c61363d6e3004622ee97eda80e4b diff --git a/ccan/tdb2/tdb.c b/ccan/tdb2/tdb.c index 58a62cb4..fa8e8876 100644 --- a/ccan/tdb2/tdb.c +++ b/ccan/tdb2/tdb.c @@ -324,7 +324,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, /* Is it already in the open list? If so, fail. */ if (tdb_already_open(st.st_dev, st.st_ino)) { /* FIXME */ - tdb_logerr(tdb, TDB_ERR_NESTING, TDB_LOG_USE_ERROR, + tdb_logerr(tdb, TDB_ERR_IO, TDB_LOG_USE_ERROR, "tdb_open: %s (%d,%d) is already open in this" " process", name, (int)st.st_dev, (int)st.st_ino); @@ -374,9 +374,6 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, case TDB_ERR_EINVAL: saved_errno = EINVAL; break; - case TDB_ERR_NESTING: - saved_errno = EBUSY; - break; default: saved_errno = EINVAL; break; @@ -702,7 +699,6 @@ const char *tdb_errorstr(const struct tdb_context *tdb) case TDB_ERR_LOCK: return "Locking error"; case TDB_ERR_OOM: return "Out of memory"; case TDB_ERR_EXISTS: return "Record exists"; - case TDB_ERR_NESTING: return "Transaction already started"; case TDB_ERR_EINVAL: return "Invalid parameter"; case TDB_ERR_NOEXIST: return "Record does not exist"; case TDB_ERR_RDONLY: return "write not permitted"; @@ -710,10 +706,10 @@ const char *tdb_errorstr(const struct tdb_context *tdb) return "Invalid error code"; } -void COLD tdb_logerr(struct tdb_context *tdb, - enum TDB_ERROR ecode, - enum tdb_log_level level, - const char *fmt, ...) +enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, + enum TDB_ERROR ecode, + enum tdb_log_level level, + const char *fmt, ...) { char *message; va_list ap; @@ -724,7 +720,7 @@ void COLD tdb_logerr(struct tdb_context *tdb, tdb->ecode = ecode; if (!tdb->logfn) - return; + return ecode; /* FIXME: Doesn't assume asprintf. */ va_start(ap, fmt); @@ -736,7 +732,7 @@ void COLD tdb_logerr(struct tdb_context *tdb, tdb->logfn(tdb, TDB_LOG_ERROR, tdb->log_private, "out of memory formatting message:"); tdb->logfn(tdb, level, tdb->log_private, fmt); - return; + return ecode; } va_start(ap, fmt); len = vsprintf(message, fmt, ap); @@ -744,4 +740,5 @@ void COLD tdb_logerr(struct tdb_context *tdb, tdb->logfn(tdb, level, tdb->log_private, message); free(message); errno = saved_errno; + return ecode; }