X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=innduct.git;a=blobdiff_plain;f=tests%2Flib%2Ffakewrite.c;fp=tests%2Flib%2Ffakewrite.c;h=0000000000000000000000000000000000000000;hp=7661e28a5323d6a683be288ba7125b90ed03612c;hb=b7a32e2d73e3ab1add8208d3e157f7269a31ef4d;hpb=ac902a8299ff4469b356836f431ead31c3377377 diff --git a/tests/lib/fakewrite.c b/tests/lib/fakewrite.c deleted file mode 100644 index 7661e28..0000000 --- a/tests/lib/fakewrite.c +++ /dev/null @@ -1,101 +0,0 @@ -/* $Id: fakewrite.c 5417 2002-04-15 08:40:20Z rra $ */ -/* Fake write and writev functions for testing xwrite and xwritev. */ - -#include "config.h" - -#include -#include -#include - -#include "libinn.h" - -ssize_t fake_write(int, const void *, size_t); -ssize_t fake_pwrite(int, const void *, size_t, off_t); -ssize_t fake_writev(int, const struct iovec *, int); - -/* All the data is actually written into this buffer. We use write_offset - to track how far we've written. */ -char write_buffer[256]; -size_t write_offset = 0; - -/* If write_interrupt is non-zero, then half of the calls to write or writev - will fail, returning -1 with errno set to EINTR. */ -int write_interrupt = 0; - -/* If write_fail is non-zero, all writes or writevs will return 0, - indicating no progress in writing out the buffer. */ -int write_fail = 0; - -/* Accept a write request and write only the first 32 bytes of it into - write_buffer (or as much as will fit), returning the amount written. */ -ssize_t -fake_write(int fd UNUSED, const void *data, size_t n) -{ - size_t total; - - if (write_fail) - return 0; - if (write_interrupt && (write_interrupt++ % 2) == 0) { - errno = EINTR; - return -1; - } - total = (n < 32) ? n : 32; - if (256 - write_offset < total) - total = 256 - write_offset; - memcpy(write_buffer + write_offset, data, total); - write_offset += total; - return total; -} - -/* Accept a pwrite request and write only the first 32 bytes of it into - write_buffer at the specified offset (or as much as will fit), returning - the amount written. */ -ssize_t -fake_pwrite(int fd UNUSED, const void *data, size_t n, off_t offset) -{ - size_t total; - - if (write_fail) - return 0; - if (write_interrupt && (write_interrupt++ % 2) == 0) { - errno = EINTR; - return -1; - } - total = (n < 32) ? n : 32; - if (offset > 256) { - errno = ENOSPC; - return -1; - } - if ((size_t) (256 - offset) < total) - total = 256 - offset; - memcpy(write_buffer + offset, data, total); - return total; -} - -/* Accept an xwrite request and write only the first 32 bytes of it into - write_buffer (or as much as will fit), returning the amount written. */ -ssize_t -fake_writev(int fd UNUSED, const struct iovec *iov, int iovcnt) -{ - int total, i; - size_t left, n; - - if (write_fail) - return 0; - if (write_interrupt && (write_interrupt++ % 2) == 0) { - errno = EINTR; - return -1; - } - left = 256 - write_offset; - if (left > 32) - left = 32; - total = 0; - for (i = 0; i < iovcnt && left != 0; i++) { - n = ((size_t) iov[i].iov_len < left) ? iov[i].iov_len : left; - memcpy(write_buffer + write_offset, iov[i].iov_base, n); - write_offset += n; - total += n; - left -= n; - } - return total; -}