]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/io.c
tdb2: feature support.
[ccan] / ccan / tdb2 / io.c
index a9016c4f38ea17a3148d9585302eae792dadc05c..11914b3c76b639f63e89442758e259b21aeeb5fe 100644 (file)
@@ -236,11 +236,6 @@ static enum TDB_ERROR tdb_write(struct tdb_context *tdb, tdb_off_t off,
                                  "Write to read-only database");
        }
 
-       /* FIXME: Bogus optimization? */
-       if (len == 0) {
-               return TDB_SUCCESS;
-       }
-
        ecode = tdb->methods->oob(tdb, off + len, 0);
        if (ecode != TDB_SUCCESS) {
                return ecode;
@@ -251,7 +246,7 @@ static enum TDB_ERROR tdb_write(struct tdb_context *tdb, tdb_off_t off,
        } else {
                ssize_t ret;
                ret = pwrite(tdb->fd, buf, len, off);
-               if (ret < len) {
+               if (ret != len) {
                        /* This shouldn't happen: we avoid sparse files. */
                        if (ret >= 0)
                                errno = ENOSPC;
@@ -380,7 +375,7 @@ static enum TDB_ERROR fill(struct tdb_context *tdb,
        while (len) {
                size_t n = len > size ? size : len;
                ssize_t ret = pwrite(tdb->fd, buf, n, off);
-               if (ret < n) {
+               if (ret != n) {
                        if (ret >= 0)
                                errno = ENOSPC;