File tree Expand file tree Collapse file tree 5 files changed +17
-13
lines changed Expand file tree Collapse file tree 5 files changed +17
-13
lines changed Original file line number Diff line number Diff line change @@ -418,11 +418,6 @@ var SyscallsLibrary = {
418418 }
419419#endif // SYSCALLS_REQUIRE_FILESYSTEM
420420 } ,
421- __syscall_dup2: function ( oldfd , suggestFD ) {
422- var old = SYSCALLS . getStreamFromFD ( oldfd ) ;
423- if ( old . fd === suggestFD ) return suggestFD ;
424- return SYSCALLS . doDup ( old . path , old . flags , suggestFD ) ;
425- } ,
426421 __syscall_symlink: function ( target , linkpath ) {
427422 target = SYSCALLS . getStr ( target ) ;
428423 linkpath = SYSCALLS . getStr ( linkpath ) ;
@@ -1120,9 +1115,6 @@ var SyscallsLibrary = {
11201115 return 0 ;
11211116 } ,
11221117 __syscall_dup3 : function ( fd , suggestFD , flags ) {
1123- #if SYSCALL_DEBUG
1124- err ( 'warning: untested syscall: dup3' ) ;
1125- #endif
11261118 var old = SYSCALLS . getStreamFromFD ( fd ) ;
11271119#if ASSERTIONS
11281120 assert ( ! flags ) ;
Original file line number Diff line number Diff line change 1818#define SYS_ioctl __syscall_ioctl
1919#define SYS_setpgid __syscall_setpgid
2020#define SYS_umask __syscall_umask
21- #define SYS_dup2 __syscall_dup2
2221#define SYS_getppid __syscall_getppid
2322#define SYS_setsid __syscall_setsid
2423#define SYS_setrlimit __syscall_setrlimit
Original file line number Diff line number Diff line change @@ -31,7 +31,6 @@ long __syscall_acct(long filename);
3131long __syscall_ioctl (long fd , long request , ...);
3232long __syscall_setpgid (long pid , long gpid );
3333long __syscall_umask (long mask );
34- long __syscall_dup2 (long oldfd , long newfd );
3534long __syscall_getppid (void );
3635long __syscall_getpgrp (void );
3736long __syscall_setsid (void );
Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ int dup2(int old, int new)
1414#else
1515 if (old == new ) {
1616#ifdef __EMSCRIPTEN__
17- r = __wasi_fd_is_valid (old ) ? 0 : -1 ;
17+ r = __wasi_fd_is_valid (old ) ? 0 : - EBADF ;
1818#else
1919 r = __syscall (SYS_fcntl , old , F_GETFD );
2020#endif
Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ extern "C" {
2323
2424using namespace wasmfs ;
2525
26- long __syscall_dup2 (long oldfd, long newfd) {
26+ long __syscall_dup3 (long oldfd, long newfd, long flags ) {
2727 auto fileTable = wasmFS.getLockedFileTable ();
2828
2929 auto oldOpenFile = fileTable[oldfd];
@@ -38,7 +38,7 @@ long __syscall_dup2(long oldfd, long newfd) {
3838 }
3939
4040 if (oldfd == newfd) {
41- return oldfd ;
41+ return -EINVAL ;
4242 }
4343
4444 // If the file descriptor newfd was previously open, it will just be
@@ -426,4 +426,18 @@ __wasi_errno_t __wasi_fd_seek(__wasi_fd_t fd,
426426
427427 return __WASI_ERRNO_SUCCESS;
428428}
429+
430+ __wasi_errno_t __wasi_fd_fdstat_get (__wasi_fd_t fd, __wasi_fdstat_t * stat) {
431+ auto openFile = wasmFS.getLockedFileTable ()[fd];
432+ if (!openFile) {
433+ return __WASI_ERRNO_BADF;
434+ }
435+
436+ if (openFile.locked ().getFile ()->is <Directory>()) {
437+ stat->fs_filetype = __WASI_FILETYPE_DIRECTORY;
438+ } else {
439+ stat->fs_filetype = __WASI_FILETYPE_REGULAR_FILE;
440+ }
441+ return __WASI_ERRNO_SUCCESS;
442+ }
429443}
You can’t perform that action at this time.
0 commit comments