Revert "fs: vectored IO API for filesystem read/write"
This reverts commit 7df24583e5.
This commit is contained in:
parent
3310ff4a9e
commit
a03ea239db
@ -295,15 +295,14 @@ typedef struct {
|
||||
uv_file file; \
|
||||
int flags; \
|
||||
mode_t mode; \
|
||||
unsigned int nbufs; \
|
||||
uv_buf_t* bufs; \
|
||||
void* buf; \
|
||||
size_t len; \
|
||||
off_t off; \
|
||||
uv_uid_t uid; \
|
||||
uv_gid_t gid; \
|
||||
double atime; \
|
||||
double mtime; \
|
||||
struct uv__work work_req; \
|
||||
uv_buf_t bufsml[4]; \
|
||||
|
||||
#define UV_WORK_PRIVATE_FIELDS \
|
||||
struct uv__work work_req;
|
||||
|
||||
@ -552,10 +552,9 @@ RB_HEAD(uv_timer_tree_s, uv_timer_s);
|
||||
WCHAR* new_pathw; \
|
||||
int file_flags; \
|
||||
int fd_out; \
|
||||
unsigned int nbufs; \
|
||||
uv_buf_t* bufs; \
|
||||
void* buf; \
|
||||
size_t length; \
|
||||
int64_t offset; \
|
||||
uv_buf_t bufsml[4]; \
|
||||
}; \
|
||||
struct { \
|
||||
double atime; \
|
||||
|
||||
@ -1729,13 +1729,13 @@ UV_EXTERN int uv_fs_open(uv_loop_t* loop, uv_fs_t* req, const char* path,
|
||||
int flags, int mode, uv_fs_cb cb);
|
||||
|
||||
UV_EXTERN int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file file,
|
||||
const uv_buf_t bufs[], unsigned int nbufs, int64_t offset, uv_fs_cb cb);
|
||||
void* buf, size_t length, int64_t offset, uv_fs_cb cb);
|
||||
|
||||
UV_EXTERN int uv_fs_unlink(uv_loop_t* loop, uv_fs_t* req, const char* path,
|
||||
uv_fs_cb cb);
|
||||
|
||||
UV_EXTERN int uv_fs_write(uv_loop_t* loop, uv_fs_t* req, uv_file file,
|
||||
const uv_buf_t bufs[], unsigned int nbufs, int64_t offset, uv_fs_cb cb);
|
||||
const void* buf, size_t length, int64_t offset, uv_fs_cb cb);
|
||||
|
||||
UV_EXTERN int uv_fs_mkdir(uv_loop_t* loop, uv_fs_t* req, const char* path,
|
||||
int mode, uv_fs_cb cb);
|
||||
|
||||
164
src/unix/fs.c
164
src/unix/fs.c
@ -44,22 +44,10 @@
|
||||
#include <utime.h>
|
||||
#include <poll.h>
|
||||
|
||||
#if defined(__DragonFly__) || \
|
||||
defined(__FreeBSD__) || \
|
||||
defined(__OpenBSD__) || \
|
||||
defined(__NetBSD__)
|
||||
# define HAVE_PREADV 1
|
||||
#else
|
||||
# define HAVE_PREADV 0
|
||||
#endif
|
||||
|
||||
#if defined(__linux__) || defined(__sun)
|
||||
# include <sys/sendfile.h>
|
||||
#elif defined(__APPLE__) || defined(__FreeBSD__)
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_PREADV || defined(__APPLE__)
|
||||
# include <sys/uio.h>
|
||||
#endif
|
||||
|
||||
@ -203,59 +191,10 @@ skip:
|
||||
|
||||
|
||||
static ssize_t uv__fs_read(uv_fs_t* req) {
|
||||
ssize_t result;
|
||||
|
||||
if (req->off < 0)
|
||||
result = readv(req->file, (struct iovec*) req->bufs, req->nbufs);
|
||||
else {
|
||||
#if HAVE_PREADV
|
||||
result = preadv(req->file, (struct iovec*) req->bufs, req->nbufs, req->off);
|
||||
#else
|
||||
# if defined(__linux__)
|
||||
static int no_preadv;
|
||||
if (no_preadv)
|
||||
# endif
|
||||
{
|
||||
off_t nread;
|
||||
size_t index;
|
||||
|
||||
# if defined(__linux__)
|
||||
retry:
|
||||
# endif
|
||||
nread = 0;
|
||||
index = 0;
|
||||
result = 1;
|
||||
do {
|
||||
if (req->bufs[index].len > 0) {
|
||||
result = pread(req->file,
|
||||
req->bufs[index].base,
|
||||
req->bufs[index].len,
|
||||
req->off + nread);
|
||||
if (result > 0)
|
||||
nread += result;
|
||||
}
|
||||
index++;
|
||||
} while (index < req->nbufs && result > 0);
|
||||
if (nread > 0)
|
||||
result = nread;
|
||||
}
|
||||
# if defined(__linux__)
|
||||
else {
|
||||
result = uv__preadv(req->file,
|
||||
(struct iovec*)req->bufs,
|
||||
req->nbufs,
|
||||
req->off);
|
||||
if (result == -1 && errno == ENOSYS) {
|
||||
no_preadv = 1;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
if (req->bufs != req->bufsml)
|
||||
free(req->bufs);
|
||||
return result;
|
||||
return read(req->file, req->buf, req->len);
|
||||
else
|
||||
return pread(req->file, req->buf, req->len, req->off);
|
||||
}
|
||||
|
||||
|
||||
@ -367,7 +306,7 @@ static ssize_t uv__fs_sendfile_emul(uv_fs_t* req) {
|
||||
int out_fd;
|
||||
char buf[8192];
|
||||
|
||||
len = req->bufsml[0].len;
|
||||
len = req->len;
|
||||
in_fd = req->flags;
|
||||
out_fd = req->file;
|
||||
offset = req->off;
|
||||
@ -480,7 +419,7 @@ static ssize_t uv__fs_sendfile(uv_fs_t* req) {
|
||||
ssize_t r;
|
||||
|
||||
off = req->off;
|
||||
r = sendfile(out_fd, in_fd, &off, req->bufsml[0].len);
|
||||
r = sendfile(out_fd, in_fd, &off, req->len);
|
||||
|
||||
/* sendfile() on SunOS returns EINVAL if the target fd is not a socket but
|
||||
* it still writes out data. Fortunately, we can detect it by checking if
|
||||
@ -514,11 +453,11 @@ static ssize_t uv__fs_sendfile(uv_fs_t* req) {
|
||||
|
||||
#if defined(__FreeBSD__)
|
||||
len = 0;
|
||||
r = sendfile(in_fd, out_fd, req->off, req->bufsml[0].len, NULL, &len, 0);
|
||||
r = sendfile(in_fd, out_fd, req->off, req->len, NULL, &len, 0);
|
||||
#else
|
||||
/* The darwin sendfile takes len as an input for the length to send,
|
||||
* so make sure to initialize it with the caller's value. */
|
||||
len = req->bufsml[0].len;
|
||||
len = req->len;
|
||||
r = sendfile(in_fd, out_fd, req->off, &len, NULL, 0);
|
||||
#endif
|
||||
|
||||
@ -568,61 +507,14 @@ static ssize_t uv__fs_write(uv_fs_t* req) {
|
||||
#endif
|
||||
|
||||
if (req->off < 0)
|
||||
r = writev(req->file, (struct iovec*) req->bufs, req->nbufs);
|
||||
else {
|
||||
#if HAVE_PREADV
|
||||
r = pwritev(req->file, (struct iovec*) req->bufs, req->nbufs, req->off);
|
||||
#else
|
||||
# if defined(__linux__)
|
||||
static int no_pwritev;
|
||||
if (no_pwritev)
|
||||
# endif
|
||||
{
|
||||
off_t written;
|
||||
size_t index;
|
||||
|
||||
# if defined(__linux__)
|
||||
retry:
|
||||
# endif
|
||||
written = 0;
|
||||
index = 0;
|
||||
r = 1;
|
||||
do {
|
||||
if (req->bufs[index].len > 0) {
|
||||
r = pwrite(req->file,
|
||||
req->bufs[index].base,
|
||||
req->bufs[index].len,
|
||||
req->off + written);
|
||||
if (r > 0)
|
||||
written += r;
|
||||
}
|
||||
index++;
|
||||
} while (index < req->nbufs && r > 0);
|
||||
if (written > 0)
|
||||
r = written;
|
||||
}
|
||||
# if defined(__linux__)
|
||||
else {
|
||||
r = uv__pwritev(req->file,
|
||||
(struct iovec*) req->bufs,
|
||||
req->nbufs,
|
||||
req->off);
|
||||
if (r == -1 && errno == ENOSYS) {
|
||||
no_pwritev = 1;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
r = write(req->file, req->buf, req->len);
|
||||
else
|
||||
r = pwrite(req->file, req->buf, req->len, req->off);
|
||||
|
||||
#if defined(__APPLE__)
|
||||
pthread_mutex_unlock(&lock);
|
||||
#endif
|
||||
|
||||
if (req->bufs != req->bufsml)
|
||||
free(req->bufs);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -973,23 +865,14 @@ int uv_fs_open(uv_loop_t* loop,
|
||||
|
||||
int uv_fs_read(uv_loop_t* loop, uv_fs_t* req,
|
||||
uv_file file,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
void* buf,
|
||||
size_t len,
|
||||
int64_t off,
|
||||
uv_fs_cb cb) {
|
||||
INIT(READ);
|
||||
req->file = file;
|
||||
|
||||
req->nbufs = nbufs;
|
||||
req->bufs = req->bufsml;
|
||||
if (nbufs > ARRAY_SIZE(req->bufsml))
|
||||
req->bufs = malloc(nbufs * sizeof(*bufs));
|
||||
|
||||
if (req->bufs == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(req->bufs, bufs, nbufs * sizeof(*bufs));
|
||||
|
||||
req->buf = buf;
|
||||
req->len = len;
|
||||
req->off = off;
|
||||
POST;
|
||||
}
|
||||
@ -1046,7 +929,7 @@ int uv_fs_sendfile(uv_loop_t* loop,
|
||||
req->flags = in_fd; /* hack */
|
||||
req->file = out_fd;
|
||||
req->off = off;
|
||||
req->bufsml[0].len = len;
|
||||
req->len = len;
|
||||
POST;
|
||||
}
|
||||
|
||||
@ -1095,23 +978,14 @@ int uv_fs_utime(uv_loop_t* loop,
|
||||
int uv_fs_write(uv_loop_t* loop,
|
||||
uv_fs_t* req,
|
||||
uv_file file,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
const void* buf,
|
||||
size_t len,
|
||||
int64_t off,
|
||||
uv_fs_cb cb) {
|
||||
INIT(WRITE);
|
||||
req->file = file;
|
||||
|
||||
req->nbufs = nbufs;
|
||||
req->bufs = req->bufsml;
|
||||
if (nbufs > ARRAY_SIZE(req->bufsml))
|
||||
req->bufs = malloc(nbufs * sizeof(*bufs));
|
||||
|
||||
if (req->bufs == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(req->bufs, bufs, nbufs * sizeof(*bufs));
|
||||
|
||||
req->buf = (void*) buf;
|
||||
req->len = len;
|
||||
req->off = off;
|
||||
POST;
|
||||
}
|
||||
|
||||
@ -199,26 +199,6 @@
|
||||
# endif
|
||||
#endif /* __NR_utimensat */
|
||||
|
||||
#ifndef __NR_preadv
|
||||
# if defined(__x86_64__)
|
||||
# define __NR_preadv 295
|
||||
# elif defined(__i386__)
|
||||
# define __NR_preadv 333
|
||||
# elif defined(__arm__)
|
||||
# define __NR_preadv (UV_SYSCALL_BASE + 361)
|
||||
# endif
|
||||
#endif /* __NR_preadv */
|
||||
|
||||
#ifndef __NR_pwritev
|
||||
# if defined(__x86_64__)
|
||||
# define __NR_pwritev 296
|
||||
# elif defined(__i386__)
|
||||
# define __NR_pwritev 334
|
||||
# elif defined(__arm__)
|
||||
# define __NR_pwritev (UV_SYSCALL_BASE + 362)
|
||||
# endif
|
||||
#endif /* __NR_pwritev */
|
||||
|
||||
|
||||
int uv__accept4(int fd, struct sockaddr* addr, socklen_t* addrlen, int flags) {
|
||||
#if defined(__i386__)
|
||||
@ -406,19 +386,3 @@ int uv__utimesat(int dirfd,
|
||||
return errno = ENOSYS, -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
ssize_t uv__preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset) {
|
||||
#if defined(__NR_preadv)
|
||||
return syscall(__NR_preadv, fd, iov, iovcnt, offset);
|
||||
#else
|
||||
return errno = ENOSYS, -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
ssize_t uv__pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset) {
|
||||
#if defined(__NR_pwritev)
|
||||
return syscall(__NR_pwritev, fd, iov, iovcnt, offset);
|
||||
#else
|
||||
return errno = ENOSYS, -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -147,7 +147,5 @@ int uv__utimesat(int dirfd,
|
||||
const char* path,
|
||||
const struct timespec times[2],
|
||||
int flags);
|
||||
ssize_t uv__preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset);
|
||||
ssize_t uv__pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset);
|
||||
|
||||
#endif /* UV_LINUX_SYSCALL_H_ */
|
||||
|
||||
69
src/win/fs.c
69
src/win/fs.c
@ -546,8 +546,6 @@ void fs__read(uv_fs_t* req) {
|
||||
LARGE_INTEGER offset_;
|
||||
DWORD bytes;
|
||||
DWORD error;
|
||||
int result;
|
||||
unsigned int index;
|
||||
|
||||
VERIFY_FD(fd, req);
|
||||
|
||||
@ -575,20 +573,7 @@ void fs__read(uv_fs_t* req) {
|
||||
overlapped_ptr = NULL;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
bytes = 0;
|
||||
do {
|
||||
DWORD incremental_bytes;
|
||||
result = ReadFile(handle,
|
||||
req->bufs[index].base,
|
||||
req->bufs[index].len,
|
||||
&incremental_bytes,
|
||||
overlapped_ptr);
|
||||
bytes += incremental_bytes;
|
||||
++index;
|
||||
} while (result && index < req->nbufs);
|
||||
|
||||
if (result || bytes > 0) {
|
||||
if (ReadFile(handle, req->buf, req->length, &bytes, overlapped_ptr)) {
|
||||
SET_REQ_RESULT(req, bytes);
|
||||
} else {
|
||||
error = GetLastError();
|
||||
@ -609,8 +594,6 @@ void fs__write(uv_fs_t* req) {
|
||||
OVERLAPPED overlapped, *overlapped_ptr;
|
||||
LARGE_INTEGER offset_;
|
||||
DWORD bytes;
|
||||
int result;
|
||||
unsigned int index;
|
||||
|
||||
VERIFY_FD(fd, req);
|
||||
|
||||
@ -637,20 +620,7 @@ void fs__write(uv_fs_t* req) {
|
||||
overlapped_ptr = NULL;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
bytes = 0;
|
||||
do {
|
||||
DWORD incremental_bytes;
|
||||
result = WriteFile(handle,
|
||||
req->bufs[index].base,
|
||||
req->bufs[index].len,
|
||||
&incremental_bytes,
|
||||
overlapped_ptr);
|
||||
bytes += incremental_bytes;
|
||||
++index;
|
||||
} while (result && index < req->nbufs);
|
||||
|
||||
if (result || bytes > 0) {
|
||||
if (WriteFile(handle, req->buf, length, &bytes, overlapped_ptr)) {
|
||||
SET_REQ_RESULT(req, bytes);
|
||||
} else {
|
||||
SET_REQ_WIN32_ERROR(req, GetLastError());
|
||||
@ -1599,27 +1569,13 @@ int uv_fs_close(uv_loop_t* loop, uv_fs_t* req, uv_file fd, uv_fs_cb cb) {
|
||||
}
|
||||
|
||||
|
||||
int uv_fs_read(uv_loop_t* loop,
|
||||
uv_fs_t* req,
|
||||
uv_file fd,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
int64_t offset,
|
||||
uv_fs_cb cb) {
|
||||
int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file fd, void* buf,
|
||||
size_t length, int64_t offset, uv_fs_cb cb) {
|
||||
uv_fs_req_init(loop, req, UV_FS_READ, cb);
|
||||
|
||||
req->fd = fd;
|
||||
|
||||
req->nbufs = nbufs;
|
||||
req->bufs = req->bufsml;
|
||||
if (nbufs > ARRAY_SIZE(req->bufsml))
|
||||
req->bufs = malloc(nbufs * sizeof(*bufs));
|
||||
|
||||
if (req->bufs == NULL)
|
||||
return UV_ENOMEM;
|
||||
|
||||
memcpy(req->bufs, bufs, nbufs * sizeof(*bufs));
|
||||
|
||||
req->buf = buf;
|
||||
req->length = length;
|
||||
req->offset = offset;
|
||||
|
||||
if (cb) {
|
||||
@ -1637,17 +1593,8 @@ int uv_fs_write(uv_loop_t* loop, uv_fs_t* req, uv_file fd, const void* buf,
|
||||
uv_fs_req_init(loop, req, UV_FS_WRITE, cb);
|
||||
|
||||
req->fd = fd;
|
||||
|
||||
req->nbufs = nbufs;
|
||||
req->bufs = req->bufsml;
|
||||
if (nbufs > ARRAY_SIZE(req->bufsml))
|
||||
req->bufs = malloc(nbufs * sizeof(*bufs));
|
||||
|
||||
if (req->bufs == NULL)
|
||||
return UV_ENOMEM;
|
||||
|
||||
memcpy(req->bufs, bufs, nbufs * sizeof(*bufs));
|
||||
|
||||
req->buf = (void*) buf;
|
||||
req->length = length;
|
||||
req->offset = offset;
|
||||
|
||||
if (cb) {
|
||||
|
||||
@ -79,15 +79,13 @@ static void touch_file(uv_loop_t* loop, const char* name) {
|
||||
int r;
|
||||
uv_file file;
|
||||
uv_fs_t req;
|
||||
uv_buf_t buf;
|
||||
|
||||
r = uv_fs_open(loop, &req, name, O_RDWR, 0, NULL);
|
||||
ASSERT(r >= 0);
|
||||
file = r;
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
buf = uv_buf_init("foo", 4);
|
||||
r = uv_fs_write(loop, &req, file, &buf, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &req, file, "foo", 4, -1, NULL);
|
||||
ASSERT(r >= 0);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
|
||||
@ -102,7 +102,7 @@ static uv_fs_t futime_req;
|
||||
|
||||
static char buf[32];
|
||||
static char test_buf[] = "test-buffer\n";
|
||||
static uv_buf_t iov;
|
||||
|
||||
|
||||
static void check_permission(const char* filename, unsigned int mode) {
|
||||
int r;
|
||||
@ -284,8 +284,7 @@ static void open_cb(uv_fs_t* req) {
|
||||
ASSERT(memcmp(req->path, "test_file2\0", 11) == 0);
|
||||
uv_fs_req_cleanup(req);
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf), -1,
|
||||
read_cb);
|
||||
ASSERT(r == 0);
|
||||
}
|
||||
@ -346,8 +345,8 @@ static void create_cb(uv_fs_t* req) {
|
||||
ASSERT(req->result >= 0);
|
||||
create_cb_count++;
|
||||
uv_fs_req_cleanup(req);
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &write_req, req->result, &iov, 1, -1, write_cb);
|
||||
r = uv_fs_write(loop, &write_req, req->result, test_buf, sizeof(test_buf),
|
||||
-1, write_cb);
|
||||
ASSERT(r == 0);
|
||||
}
|
||||
|
||||
@ -664,8 +663,8 @@ TEST_IMPL(fs_file_sync) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, test_buf,
|
||||
sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(write_req.result >= 0);
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
@ -680,8 +679,8 @@ TEST_IMPL(fs_file_sync) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf), -1,
|
||||
NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(read_req.result >= 0);
|
||||
ASSERT(strcmp(buf, test_buf) == 0);
|
||||
@ -708,8 +707,7 @@ TEST_IMPL(fs_file_sync) {
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf), -1,
|
||||
NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(read_req.result >= 0);
|
||||
@ -912,8 +910,7 @@ TEST_IMPL(fs_fstat) {
|
||||
file = req.result;
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &req, file, test_buf, sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r == sizeof(test_buf));
|
||||
ASSERT(req.result == sizeof(test_buf));
|
||||
uv_fs_req_cleanup(&req);
|
||||
@ -1023,8 +1020,7 @@ TEST_IMPL(fs_chmod) {
|
||||
file = req.result;
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &req, file, test_buf, sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r == sizeof(test_buf));
|
||||
ASSERT(req.result == sizeof(test_buf));
|
||||
uv_fs_req_cleanup(&req);
|
||||
@ -1187,8 +1183,7 @@ TEST_IMPL(fs_link) {
|
||||
file = req.result;
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &req, file, test_buf, sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r == sizeof(test_buf));
|
||||
ASSERT(req.result == sizeof(test_buf));
|
||||
uv_fs_req_cleanup(&req);
|
||||
@ -1208,8 +1203,7 @@ TEST_IMPL(fs_link) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
|
||||
r = uv_fs_read(loop, &req, link, buf, sizeof(buf), 0, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(req.result >= 0);
|
||||
ASSERT(strcmp(buf, test_buf) == 0);
|
||||
@ -1229,8 +1223,7 @@ TEST_IMPL(fs_link) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
|
||||
r = uv_fs_read(loop, &req, link, buf, sizeof(buf), 0, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(req.result >= 0);
|
||||
ASSERT(strcmp(buf, test_buf) == 0);
|
||||
@ -1296,8 +1289,7 @@ TEST_IMPL(fs_symlink) {
|
||||
file = req.result;
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &req, file, test_buf, sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r == sizeof(test_buf));
|
||||
ASSERT(req.result == sizeof(test_buf));
|
||||
uv_fs_req_cleanup(&req);
|
||||
@ -1334,8 +1326,7 @@ TEST_IMPL(fs_symlink) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
|
||||
r = uv_fs_read(loop, &req, link, buf, sizeof(buf), 0, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(req.result >= 0);
|
||||
ASSERT(strcmp(buf, test_buf) == 0);
|
||||
@ -1374,8 +1365,7 @@ TEST_IMPL(fs_symlink) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
|
||||
r = uv_fs_read(loop, &req, link, buf, sizeof(buf), 0, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(req.result >= 0);
|
||||
ASSERT(strcmp(buf, test_buf) == 0);
|
||||
@ -1784,8 +1774,8 @@ TEST_IMPL(fs_file_open_append) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, test_buf,
|
||||
sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(write_req.result >= 0);
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
@ -1800,8 +1790,8 @@ TEST_IMPL(fs_file_open_append) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, test_buf,
|
||||
sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(write_req.result >= 0);
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
@ -1816,8 +1806,7 @@ TEST_IMPL(fs_file_open_append) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf), -1,
|
||||
NULL);
|
||||
printf("read = %d\n", r);
|
||||
ASSERT(r == 26);
|
||||
@ -1855,8 +1844,8 @@ TEST_IMPL(fs_rename_to_existing_file) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, test_buf,
|
||||
sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(write_req.result >= 0);
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
@ -1888,8 +1877,7 @@ TEST_IMPL(fs_rename_to_existing_file) {
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf), -1,
|
||||
NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(read_req.result >= 0);
|
||||
@ -1924,8 +1912,8 @@ TEST_IMPL(fs_read_file_eof) {
|
||||
ASSERT(open_req1.result >= 0);
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_write(loop, &write_req, open_req1.result, test_buf,
|
||||
sizeof(test_buf), -1, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(write_req.result >= 0);
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
@ -1941,16 +1929,15 @@ TEST_IMPL(fs_read_file_eof) {
|
||||
uv_fs_req_cleanup(&open_req1);
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1, NULL);
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf), -1,
|
||||
NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(read_req.result >= 0);
|
||||
ASSERT(strcmp(buf, test_buf) == 0);
|
||||
uv_fs_req_cleanup(&read_req);
|
||||
|
||||
iov = uv_buf_init(buf, sizeof(buf));
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1,
|
||||
read_req.result, NULL);
|
||||
r = uv_fs_read(loop, &read_req, open_req1.result, buf, sizeof(buf),
|
||||
read_req.result, NULL);
|
||||
ASSERT(r == 0);
|
||||
ASSERT(read_req.result == 0);
|
||||
uv_fs_req_cleanup(&read_req);
|
||||
|
||||
@ -218,7 +218,6 @@ TEST_IMPL(spawn_stdout_to_file) {
|
||||
uv_file file;
|
||||
uv_fs_t fs_req;
|
||||
uv_stdio_container_t stdio[2];
|
||||
uv_buf_t buf;
|
||||
|
||||
/* Setup. */
|
||||
unlink("stdout_file");
|
||||
@ -247,8 +246,8 @@ TEST_IMPL(spawn_stdout_to_file) {
|
||||
ASSERT(exit_cb_called == 1);
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
buf = uv_buf_init(output, sizeof(output));
|
||||
r = uv_fs_read(uv_default_loop(), &fs_req, file, &buf, 1, 0, NULL);
|
||||
r = uv_fs_read(uv_default_loop(), &fs_req, file, output, sizeof(output),
|
||||
0, NULL);
|
||||
ASSERT(r == 12);
|
||||
uv_fs_req_cleanup(&fs_req);
|
||||
|
||||
@ -272,7 +271,6 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file) {
|
||||
uv_file file;
|
||||
uv_fs_t fs_req;
|
||||
uv_stdio_container_t stdio[3];
|
||||
uv_buf_t buf;
|
||||
|
||||
/* Setup. */
|
||||
unlink("stdout_file");
|
||||
@ -303,8 +301,8 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file) {
|
||||
ASSERT(exit_cb_called == 1);
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
buf = uv_buf_init(output, sizeof(output));
|
||||
r = uv_fs_read(uv_default_loop(), &fs_req, file, &buf, 1, 0, NULL);
|
||||
r = uv_fs_read(uv_default_loop(), &fs_req, file, output, sizeof(output),
|
||||
0, NULL);
|
||||
ASSERT(r == 27);
|
||||
uv_fs_req_cleanup(&fs_req);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user