mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[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
This commit is contained in:
314
vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go
generated
vendored
Normal file
314
vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go
generated
vendored
Normal file
@ -0,0 +1,314 @@
|
||||
package wasip1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/tetratelabs/wazero/experimental/sys"
|
||||
)
|
||||
|
||||
// Errno is neither uint16 nor an alias for parity with wasm.ValueType.
|
||||
type Errno = uint32
|
||||
|
||||
// ErrnoName returns the POSIX error code name, except ErrnoSuccess, which is
|
||||
// not an error. e.g. Errno2big -> "E2BIG"
|
||||
func ErrnoName(errno uint32) string {
|
||||
if int(errno) < len(errnoToString) {
|
||||
return errnoToString[errno]
|
||||
}
|
||||
return fmt.Sprintf("errno(%d)", errno)
|
||||
}
|
||||
|
||||
// Note: Below prefers POSIX symbol names over WASI ones, even if the docs are from WASI.
|
||||
// See https://linux.die.net/man/3/errno
|
||||
// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#variants-1
|
||||
const (
|
||||
// ErrnoSuccess No error occurred. System call completed successfully.
|
||||
ErrnoSuccess Errno = iota
|
||||
// Errno2big Argument list too long.
|
||||
Errno2big
|
||||
// ErrnoAcces Permission denied.
|
||||
ErrnoAcces
|
||||
// ErrnoAddrinuse Address in use.
|
||||
ErrnoAddrinuse
|
||||
// ErrnoAddrnotavail Address not available.
|
||||
ErrnoAddrnotavail
|
||||
// ErrnoAfnosupport Address family not supported.
|
||||
ErrnoAfnosupport
|
||||
// ErrnoAgain Resource unavailable, or operation would block.
|
||||
ErrnoAgain
|
||||
// ErrnoAlready Connection already in progress.
|
||||
ErrnoAlready
|
||||
// ErrnoBadf Bad file descriptor.
|
||||
ErrnoBadf
|
||||
// ErrnoBadmsg Bad message.
|
||||
ErrnoBadmsg
|
||||
// ErrnoBusy Device or resource busy.
|
||||
ErrnoBusy
|
||||
// ErrnoCanceled Operation canceled.
|
||||
ErrnoCanceled
|
||||
// ErrnoChild No child processes.
|
||||
ErrnoChild
|
||||
// ErrnoConnaborted Connection aborted.
|
||||
ErrnoConnaborted
|
||||
// ErrnoConnrefused Connection refused.
|
||||
ErrnoConnrefused
|
||||
// ErrnoConnreset Connection reset.
|
||||
ErrnoConnreset
|
||||
// ErrnoDeadlk Resource deadlock would occur.
|
||||
ErrnoDeadlk
|
||||
// ErrnoDestaddrreq Destination address required.
|
||||
ErrnoDestaddrreq
|
||||
// ErrnoDom Mathematics argument out of domain of function.
|
||||
ErrnoDom
|
||||
// ErrnoDquot Reserved.
|
||||
ErrnoDquot
|
||||
// ErrnoExist File exists.
|
||||
ErrnoExist
|
||||
// ErrnoFault Bad address.
|
||||
ErrnoFault
|
||||
// ErrnoFbig File too large.
|
||||
ErrnoFbig
|
||||
// ErrnoHostunreach Host is unreachable.
|
||||
ErrnoHostunreach
|
||||
// ErrnoIdrm Identifier removed.
|
||||
ErrnoIdrm
|
||||
// ErrnoIlseq Illegal byte sequence.
|
||||
ErrnoIlseq
|
||||
// ErrnoInprogress Operation in progress.
|
||||
ErrnoInprogress
|
||||
// ErrnoIntr Interrupted function.
|
||||
ErrnoIntr
|
||||
// ErrnoInval Invalid argument.
|
||||
ErrnoInval
|
||||
// ErrnoIo I/O error.
|
||||
ErrnoIo
|
||||
// ErrnoIsconn Socket is connected.
|
||||
ErrnoIsconn
|
||||
// ErrnoIsdir Is a directory.
|
||||
ErrnoIsdir
|
||||
// ErrnoLoop Too many levels of symbolic links.
|
||||
ErrnoLoop
|
||||
// ErrnoMfile File descriptor value too large.
|
||||
ErrnoMfile
|
||||
// ErrnoMlink Too many links.
|
||||
ErrnoMlink
|
||||
// ErrnoMsgsize Message too large.
|
||||
ErrnoMsgsize
|
||||
// ErrnoMultihop Reserved.
|
||||
ErrnoMultihop
|
||||
// ErrnoNametoolong Filename too long.
|
||||
ErrnoNametoolong
|
||||
// ErrnoNetdown Network is down.
|
||||
ErrnoNetdown
|
||||
// ErrnoNetreset Connection aborted by network.
|
||||
ErrnoNetreset
|
||||
// ErrnoNetunreach Network unreachable.
|
||||
ErrnoNetunreach
|
||||
// ErrnoNfile Too many files open in system.
|
||||
ErrnoNfile
|
||||
// ErrnoNobufs No buffer space available.
|
||||
ErrnoNobufs
|
||||
// ErrnoNodev No such device.
|
||||
ErrnoNodev
|
||||
// ErrnoNoent No such file or directory.
|
||||
ErrnoNoent
|
||||
// ErrnoNoexec Executable file format error.
|
||||
ErrnoNoexec
|
||||
// ErrnoNolck No locks available.
|
||||
ErrnoNolck
|
||||
// ErrnoNolink Reserved.
|
||||
ErrnoNolink
|
||||
// ErrnoNomem Not enough space.
|
||||
ErrnoNomem
|
||||
// ErrnoNomsg No message of the desired type.
|
||||
ErrnoNomsg
|
||||
// ErrnoNoprotoopt No message of the desired type.
|
||||
ErrnoNoprotoopt
|
||||
// ErrnoNospc No space left on device.
|
||||
ErrnoNospc
|
||||
// ErrnoNosys function not supported.
|
||||
ErrnoNosys
|
||||
// ErrnoNotconn The socket is not connected.
|
||||
ErrnoNotconn
|
||||
// ErrnoNotdir Not a directory or a symbolic link to a directory.
|
||||
ErrnoNotdir
|
||||
// ErrnoNotempty Directory not empty.
|
||||
ErrnoNotempty
|
||||
// ErrnoNotrecoverable State not recoverable.
|
||||
ErrnoNotrecoverable
|
||||
// ErrnoNotsock Not a socket.
|
||||
ErrnoNotsock
|
||||
// ErrnoNotsup Not supported, or operation not supported on socket.
|
||||
ErrnoNotsup
|
||||
// ErrnoNotty Inappropriate I/O control operation.
|
||||
ErrnoNotty
|
||||
// ErrnoNxio No such device or address.
|
||||
ErrnoNxio
|
||||
// ErrnoOverflow Value too large to be stored in data type.
|
||||
ErrnoOverflow
|
||||
// ErrnoOwnerdead Previous owner died.
|
||||
ErrnoOwnerdead
|
||||
// ErrnoPerm Operation not permitted.
|
||||
ErrnoPerm
|
||||
// ErrnoPipe Broken pipe.
|
||||
ErrnoPipe
|
||||
// ErrnoProto Protocol error.
|
||||
ErrnoProto
|
||||
// ErrnoProtonosupport Protocol error.
|
||||
ErrnoProtonosupport
|
||||
// ErrnoPrototype Protocol wrong type for socket.
|
||||
ErrnoPrototype
|
||||
// ErrnoRange Result too large.
|
||||
ErrnoRange
|
||||
// ErrnoRofs Read-only file system.
|
||||
ErrnoRofs
|
||||
// ErrnoSpipe Invalid seek.
|
||||
ErrnoSpipe
|
||||
// ErrnoSrch No such process.
|
||||
ErrnoSrch
|
||||
// ErrnoStale Reserved.
|
||||
ErrnoStale
|
||||
// ErrnoTimedout Connection timed out.
|
||||
ErrnoTimedout
|
||||
// ErrnoTxtbsy Text file busy.
|
||||
ErrnoTxtbsy
|
||||
// ErrnoXdev Cross-device link.
|
||||
ErrnoXdev
|
||||
|
||||
// Note: ErrnoNotcapable was removed by WASI maintainers.
|
||||
// See https://github.com/WebAssembly/wasi-libc/pull/294
|
||||
)
|
||||
|
||||
var errnoToString = [...]string{
|
||||
"ESUCCESS",
|
||||
"E2BIG",
|
||||
"EACCES",
|
||||
"EADDRINUSE",
|
||||
"EADDRNOTAVAIL",
|
||||
"EAFNOSUPPORT",
|
||||
"EAGAIN",
|
||||
"EALREADY",
|
||||
"EBADF",
|
||||
"EBADMSG",
|
||||
"EBUSY",
|
||||
"ECANCELED",
|
||||
"ECHILD",
|
||||
"ECONNABORTED",
|
||||
"ECONNREFUSED",
|
||||
"ECONNRESET",
|
||||
"EDEADLK",
|
||||
"EDESTADDRREQ",
|
||||
"EDOM",
|
||||
"EDQUOT",
|
||||
"EEXIST",
|
||||
"EFAULT",
|
||||
"EFBIG",
|
||||
"EHOSTUNREACH",
|
||||
"EIDRM",
|
||||
"EILSEQ",
|
||||
"EINPROGRESS",
|
||||
"EINTR",
|
||||
"EINVAL",
|
||||
"EIO",
|
||||
"EISCONN",
|
||||
"EISDIR",
|
||||
"ELOOP",
|
||||
"EMFILE",
|
||||
"EMLINK",
|
||||
"EMSGSIZE",
|
||||
"EMULTIHOP",
|
||||
"ENAMETOOLONG",
|
||||
"ENETDOWN",
|
||||
"ENETRESET",
|
||||
"ENETUNREACH",
|
||||
"ENFILE",
|
||||
"ENOBUFS",
|
||||
"ENODEV",
|
||||
"ENOENT",
|
||||
"ENOEXEC",
|
||||
"ENOLCK",
|
||||
"ENOLINK",
|
||||
"ENOMEM",
|
||||
"ENOMSG",
|
||||
"ENOPROTOOPT",
|
||||
"ENOSPC",
|
||||
"ENOSYS",
|
||||
"ENOTCONN",
|
||||
"ENOTDIR",
|
||||
"ENOTEMPTY",
|
||||
"ENOTRECOVERABLE",
|
||||
"ENOTSOCK",
|
||||
"ENOTSUP",
|
||||
"ENOTTY",
|
||||
"ENXIO",
|
||||
"EOVERFLOW",
|
||||
"EOWNERDEAD",
|
||||
"EPERM",
|
||||
"EPIPE",
|
||||
"EPROTO",
|
||||
"EPROTONOSUPPORT",
|
||||
"EPROTOTYPE",
|
||||
"ERANGE",
|
||||
"EROFS",
|
||||
"ESPIPE",
|
||||
"ESRCH",
|
||||
"ESTALE",
|
||||
"ETIMEDOUT",
|
||||
"ETXTBSY",
|
||||
"EXDEV",
|
||||
"ENOTCAPABLE",
|
||||
}
|
||||
|
||||
// ToErrno coerces the error to a WASI Errno.
|
||||
//
|
||||
// Note: Coercion isn't centralized in sys.FSContext because ABI use different
|
||||
// error codes. For example, wasi-filesystem doesn't map to these
|
||||
// Errno.
|
||||
func ToErrno(errno sys.Errno) Errno {
|
||||
switch errno {
|
||||
case 0:
|
||||
return ErrnoSuccess
|
||||
case sys.EACCES:
|
||||
return ErrnoAcces
|
||||
case sys.EAGAIN:
|
||||
return ErrnoAgain
|
||||
case sys.EBADF:
|
||||
return ErrnoBadf
|
||||
case sys.EEXIST:
|
||||
return ErrnoExist
|
||||
case sys.EFAULT:
|
||||
return ErrnoFault
|
||||
case sys.EINTR:
|
||||
return ErrnoIntr
|
||||
case sys.EINVAL:
|
||||
return ErrnoInval
|
||||
case sys.EIO:
|
||||
return ErrnoIo
|
||||
case sys.EISDIR:
|
||||
return ErrnoIsdir
|
||||
case sys.ELOOP:
|
||||
return ErrnoLoop
|
||||
case sys.ENAMETOOLONG:
|
||||
return ErrnoNametoolong
|
||||
case sys.ENOENT:
|
||||
return ErrnoNoent
|
||||
case sys.ENOSYS:
|
||||
return ErrnoNosys
|
||||
case sys.ENOTDIR:
|
||||
return ErrnoNotdir
|
||||
case sys.ERANGE:
|
||||
return ErrnoRange
|
||||
case sys.ENOTEMPTY:
|
||||
return ErrnoNotempty
|
||||
case sys.ENOTSOCK:
|
||||
return ErrnoNotsock
|
||||
case sys.ENOTSUP:
|
||||
return ErrnoNotsup
|
||||
case sys.EPERM:
|
||||
return ErrnoPerm
|
||||
case sys.EROFS:
|
||||
return ErrnoRofs
|
||||
default:
|
||||
return ErrnoIo
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user