1cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <fcntl.h>
2cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <unistd.h>
3cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <sys/uio.h>
4cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#include <assert.h>
5cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
6cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levinint
7cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levinmain(void)
8cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin{
9cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	const off_t offset = 0xdefaceddeadbeefLL;
10cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	int fd;
11cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	char buf[4];
12cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	struct iovec iov = { buf, sizeof buf };
13cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
14cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert((fd = open("/dev/zero", O_RDONLY)) >= 0);
15cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert(pread(fd, buf, sizeof buf, offset) == 4);
16cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert(preadv(fd, &iov, 1, offset) == 4);
17cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert(!close(fd));
18cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
19cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert((fd = open("/dev/null", O_WRONLY)) >= 0);
20cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert(pwrite(fd, buf, sizeof buf, offset) == 4);
21cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert(pwritev(fd, &iov, 1, offset) == 4);
22cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	assert(!close(fd));
23cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
24cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	return 0;
25cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin}
26