From 635a0e40b5b746452d8b70367ded5a181ac2b626 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 10 May 2020 17:13:17 -0400 Subject: [PATCH] remove uv.h from public headers --- include/uvwasi.h | 9 ++- src/fd_table.c | 26 ++++--- {include => src}/fd_table.h | 0 src/path_resolver.h | 1 + src/poll_oneoff.c | 2 +- src/poll_oneoff.h | 1 + src/uvwasi.c | 99 ++++++++++++------------ test/test-basic-file-io.c | 1 + test/test-fd-prestat-dir-name.c | 1 + test/test-path-create-remove-directory.c | 1 + test/test-path-resolution.c | 2 +- 11 files changed, 77 insertions(+), 66 deletions(-) rename {include => src}/fd_table.h (100%) diff --git a/include/uvwasi.h b/include/uvwasi.h index 96c75a3..b98581c 100644 --- a/include/uvwasi.h +++ b/include/uvwasi.h @@ -5,9 +5,7 @@ extern "C" { #endif -#include "uv.h" #include "wasi_types.h" -#include "fd_table.h" #define UVWASI_VERSION_MAJOR 0 #define UVWASI_VERSION_MINOR 0 @@ -35,8 +33,10 @@ typedef struct uvwasi_mem_s { uvwasi_realloc realloc; } uvwasi_mem_t; +struct uvwasi_fd_table_t; + typedef struct uvwasi_s { - struct uvwasi_fd_table_t fds; + struct uvwasi_fd_table_t* fds; uvwasi_size_t argc; char** argv; char* argv_buf; @@ -69,9 +69,10 @@ typedef struct uvwasi_options_s { /* Embedder API. */ uvwasi_errno_t uvwasi_init(uvwasi_t* uvwasi, uvwasi_options_t* options); void uvwasi_destroy(uvwasi_t* uvwasi); +/* Use int instead of uv_file to avoid needing uv.h */ uvwasi_errno_t uvwasi_embedder_remap_fd(uvwasi_t* uvwasi, const uvwasi_fd_t fd, - uv_file new_host_fd); + int new_host_fd); const char* uvwasi_embedder_err_code_to_string(uvwasi_errno_t code); diff --git a/src/fd_table.c b/src/fd_table.c index 3d134e3..877faf4 100644 --- a/src/fd_table.c +++ b/src/fd_table.c @@ -181,26 +181,25 @@ uvwasi_errno_t uvwasi_fd_table_init(uvwasi_t* uvwasi, if (uvwasi == NULL || options == NULL || options->fd_table_size < 3) return UVWASI_EINVAL; - table = &uvwasi->fds; - table->fds = NULL; + table = uvwasi__malloc(uvwasi, sizeof(*table)); + if (table == NULL) + return UVWASI_ENOMEM; + table->used = 0; table->size = options->fd_table_size; table->fds = uvwasi__calloc(uvwasi, options->fd_table_size, sizeof(struct uvwasi_fd_wrap_t*)); - - if (table->fds == NULL) + if (table->fds == NULL) { + uvwasi__free(uvwasi, table); return UVWASI_ENOMEM; + } r = uv_rwlock_init(&table->rwlock); if (r != 0) { err = uvwasi__translate_uv_error(r); - /* Free table->fds and set it to NULL here. This is done explicitly instead - of jumping to error_exit because uvwasi_fd_table_free() relies on fds - being NULL to know whether or not to destroy the rwlock. - */ uvwasi__free(uvwasi, table->fds); - table->fds = NULL; + uvwasi__free(uvwasi, table); return err; } @@ -217,6 +216,7 @@ uvwasi_errno_t uvwasi_fd_table_init(uvwasi_t* uvwasi, if (err != UVWASI_ESUCCESS) goto error_exit; + uvwasi->fds = table; return UVWASI_ESUCCESS; error_exit: uvwasi_fd_table_free(uvwasi, table); @@ -228,12 +228,14 @@ void uvwasi_fd_table_free(uvwasi_t* uvwasi, struct uvwasi_fd_table_t* table) { struct uvwasi_fd_wrap_t* entry; uint32_t i; - if (table == NULL) + if (uvwasi == NULL || table == NULL) return; for (i = 0; i < table->size; i++) { entry = table->fds[i]; - if (entry == NULL) continue; + + if (entry == NULL) + continue; uv_mutex_destroy(&entry->mutex); uvwasi__free(uvwasi, entry); @@ -246,6 +248,8 @@ void uvwasi_fd_table_free(uvwasi_t* uvwasi, struct uvwasi_fd_table_t* table) { table->used = 0; uv_rwlock_destroy(&table->rwlock); } + + uvwasi__free(uvwasi, table); } diff --git a/include/fd_table.h b/src/fd_table.h similarity index 100% rename from include/fd_table.h rename to src/fd_table.h diff --git a/src/path_resolver.h b/src/path_resolver.h index ad01378..5040c69 100644 --- a/src/path_resolver.h +++ b/src/path_resolver.h @@ -1,6 +1,7 @@ #ifndef __UVWASI_PATH_RESOLVER_H__ #define __UVWASI_PATH_RESOLVER_H__ +#include "fd_table.h" #include "uvwasi.h" uvwasi_errno_t uvwasi__normalize_path(const char* path, diff --git a/src/poll_oneoff.c b/src/poll_oneoff.c index dee472f..97b8ef3 100644 --- a/src/poll_oneoff.c +++ b/src/poll_oneoff.c @@ -201,7 +201,7 @@ uvwasi_errno_t uvwasi__poll_oneoff_state_add_fdevent( /* Get the file descriptor. If UVWASI_EBADF is returned, continue on, but don't do any polling with the handle. */ - err = uvwasi_fd_table_get(&state->uvwasi->fds, fd, &event->wrap, rights, 0); + err = uvwasi_fd_table_get(state->uvwasi->fds, fd, &event->wrap, rights, 0); if (err == UVWASI_EBADF) event->wrap = NULL; else if (err != UVWASI_ESUCCESS) diff --git a/src/poll_oneoff.h b/src/poll_oneoff.h index 77e5920..64a315a 100644 --- a/src/poll_oneoff.h +++ b/src/poll_oneoff.h @@ -1,6 +1,7 @@ #ifndef __UVWASI_POLL_ONEOFF_H__ #define __UVWASI_POLL_ONEOFF_H__ +#include "fd_table.h" #include "wasi_types.h" struct uvwasi_s; diff --git a/src/uvwasi.c b/src/uvwasi.c index 92f3455..fc8f0ee 100644 --- a/src/uvwasi.c +++ b/src/uvwasi.c @@ -175,7 +175,7 @@ uvwasi_errno_t uvwasi_init(uvwasi_t* uvwasi, uvwasi_options_t* options) { uvwasi->argv = NULL; uvwasi->env_buf = NULL; uvwasi->env = NULL; - uvwasi->fds.fds = NULL; + uvwasi->fds = NULL; args_size = 0; for (i = 0; i < options->argc; ++i) @@ -272,7 +272,7 @@ uvwasi_errno_t uvwasi_init(uvwasi_t* uvwasi, uvwasi_options_t* options) { } err = uvwasi_fd_table_insert_preopen(uvwasi, - &uvwasi->fds, + uvwasi->fds, open_req.result, options->preopens[i].mapped_path, realpath_req.ptr); @@ -295,11 +295,12 @@ void uvwasi_destroy(uvwasi_t* uvwasi) { if (uvwasi == NULL) return; - uvwasi_fd_table_free(uvwasi, &uvwasi->fds); + uvwasi_fd_table_free(uvwasi, uvwasi->fds); uvwasi__free(uvwasi, uvwasi->argv_buf); uvwasi__free(uvwasi, uvwasi->argv); uvwasi__free(uvwasi, uvwasi->env_buf); uvwasi__free(uvwasi, uvwasi->env); + uvwasi->fds = NULL; uvwasi->argv_buf = NULL; uvwasi->argv = NULL; uvwasi->env_buf = NULL; @@ -316,7 +317,7 @@ uvwasi_errno_t uvwasi_embedder_remap_fd(uvwasi_t* uvwasi, if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, 0, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, 0, 0); if (err != UVWASI_ESUCCESS) return err; @@ -517,7 +518,7 @@ uvwasi_errno_t uvwasi_fd_advise(uvwasi_t* uvwasi, return UVWASI_EINVAL; } - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_ADVISE, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_ADVISE, 0); if (err != UVWASI_ESUCCESS) return err; @@ -555,7 +556,7 @@ uvwasi_errno_t uvwasi_fd_allocate(uvwasi_t* uvwasi, if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_ALLOCATE, @@ -607,9 +608,9 @@ uvwasi_errno_t uvwasi_fd_close(uvwasi_t* uvwasi, uvwasi_fd_t fd) { if (uvwasi == NULL) return UVWASI_EINVAL; - uvwasi_fd_table_lock(&uvwasi->fds); + uvwasi_fd_table_lock(uvwasi->fds); - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, fd, &wrap, 0, 0); + err = uvwasi_fd_table_get_nolock(uvwasi->fds, fd, &wrap, 0, 0); if (err != UVWASI_ESUCCESS) goto exit; @@ -622,10 +623,10 @@ uvwasi_errno_t uvwasi_fd_close(uvwasi_t* uvwasi, uvwasi_fd_t fd) { goto exit; } - err = uvwasi_fd_table_remove_nolock(uvwasi, &uvwasi->fds, fd); + err = uvwasi_fd_table_remove_nolock(uvwasi, uvwasi->fds, fd); exit: - uvwasi_fd_table_unlock(&uvwasi->fds); + uvwasi_fd_table_unlock(uvwasi->fds); return err; } @@ -641,7 +642,7 @@ uvwasi_errno_t uvwasi_fd_datasync(uvwasi_t* uvwasi, uvwasi_fd_t fd) { if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_DATASYNC, @@ -674,7 +675,7 @@ uvwasi_errno_t uvwasi_fd_fdstat_get(uvwasi_t* uvwasi, if (uvwasi == NULL || buf == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, 0, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, 0, 0); if (err != UVWASI_ESUCCESS) return err; @@ -723,7 +724,7 @@ uvwasi_errno_t uvwasi_fd_fdstat_set_flags(uvwasi_t* uvwasi, if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_FDSTAT_SET_FLAGS, @@ -786,7 +787,7 @@ uvwasi_errno_t uvwasi_fd_fdstat_set_rights(uvwasi_t* uvwasi, if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, 0, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, 0, 0); if (err != UVWASI_ESUCCESS) return err; @@ -824,7 +825,7 @@ uvwasi_errno_t uvwasi_fd_filestat_get(uvwasi_t* uvwasi, if (uvwasi == NULL || buf == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_FILESTAT_GET, @@ -864,7 +865,7 @@ uvwasi_errno_t uvwasi_fd_filestat_set_size(uvwasi_t* uvwasi, if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_FILESTAT_SET_SIZE, @@ -910,7 +911,7 @@ uvwasi_errno_t uvwasi_fd_filestat_set_times(uvwasi_t* uvwasi, return UVWASI_EINVAL; } - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_FILESTAT_SET_TIMES, @@ -955,7 +956,7 @@ uvwasi_errno_t uvwasi_fd_pread(uvwasi_t* uvwasi, if (uvwasi == NULL || iovs == NULL || nread == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_READ | UVWASI_RIGHT_FD_SEEK, @@ -997,7 +998,7 @@ uvwasi_errno_t uvwasi_fd_prestat_get(uvwasi_t* uvwasi, if (uvwasi == NULL || buf == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, 0, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, 0, 0); if (err != UVWASI_ESUCCESS) return err; if (wrap->preopen != 1) { @@ -1031,7 +1032,7 @@ uvwasi_errno_t uvwasi_fd_prestat_dir_name(uvwasi_t* uvwasi, if (uvwasi == NULL || path == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, 0, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, 0, 0); if (err != UVWASI_ESUCCESS) return err; if (wrap->preopen != 1) { @@ -1078,7 +1079,7 @@ uvwasi_errno_t uvwasi_fd_pwrite(uvwasi_t* uvwasi, if (uvwasi == NULL || iovs == NULL || nwritten == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_WRITE | UVWASI_RIGHT_FD_SEEK, @@ -1128,7 +1129,7 @@ uvwasi_errno_t uvwasi_fd_read(uvwasi_t* uvwasi, if (uvwasi == NULL || iovs == NULL || nread == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_READ, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_READ, 0); if (err != UVWASI_ESUCCESS) return err; @@ -1185,7 +1186,7 @@ uvwasi_errno_t uvwasi_fd_readdir(uvwasi_t* uvwasi, if (uvwasi == NULL || buf == NULL || bufused == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_READDIR, @@ -1309,7 +1310,7 @@ uvwasi_errno_t uvwasi_fd_renumber(uvwasi_t* uvwasi, if (uvwasi == NULL) return UVWASI_EINVAL; - return uvwasi_fd_table_renumber(uvwasi, &uvwasi->fds, to, from); + return uvwasi_fd_table_renumber(uvwasi, uvwasi->fds, to, from); } @@ -1332,7 +1333,7 @@ uvwasi_errno_t uvwasi_fd_seek(uvwasi_t* uvwasi, if (uvwasi == NULL || newoffset == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_SEEK, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_SEEK, 0); if (err != UVWASI_ESUCCESS) return err; @@ -1353,7 +1354,7 @@ uvwasi_errno_t uvwasi_fd_sync(uvwasi_t* uvwasi, uvwasi_fd_t fd) { if (uvwasi == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_SYNC, @@ -1383,7 +1384,7 @@ uvwasi_errno_t uvwasi_fd_tell(uvwasi_t* uvwasi, if (uvwasi == NULL || offset == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_TELL, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_TELL, 0); if (err != UVWASI_ESUCCESS) return err; @@ -1416,7 +1417,7 @@ uvwasi_errno_t uvwasi_fd_write(uvwasi_t* uvwasi, if (uvwasi == NULL || iovs == NULL || nwritten == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_WRITE, 0); + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_FD_WRITE, 0); if (err != UVWASI_ESUCCESS) return err; @@ -1460,7 +1461,7 @@ uvwasi_errno_t uvwasi_path_create_directory(uvwasi_t* uvwasi, if (uvwasi == NULL || path == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_CREATE_DIRECTORY, @@ -1512,7 +1513,7 @@ uvwasi_errno_t uvwasi_path_filestat_get(uvwasi_t* uvwasi, if (uvwasi == NULL || path == NULL || buf == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_FILESTAT_GET, @@ -1580,7 +1581,7 @@ uvwasi_errno_t uvwasi_path_filestat_set_times(uvwasi_t* uvwasi, return UVWASI_EINVAL; } - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_FILESTAT_SET_TIMES, @@ -1644,10 +1645,10 @@ uvwasi_errno_t uvwasi_path_link(uvwasi_t* uvwasi, if (uvwasi == NULL || old_path == NULL || new_path == NULL) return UVWASI_EINVAL; - uvwasi_fd_table_lock(&uvwasi->fds); + uvwasi_fd_table_lock(uvwasi->fds); if (old_fd == new_fd) { - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, + err = uvwasi_fd_table_get_nolock(uvwasi->fds, old_fd, &old_wrap, UVWASI_RIGHT_PATH_LINK_SOURCE | @@ -1655,17 +1656,17 @@ uvwasi_errno_t uvwasi_path_link(uvwasi_t* uvwasi, 0); new_wrap = old_wrap; } else { - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, + err = uvwasi_fd_table_get_nolock(uvwasi->fds, old_fd, &old_wrap, UVWASI_RIGHT_PATH_LINK_SOURCE, 0); if (err != UVWASI_ESUCCESS) { - uvwasi_fd_table_unlock(&uvwasi->fds); + uvwasi_fd_table_unlock(uvwasi->fds); return err; } - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, + err = uvwasi_fd_table_get_nolock(uvwasi->fds, new_fd, &new_wrap, UVWASI_RIGHT_PATH_LINK_TARGET, @@ -1674,7 +1675,7 @@ uvwasi_errno_t uvwasi_path_link(uvwasi_t* uvwasi, uv_mutex_unlock(&old_wrap->mutex); } - uvwasi_fd_table_unlock(&uvwasi->fds); + uvwasi_fd_table_unlock(uvwasi->fds); if (err != UVWASI_ESUCCESS) return err; @@ -1807,7 +1808,7 @@ uvwasi_errno_t uvwasi_path_open(uvwasi_t* uvwasi, if (write && (flags & (UV_FS_O_APPEND | UV_FS_O_TRUNC)) == 0) needed_inheriting |= UVWASI_RIGHT_FD_SEEK; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, dirfd, &dirfd_wrap, needed_base, @@ -1852,7 +1853,7 @@ uvwasi_errno_t uvwasi_path_open(uvwasi_t* uvwasi, goto close_file_and_error_exit; err = uvwasi_fd_table_insert(uvwasi, - &uvwasi->fds, + uvwasi->fds, r, resolved_path, resolved_path, @@ -1904,7 +1905,7 @@ uvwasi_errno_t uvwasi_path_readlink(uvwasi_t* uvwasi, if (uvwasi == NULL || path == NULL || buf == NULL || bufused == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_READLINK, @@ -1960,7 +1961,7 @@ uvwasi_errno_t uvwasi_path_remove_directory(uvwasi_t* uvwasi, if (uvwasi == NULL || path == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_REMOVE_DIRECTORY, @@ -2014,10 +2015,10 @@ uvwasi_errno_t uvwasi_path_rename(uvwasi_t* uvwasi, if (uvwasi == NULL || old_path == NULL || new_path == NULL) return UVWASI_EINVAL; - uvwasi_fd_table_lock(&uvwasi->fds); + uvwasi_fd_table_lock(uvwasi->fds); if (old_fd == new_fd) { - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, + err = uvwasi_fd_table_get_nolock(uvwasi->fds, old_fd, &old_wrap, UVWASI_RIGHT_PATH_RENAME_SOURCE | @@ -2025,17 +2026,17 @@ uvwasi_errno_t uvwasi_path_rename(uvwasi_t* uvwasi, 0); new_wrap = old_wrap; } else { - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, + err = uvwasi_fd_table_get_nolock(uvwasi->fds, old_fd, &old_wrap, UVWASI_RIGHT_PATH_RENAME_SOURCE, 0); if (err != UVWASI_ESUCCESS) { - uvwasi_fd_table_unlock(&uvwasi->fds); + uvwasi_fd_table_unlock(uvwasi->fds); return err; } - err = uvwasi_fd_table_get_nolock(&uvwasi->fds, + err = uvwasi_fd_table_get_nolock(uvwasi->fds, new_fd, &new_wrap, UVWASI_RIGHT_PATH_RENAME_TARGET, @@ -2044,7 +2045,7 @@ uvwasi_errno_t uvwasi_path_rename(uvwasi_t* uvwasi, uv_mutex_unlock(&old_wrap->mutex); } - uvwasi_fd_table_unlock(&uvwasi->fds); + uvwasi_fd_table_unlock(uvwasi->fds); if (err != UVWASI_ESUCCESS) return err; @@ -2113,7 +2114,7 @@ uvwasi_errno_t uvwasi_path_symlink(uvwasi_t* uvwasi, if (uvwasi == NULL || old_path == NULL || new_path == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_SYMLINK, @@ -2163,7 +2164,7 @@ uvwasi_errno_t uvwasi_path_unlink_file(uvwasi_t* uvwasi, if (uvwasi == NULL || path == NULL) return UVWASI_EINVAL; - err = uvwasi_fd_table_get(&uvwasi->fds, + err = uvwasi_fd_table_get(uvwasi->fds, fd, &wrap, UVWASI_RIGHT_PATH_UNLINK_FILE, diff --git a/test/test-basic-file-io.c b/test/test-basic-file-io.c index 84d756c..50c7824 100644 --- a/test/test-basic-file-io.c +++ b/test/test-basic-file-io.c @@ -2,6 +2,7 @@ #include #include #include "uvwasi.h" +#include "uv.h" #define TEST_TMP_DIR "./out/tmp" diff --git a/test/test-fd-prestat-dir-name.c b/test/test-fd-prestat-dir-name.c index cb14f10..8352f4c 100644 --- a/test/test-fd-prestat-dir-name.c +++ b/test/test-fd-prestat-dir-name.c @@ -2,6 +2,7 @@ #include #include #include "uvwasi.h" +#include "uv.h" #define TEST_TMP_DIR "./out/tmp" diff --git a/test/test-path-create-remove-directory.c b/test/test-path-create-remove-directory.c index b59114a..89e842f 100644 --- a/test/test-path-create-remove-directory.c +++ b/test/test-path-create-remove-directory.c @@ -2,6 +2,7 @@ #include #include #include "uvwasi.h" +#include "uv.h" #define TEST_TMP_DIR "./out/tmp" #define TEST_MKDIR_PATH TEST_TMP_DIR "/test_dir" diff --git a/test/test-path-resolution.c b/test/test-path-resolution.c index b2dfbf1..65debbc 100644 --- a/test/test-path-resolution.c +++ b/test/test-path-resolution.c @@ -2,7 +2,7 @@ #include #include #include "uvwasi.h" -#include "fd_table.h" +#include "../src/fd_table.h" #include "../src/path_resolver.h" #include "../src/wasi_rights.h"