blob: fc5eae3de35af035c1129a9f75afccdaba26b5b6 [file] [log] [blame]
Mike Frysinger97ca0272014-08-11 02:52:08 -04001#ifdef HAVE_CONFIG_H
2# include "config.h"
3#endif
Dmitry V. Levincc3d5912014-04-16 23:28:29 +00004#include <fcntl.h>
5#include <unistd.h>
6#include <sys/uio.h>
7#include <assert.h>
8
9int
10main(void)
11{
Mike Frysinger97ca0272014-08-11 02:52:08 -040012#if defined(HAVE_PREADV) && defined(HAVE_PWRITEV)
Dmitry V. Levincc3d5912014-04-16 23:28:29 +000013 const off_t offset = 0xdefaceddeadbeefLL;
Dmitry V. Levincc3d5912014-04-16 23:28:29 +000014 char buf[4];
15 struct iovec iov = { buf, sizeof buf };
16
Dmitry V. Levinf4d6a0d2015-10-08 14:44:15 +000017 (void) close(0);
18 assert(open("/dev/zero", O_RDONLY) == 0);
19 assert(pread(0, buf, sizeof buf, offset) == 4);
20 assert(preadv(0, &iov, 1, offset) == 4);
21 assert(!close(0));
Dmitry V. Levincc3d5912014-04-16 23:28:29 +000022
Dmitry V. Levinf4d6a0d2015-10-08 14:44:15 +000023 assert(open("/dev/null", O_WRONLY) == 0);
24 assert(pwrite(0, buf, sizeof buf, offset) == 4);
25 assert(pwritev(0, &iov, 1, offset) == 4);
26 assert(!close(0));
Dmitry V. Levincc3d5912014-04-16 23:28:29 +000027
28 return 0;
Mike Frysinger97ca0272014-08-11 02:52:08 -040029#else
30 return 77;
31#endif
Dmitry V. Levincc3d5912014-04-16 23:28:29 +000032}