Skip to content

Revert "libc-wasi: Make rights of STDIN/STDOUT/STDERR fixed and overl… #4448

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -459,27 +459,8 @@ fd_determine_type_rights(os_file_handle fd, __wasi_filetype_t *type,
__wasi_rights_t *rights_inheriting)
{
struct __wasi_filestat_t buf;
__wasi_errno_t error;

if (os_is_stdin_handle(fd)) {
*rights_base = RIGHTS_STDIN;
*rights_inheriting = RIGHTS_STDIN;
return __WASI_ESUCCESS;
}

if (os_is_stdout_handle(fd)) {
*rights_base = RIGHTS_STDOUT;
*rights_inheriting = RIGHTS_STDOUT;
return __WASI_ESUCCESS;
}

if (os_is_stderr_handle(fd)) {
*rights_base = RIGHTS_STDERR;
*rights_inheriting = RIGHTS_STDERR;
return __WASI_ESUCCESS;
}
__wasi_errno_t error = os_fstat(fd, &buf);

error = os_fstat(fd, &buf);
if (error != __WASI_ESUCCESS)
return error;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,6 @@
#define RIGHTS_CHARACTER_DEVICE_BASE RIGHTS_ALL
#define RIGHTS_CHARACTER_DEVICE_INHERITING RIGHTS_ALL

#define RIGHTS_STDIN \
(__WASI_RIGHT_FD_ADVISE | __WASI_RIGHT_FD_FILESTAT_GET | \
__WASI_RIGHT_FD_READ | __WASI_RIGHT_FD_WRITE | \
__WASI_RIGHT_POLL_FD_READWRITE)

#define RIGHTS_STDOUT \
(__WASI_RIGHT_FD_ADVISE | __WASI_RIGHT_FD_DATASYNC | \
__WASI_RIGHT_FD_FILESTAT_GET | __WASI_RIGHT_FD_SYNC | \
__WASI_RIGHT_FD_READ | __WASI_RIGHT_FD_WRITE | \
__WASI_RIGHT_POLL_FD_READWRITE)

#define RIGHTS_STDERR RIGHTS_STDOUT

// Only allow directory operations on directories. Directories can only
// yield file descriptors to other directories and files.
#define RIGHTS_DIRECTORY_BASE \
Expand Down
39 changes: 9 additions & 30 deletions core/shared/platform/common/posix/posix_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,6 @@
#define CONFIG_HAS_O_SYNC
#endif

#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endif

#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif

#ifndef STDERR_FILENO
#define STDERR_FILENO 2
#endif

// Converts a POSIX timespec to a WASI timestamp.
static __wasi_timestamp_t
convert_timespec(const struct timespec *ts)
Expand Down Expand Up @@ -870,39 +858,30 @@ os_isatty(os_file_handle handle)
#endif
}

bool
os_is_stdin_handle(os_file_handle fd)
{
return fd == STDIN_FILENO;
}

bool
os_is_stdout_handle(os_file_handle fd)
{
return fd == STDOUT_FILENO;
}

bool
os_is_stderr_handle(os_file_handle fd)
{
return fd == STDERR_FILENO;
}

os_file_handle
os_convert_stdin_handle(os_raw_file_handle raw_stdin)
{
#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endif
return raw_stdin >= 0 ? raw_stdin : STDIN_FILENO;
}

os_file_handle
os_convert_stdout_handle(os_raw_file_handle raw_stdout)
{
#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif
return raw_stdout >= 0 ? raw_stdout : STDOUT_FILENO;
}

os_file_handle
os_convert_stderr_handle(os_raw_file_handle raw_stderr)
{
#ifndef STDERR_FILENO
#define STDERR_FILENO 2
#endif
return raw_stderr >= 0 ? raw_stderr : STDERR_FILENO;
}

Expand Down
39 changes: 9 additions & 30 deletions core/shared/platform/esp-idf/espidf_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,6 @@
#define CONFIG_HAS_O_SYNC
#endif

#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endif

#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif

#ifndef STDERR_FILENO
#define STDERR_FILENO 2
#endif

// Converts a POSIX timespec to a WASI timestamp.
static __wasi_timestamp_t
convert_timespec(const struct timespec *ts)
Expand Down Expand Up @@ -870,39 +858,30 @@ os_isatty(os_file_handle handle)
#endif
}

bool
os_is_stdin_handle(os_file_handle fd)
{
return fd == STDIN_FILENO;
}

bool
os_is_stdout_handle(os_file_handle fd)
{
return fd == STDOUT_FILENO;
}

bool
os_is_stderr_handle(os_file_handle fd)
{
return fd == STDERR_FILENO;
}

os_file_handle
os_convert_stdin_handle(os_raw_file_handle raw_stdin)
{
#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endif
return raw_stdin >= 0 ? raw_stdin : STDIN_FILENO;
}

os_file_handle
os_convert_stdout_handle(os_raw_file_handle raw_stdout)
{
#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif
return raw_stdout >= 0 ? raw_stdout : STDOUT_FILENO;
}

os_file_handle
os_convert_stderr_handle(os_raw_file_handle raw_stderr)
{
#ifndef STDERR_FILENO
#define STDERR_FILENO 2
#endif
return raw_stderr >= 0 ? raw_stderr : STDERR_FILENO;
}

Expand Down
27 changes: 0 additions & 27 deletions core/shared/platform/include/platform_api_extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -1503,33 +1503,6 @@ os_convert_stdout_handle(os_raw_file_handle raw_stdout);
os_file_handle
os_convert_stderr_handle(os_raw_file_handle raw_stderr);

/**
*
* @param fd a file handle
*
* @return true if it is stdin
*/
bool
os_is_stdin_handle(os_file_handle fd);

/**
*
* @param fd a file handle
*
* @return true if it is stdout
*/
bool
os_is_stdout_handle(os_file_handle fd);

/**
*
* @param fd a file handle
*
* @return true if it is stderr
*/
bool
os_is_stderr_handle(os_file_handle fd);

/**
* Open a directory stream for the provided directory handle. The returned
* directory stream will be positioned at the first entry in the directory.
Expand Down
18 changes: 0 additions & 18 deletions core/shared/platform/windows/win_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1540,24 +1540,6 @@ create_stdio_handle(HANDLE raw_stdio_handle, DWORD stdio)
return stdio_handle;
}

bool
os_is_stdin_handle(os_file_handle fd)
{
return fd->raw.handle == GetStdHandle(STD_INPUT_HANDLE);
}

bool
os_is_stdout_handle(os_file_handle fd)
{
return fd->raw.handle == GetStdHandle(STD_OUTPUT_HANDLE);
}

bool
os_is_stderr_handle(os_file_handle fd)
{
return fd->raw.handle == GetStdHandle(STD_ERROR_HANDLE);
}

os_file_handle
os_convert_stdin_handle(os_raw_file_handle raw_stdin)
{
Expand Down
Loading