X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ffailtest%2Ffailtest.c;h=061d6e9e3fc911c12c88fe7b122a417287441133;hb=9660f0f1cbbdfd6473f033ca816fbf64fd8ce869;hp=b25b049edac1d162c663ae58218c75dc3815e0dd;hpb=3ad57bc902f31ba347df59de04168f00c626d924;p=ccan diff --git a/ccan/failtest/failtest.c b/ccan/failtest/failtest.c index b25b049e..061d6e9e 100644 --- a/ccan/failtest/failtest.c +++ b/ccan/failtest/failtest.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -248,7 +249,8 @@ static struct saved_file *save_file(struct saved_file *next, int fd) s->len = lseek(fd, 0, SEEK_END); lseek(fd, 0, SEEK_SET); s->contents = malloc(s->len); - read(fd, s->contents, s->len); + if (read(fd, s->contents, s->len) != s->len) + err(1, "Failed to save %zu bytes", (size_t)s->len); lseek(fd, s->off, SEEK_SET); return s; } @@ -293,8 +295,11 @@ static void restore_files(struct saved_file *s) struct saved_file *next = s->next; lseek(s->fd, 0, SEEK_SET); - write(s->fd, s->contents, s->len); - ftruncate(s->fd, s->len); + if (write(s->fd, s->contents, s->len) != s->len) + err(1, "Failed to restore %zu bytes", (size_t)s->len); + if (ftruncate(s->fd, s->len) != 0) + err(1, "Failed to trim file to length %zu", + (size_t)s->len); free(s->contents); lseek(s->fd, s->off, SEEK_SET); free(s); @@ -395,8 +400,8 @@ static bool should_fail(struct failtest_call *call) signal(SIGUSR1, SIG_IGN); sprintf(str, "xterm -e gdb /proc/%d/exe %d &", getpid(), getpid()); - system(str); - sleep(5); + if (system(str) == 0) + sleep(5); } } @@ -672,7 +677,7 @@ int failtest_open(const char *pathname, va_start(ap, line); call.flags = va_arg(ap, int); if (call.flags & O_CREAT) { - call.mode = va_arg(ap, mode_t); + call.mode = va_arg(ap, int); va_end(ap); } p = add_history(FAILTEST_OPEN, file, line, &call);