summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go')
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go164
1 files changed, 164 insertions, 0 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go b/vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
new file mode 100644
index 000000000..ed8df1edc
--- /dev/null
+++ b/vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
@@ -0,0 +1,164 @@
+package wasip1
+
+import (
+ "fmt"
+)
+
+const (
+ FdAdviseName = "fd_advise"
+ FdAllocateName = "fd_allocate"
+ FdCloseName = "fd_close"
+ FdDatasyncName = "fd_datasync"
+ FdFdstatGetName = "fd_fdstat_get"
+ FdFdstatSetFlagsName = "fd_fdstat_set_flags"
+ FdFdstatSetRightsName = "fd_fdstat_set_rights"
+ FdFilestatGetName = "fd_filestat_get"
+ FdFilestatSetSizeName = "fd_filestat_set_size"
+ FdFilestatSetTimesName = "fd_filestat_set_times"
+ FdPreadName = "fd_pread"
+ FdPrestatGetName = "fd_prestat_get"
+ FdPrestatDirNameName = "fd_prestat_dir_name"
+ FdPwriteName = "fd_pwrite"
+ FdReadName = "fd_read"
+ FdReaddirName = "fd_readdir"
+ FdRenumberName = "fd_renumber"
+ FdSeekName = "fd_seek"
+ FdSyncName = "fd_sync"
+ FdTellName = "fd_tell"
+ FdWriteName = "fd_write"
+
+ PathCreateDirectoryName = "path_create_directory"
+ PathFilestatGetName = "path_filestat_get"
+ PathFilestatSetTimesName = "path_filestat_set_times"
+ PathLinkName = "path_link"
+ PathOpenName = "path_open"
+ PathReadlinkName = "path_readlink"
+ PathRemoveDirectoryName = "path_remove_directory"
+ PathRenameName = "path_rename"
+ PathSymlinkName = "path_symlink"
+ PathUnlinkFileName = "path_unlink_file"
+)
+
+// oflags are open flags used by path_open
+// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-oflags-flagsu16
+const (
+ // O_CREAT creates a file if it does not exist.
+ O_CREAT uint16 = 1 << iota //nolint
+ // O_DIRECTORY fails if not a directory.
+ O_DIRECTORY
+ // O_EXCL fails if file already exists.
+ O_EXCL //nolint
+ // O_TRUNC truncates the file to size 0.
+ O_TRUNC //nolint
+)
+
+func OflagsString(oflags int) string {
+ return flagsString(oflagNames[:], oflags)
+}
+
+var oflagNames = [...]string{
+ "CREAT",
+ "DIRECTORY",
+ "EXCL",
+ "TRUNC",
+}
+
+// file descriptor flags
+// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fdflags
+const (
+ FD_APPEND uint16 = 1 << iota //nolint
+ FD_DSYNC
+ FD_NONBLOCK
+ FD_RSYNC
+ FD_SYNC
+)
+
+func FdFlagsString(fdflags int) string {
+ return flagsString(fdflagNames[:], fdflags)
+}
+
+var fdflagNames = [...]string{
+ "APPEND",
+ "DSYNC",
+ "NONBLOCK",
+ "RSYNC",
+ "SYNC",
+}
+
+// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#lookupflags
+const (
+ // LOOKUP_SYMLINK_FOLLOW expands a path if it resolves into a symbolic
+ // link.
+ LOOKUP_SYMLINK_FOLLOW uint16 = 1 << iota //nolint
+)
+
+var lookupflagNames = [...]string{
+ "SYMLINK_FOLLOW",
+}
+
+func LookupflagsString(lookupflags int) string {
+ return flagsString(lookupflagNames[:], lookupflags)
+}
+
+// DirentSize is the size of the dirent struct, which should be followed by the
+// length of a file name.
+const DirentSize = uint32(24)
+
+const (
+ FILETYPE_UNKNOWN uint8 = iota
+ FILETYPE_BLOCK_DEVICE
+ FILETYPE_CHARACTER_DEVICE
+ FILETYPE_DIRECTORY
+ FILETYPE_REGULAR_FILE
+ FILETYPE_SOCKET_DGRAM
+ FILETYPE_SOCKET_STREAM
+ FILETYPE_SYMBOLIC_LINK
+)
+
+// FiletypeName returns string name of the file type.
+func FiletypeName(filetype uint8) string {
+ if int(filetype) < len(filetypeToString) {
+ return filetypeToString[filetype]
+ }
+ return fmt.Sprintf("filetype(%d)", filetype)
+}
+
+var filetypeToString = [...]string{
+ "UNKNOWN",
+ "BLOCK_DEVICE",
+ "CHARACTER_DEVICE",
+ "DIRECTORY",
+ "REGULAR_FILE",
+ "SOCKET_DGRAM",
+ "SOCKET_STREAM",
+ "SYMBOLIC_LINK",
+}
+
+// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fstflags
+const (
+ FstflagsAtim uint16 = 1 << iota
+ FstflagsAtimNow
+ FstflagsMtim
+ FstflagsMtimNow
+)
+
+var fstflagNames = [...]string{
+ "ATIM",
+ "ATIM_NOW",
+ "MTIM",
+ "MTIM_NOW",
+}
+
+func FstflagsString(fdflags int) string {
+ return flagsString(fstflagNames[:], fdflags)
+}
+
+// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-advice-enumu8
+const (
+ FdAdviceNormal byte = iota
+ FdAdviceSequential
+ FdAdviceRandom
+ FdAdviceWillNeed
+ FdAdviceDontNeed
+ FdAdviceNoReuse
+)