]> git.ozlabs.org Git - ccan/blobdiff - ccan/failtest/failtest.h
failtest: rely on the save/restore of files, don't use write cleanup.
[ccan] / ccan / failtest / failtest.h
index 8aae82b352d007d81e94ba4c64104266107b2e92..473f9e7950fa498e5d56a613353b049e69c82084 100644 (file)
@@ -2,6 +2,7 @@
 #define CCAN_FAILTEST_H
 #include <sys/types.h>
 #include <stdbool.h>
+#include <fcntl.h>
 #include <ccan/compiler/compiler.h>
 
 /**
@@ -38,6 +39,7 @@ enum failtest_call_type {
        FAILTEST_PIPE,
        FAILTEST_READ,
        FAILTEST_WRITE,
+       FAILTEST_FCNTL,
 };
 
 struct calloc_call {
@@ -67,10 +69,12 @@ struct open_call {
 struct pipe_call {
        int ret;
        int fds[2];
+       bool closed[2];
 };
 
 struct read_call {
        ssize_t ret;
+       off_t off;
        int fd;
        void *buf;
        size_t count;
@@ -81,6 +85,18 @@ struct write_call {
        int fd;
        const void *buf;
        size_t count;
+       off_t off;
+};
+
+struct fcntl_call {
+       int ret;
+       int fd;
+       int cmd;
+       union {
+               struct flock fl;
+               long l;
+               int i;
+       } arg;
 };
 
 /**
@@ -106,6 +122,8 @@ struct failtest_call {
        bool fail;
        /* What we set errno to. */
        int error;
+       /* How do we clean this up? */
+       void (*cleanup)(void *u);
        /* The actual call data. */
        union {
                struct calloc_call calloc;
@@ -115,6 +133,7 @@ struct failtest_call {
                struct pipe_call pipe;
                struct read_call read;
                struct write_call write;
+               struct fcntl_call fcntl;
        } u;
 };