mirror of
https://codeberg.org/superseriousbusiness/gotosocial.git
synced 2024-12-26 10:58:16 +03:00
cde2fb6244
* 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
164 lines
4 KiB
Go
164 lines
4 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
|
|
)
|