X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;ds=inline;f=ccan%2Ftdb2%2Ftdb.c;h=1aa3baa46c24471033af359dba192ab82e3747a3;hb=aa12380008323e14f8d7dabe78b174b72f69e2dd;hp=e3b579d0f259ad94498fe740f84bef7dc52d9d2b;hpb=6dbbfabca414018b4c5acb3e6e597d84e2b19caf;p=ccan diff --git a/ccan/tdb2/tdb.c b/ccan/tdb2/tdb.c index e3b579d0..1aa3baa4 100644 --- a/ccan/tdb2/tdb.c +++ b/ccan/tdb2/tdb.c @@ -101,6 +101,7 @@ static int tdb_new_database(struct tdb_context *tdb, /* We make it up in memory, then write it out if not internal */ struct new_database newdb; unsigned int magic_len; + ssize_t rlen; /* Fill in the header */ newdb.hdr.version = TDB_VERSION; @@ -153,10 +154,13 @@ static int tdb_new_database(struct tdb_context *tdb, if (ftruncate(tdb->fd, 0) == -1) return -1; - if (!tdb_pwrite_all(tdb->fd, &newdb, sizeof(newdb), 0)) { + rlen = write(tdb->fd, &newdb, sizeof(newdb)); + if (rlen != sizeof(newdb)) { + if (rlen >= 0) + errno = ENOSPC; tdb_logerr(tdb, TDB_ERR_IO, TDB_DEBUG_FATAL, - "tdb_new_database: failed to write: %s", - strerror(errno)); + "tdb_new_database: %zi writing header: %s", + rlen, strerror(errno)); return -1; } return 0;