mirror of
1
Fork 0
gotosocial/vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go

165 lines
4.0 KiB
Go

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
)