/* TODO: add support for links. */ int uv_fs_lstat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) { int len = strlen(path); char* path2 = NULL; int has_backslash = (path[len - 1] == '\\' || path[len - 1] == '/'); if (path[len - 1] == '\\' || path[len - 1] == '/') { path2 = strdup(path); if (!path2) { uv_fatal_error(ERROR_OUTOFMEMORY, "malloc"); } path2[len - 1] = '\0'; } if (cb) { uv_fs_req_init_async(loop, req, UV_FS_LSTAT, NULL, cb); if (path2) { req->path = path2; } else { req->path = strdup(path); } QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_LSTAT); fs__stat(req, path2 ? path2 : path); if (path2) { free(path2); } SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_stat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) { int len = strlen(path); char* path2 = NULL; int has_backslash = (path[len - 1] == '\\' || path[len - 1] == '/'); if (path[len - 1] == '\\' || path[len - 1] == '/') { path2 = strdup(path); if (!path2) { uv_fatal_error(ERROR_OUTOFMEMORY, "malloc"); } path2[len - 1] = '\0'; } if (cb) { uv_fs_req_init_async(loop, req, UV_FS_STAT, cb); if (path2) { WRAP_REQ_ARGS1(req, path2); req->flags |= UV_FS_FREE_ARG0; } else { WRAP_REQ_ARGS1(req, path); STRDUP_ARG(req, 0); } QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_STAT); fs__stat(req, path2 ? path2 : path); if (path2) { free(path2); } } return 0; }
int uv_fs_close(uv_fs_t* req, uv_file file, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_CLOSE, cb); WRAP_REQ_ARGS1(req, file); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_CLOSE); fs__close(req, file); } return 0; }
int uv_fs_write(uv_fs_t* req, uv_file file, void* buf, size_t length, off_t offset, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_WRITE, cb); WRAP_REQ_ARGS4(req, file, buf, length, offset); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_WRITE); fs__write(req, file, buf, length, offset); } return 0; }
int uv_fs_rmdir(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_RMDIR, path, cb); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_RMDIR); fs__rmdir(req, path); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_sendfile(uv_fs_t* req, uv_file out_fd, uv_file in_fd, off_t in_offset, size_t length, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_SENDFILE, cb); WRAP_REQ_ARGS4(req, out_fd, in_fd, in_offset, length); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_SENDFILE); fs__sendfile(req, out_fd, in_fd, in_offset, length); } return 0; }
int uv_fs_ftruncate(uv_fs_t* req, uv_file file, off_t offset, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_FTRUNCATE, cb); WRAP_REQ_ARGS2(req, file, offset); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_FTRUNCATE); fs__ftruncate(req, file, offset); } return 0; }
int uv_fs_fsync(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_FSYNC, cb); WRAP_REQ_ARGS1(req, file); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_FSYNC); fs__fsync(req, file); } return 0; }
int uv_fs_fstat(uv_fs_t* req, uv_file file, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_FSTAT, cb); WRAP_REQ_ARGS1(req, file); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_FSTAT); fs__fstat(req, file); } return 0; }
int uv_fs_chmod(uv_fs_t* req, const char* path, int mode, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_CHMOD, cb); WRAP_REQ_ARGS2(req, path, mode); STRDUP_ARG(req, 0); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_CHMOD); fs__chmod(req, path, mode); } return 0; }
int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file file, void* buf, size_t length, off_t offset, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_READ, cb); WRAP_REQ_ARGS4(req, file, buf, length, offset); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_READ); fs__read(req, file, buf, length, offset); } return 0; }
int uv_fs_unlink(uv_fs_t* req, const char* path, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_UNLINK, cb); WRAP_REQ_ARGS1(req, path); STRDUP_ARG(req, 0); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_UNLINK); fs__unlink(req, path); } return 0; }
int uv_fs_close(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_CLOSE, NULL, cb); WRAP_REQ_ARGS1(req, file); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_CLOSE); fs__close(req, file); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_open(uv_fs_t* req, const char* path, int flags, int mode, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_OPEN, cb); WRAP_REQ_ARGS3(req, path, flags, mode); STRDUP_ARG(req, 0); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_OPEN); fs__open(req, path, flags, mode); } return 0; }
int uv_fs_readdir(uv_fs_t* req, const char* path, int flags, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_READDIR, cb); WRAP_REQ_ARGS2(req, path, flags); STRDUP_ARG(req, 0); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_READDIR); fs__readdir(req, path, flags); } return 0; }
int uv_fs_rmdir(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_RMDIR, cb); WRAP_REQ_ARGS1(req, path); STRDUP_ARG(req, 0); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_RMDIR); fs__rmdir(req, path); } return 0; }
int uv_fs_readlink(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_READLINK, path, cb); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_READLINK); fs__readlink(req, path); SET_UV_LAST_ERROR_FROM_REQ(req); return req->result; } return 0; }
int uv_fs_write(uv_loop_t* loop, uv_fs_t* req, uv_file file, void* buf, size_t length, off_t offset, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_WRITE, NULL, cb); WRAP_REQ_ARGS4(req, file, buf, length, offset); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_WRITE); fs__write(req, file, buf, length, offset); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_open(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags, int mode, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_OPEN, path, cb); WRAP_REQ_ARGS2(req, flags, mode); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_OPEN); fs__open(req, path, flags, mode); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_fchmod(uv_loop_t* loop, uv_fs_t* req, uv_file file, int mode, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_FCHMOD, NULL, cb); WRAP_REQ_ARGS2(req, file, mode); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_FCHMOD); fs__fchmod(req, file, mode); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_chmod(uv_loop_t* loop, uv_fs_t* req, const char* path, int mode, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_CHMOD, path, cb); WRAP_REQ_ARGS1(req, mode); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_CHMOD); fs__chmod(req, path, mode); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_sendfile(uv_loop_t* loop, uv_fs_t* req, uv_file out_fd, uv_file in_fd, off_t in_offset, size_t length, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_SENDFILE, NULL, cb); WRAP_REQ_ARGS4(req, out_fd, in_fd, in_offset, length); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_SENDFILE); fs__sendfile(req, out_fd, in_fd, in_offset, length); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_ftruncate(uv_loop_t* loop, uv_fs_t* req, uv_file file, off_t offset, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_FTRUNCATE, NULL, cb); WRAP_REQ_ARGS2(req, file, offset); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_FTRUNCATE); fs__ftruncate(req, file, offset); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_rename(uv_fs_t* req, const char* path, const char* new_path, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_RENAME, cb); WRAP_REQ_ARGS2(req, path, new_path); STRDUP_ARG(req, 0); STRDUP_ARG(req, 1); QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_RENAME); fs__rename(req, path, new_path); } return 0; }
int uv_fs_readdir(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_READDIR, path, cb); WRAP_REQ_ARGS1(req, flags); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_READDIR); fs__readdir(req, path, flags); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_futime(uv_fs_t* req, uv_file file, double atime, double mtime, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(req, UV_FS_FUTIME, cb); WRAP_REQ_ARGS1(req, file); req->arg4 = (ssize_t)atime; req->arg5 = (ssize_t)mtime; QUEUE_FS_TP_JOB(req); } else { uv_fs_req_init_sync(req, UV_FS_FUTIME); fs__futime(req, file, atime, mtime); } return 0; }
int uv_fs_fchown(uv_loop_t* loop, uv_fs_t* req, uv_file file, int uid, int gid, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_FCHOWN, NULL, cb); WRAP_REQ_ARGS3(req, file, uid, gid); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_FCHOWN); fs__nop(req); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_chown(uv_loop_t* loop, uv_fs_t* req, const char* path, int uid, int gid, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_CHOWN, path, cb); WRAP_REQ_ARGS2(req, uid, gid); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_CHOWN); fs__nop(req); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }
int uv_fs_fsync(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_FSYNC, NULL, cb); WRAP_REQ_ARGS1(req, file); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_FSYNC); fs__fsync(req, file); SET_UV_LAST_ERROR_FROM_REQ(req); return req->result; } return 0; }
int uv_fs_symlink(uv_loop_t* loop, uv_fs_t* req, const char* path, const char* new_path, int flags, uv_fs_cb cb) { if (cb) { uv_fs_req_init_async(loop, req, UV_FS_SYMLINK, path, cb); WRAP_REQ_ARGS2(req, new_path, flags); STRDUP_ARG(req, 0); QUEUE_FS_TP_JOB(loop, req); } else { uv_fs_req_init_sync(loop, req, UV_FS_SYMLINK); fs__symlink(req, path, new_path, flags); SET_UV_LAST_ERROR_FROM_REQ(req); } return 0; }