summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-07-12 09:39:47 +0000
committerLibravatar GitHub <noreply@github.com>2024-07-12 09:39:47 +0000
commitcde2fb6244a791b3c5b746112e3a8be3a79f39a4 (patch)
tree6079d6fb66d90ffbe8c1623525bb86829c162459 /vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
parent[chore] Add interaction policy gtsmodels (#3075) (diff)
downloadgotosocial-cde2fb6244a791b3c5b746112e3a8be3a79f39a4.tar.xz
[feature] support processing of (many) more media types (#3090)
* initial work replacing our media decoding / encoding pipeline with ffprobe + ffmpeg * specify the video codec to use when generating static image from emoji * update go-storage library (fixes incompatibility after updating go-iotools) * maintain image aspect ratio when generating a thumbnail for it * update readme to show go-ffmpreg * fix a bunch of media tests, move filesize checking to callers of media manager for more flexibility * remove extra debug from error message * fix up incorrect function signatures * update PutFile to just use regular file copy, as changes are file is on separate partition * fix remaining tests, remove some unneeded tests now we're working with ffmpeg/ffprobe * update more tests, add more code comments * add utilities to generate processed emoji / media outputs * fix remaining tests * add test for opus media file, add license header to utility cmds * limit the number of concurrently available ffmpeg / ffprobe instances * reduce number of instances * further reduce number of instances * fix envparsing test with configuration variables * update docs and configuration with new media-{local,remote}-max-size variables
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
+)