forked from mirrors/gotosocial
07727753b9
* Add whereNotEmptyAndNotNull * Add GetRemoteOlderThanDays * Add GetRemoteOlderThanDays * Add PruneRemote to Manager interface * Start implementing PruneRemote * add new attachment + status to tests * fix up and test GetRemoteOlderThan * fix bad import * PruneRemote: return number pruned * add Cached column to mediaattachment * update + test pruneRemote * update mediaTest * use Cached column * upstep bun to latest version * embed structs in mediaAttachment * migrate mediaAttachment to new format * don't default cached to true * select only remote media * update db dependencies * step bun back to last working version * update pruneRemote to use Cached field * fix storage path of test attachments * add recache logic to manager * fix trimmed aspect ratio * test prune and recache * return errwithcode * tidy up different paths for emoji vs attachment * fix incorrect thumbnail type being stored * expose TransportController to media processor * implement tee-ing recached content * add thoughts of dog to test fedi attachments * test get remote files * add comment on PruneRemote * add postData cleanup to recache * test thumbnail fetching * add incredible diagram * go mod tidy * buffer pipes for recache streaming * test for client stops reading after 1kb * add media-remote-cache-days to config * add cron package * wrap logrus so it's available to cron * start and stop cron jobs gracefully
490 lines
12 KiB
Go
490 lines
12 KiB
Go
package cc
|
|
|
|
import "encoding/binary"
|
|
|
|
// abiByteOrders contains byte order information for known architectures.
|
|
var (
|
|
abiByteOrders = map[string]binary.ByteOrder{
|
|
"amd64": binary.LittleEndian,
|
|
"386": binary.LittleEndian,
|
|
"arm": binary.LittleEndian,
|
|
"arm64": binary.LittleEndian,
|
|
"s390x": binary.BigEndian,
|
|
}
|
|
|
|
abiSignedChar = map[[2]string]bool{
|
|
{"linux", "arm"}: false,
|
|
{"linux", "arm64"}: false,
|
|
{"linux", "s390x"}: false,
|
|
|
|
{"darwin", "amd64"}: true,
|
|
{"darwin", "arm64"}: true,
|
|
{"freebsd", "amd64"}: true,
|
|
{"freebsd", "386"}: true,
|
|
{"linux", "386"}: true,
|
|
{"linux", "amd64"}: true,
|
|
{"netbsd", "amd64"}: true,
|
|
{"openbsd", "amd64"}: true,
|
|
{"windows", "386"}: true,
|
|
{"windows", "amd64"}: true,
|
|
}
|
|
)
|
|
|
|
// abiTypes contains size and alignment information for known OS/arch pairs.
|
|
//
|
|
// The content is generated by ./cmd/cabi/main.c.
|
|
var abiTypes = map[[2]string]map[Kind]ABIType{
|
|
// Linux, generated by GCC 8.3.0
|
|
{"linux", "amd64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 8, 8},
|
|
Float64: {8, 8, 8},
|
|
Float64x: {16, 16, 16},
|
|
Float128: {16, 16, 16},
|
|
Decimal32: {4, 4, 4},
|
|
Decimal64: {8, 8, 8},
|
|
Decimal128: {16, 16, 16},
|
|
},
|
|
{"linux", "386"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {4, 4, 4},
|
|
ULong: {4, 4, 4},
|
|
LongLong: {8, 4, 4},
|
|
ULongLong: {8, 4, 4},
|
|
Ptr: {4, 4, 4},
|
|
Function: {4, 4, 4},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 4, 4},
|
|
LongDouble: {12, 4, 4},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 4, 4},
|
|
UInt64: {8, 4, 4},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 4, 4},
|
|
Float64: {8, 4, 4},
|
|
Float64x: {12, 4, 4},
|
|
Float128: {16, 16, 16},
|
|
Decimal32: {4, 4, 4},
|
|
Decimal64: {8, 8, 8},
|
|
Decimal128: {16, 16, 16},
|
|
},
|
|
{"linux", "arm"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {4, 4, 4},
|
|
ULong: {4, 4, 4},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {4, 4, 4},
|
|
Function: {4, 4, 4},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {8, 8, 8},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
},
|
|
{"linux", "arm64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
},
|
|
// $ x86_64-w64-mingw32-gcc main.c && wine a.exe
|
|
{"windows", "amd64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {4, 4, 4},
|
|
ULong: {4, 4, 4},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 8, 8},
|
|
Float64: {8, 8, 8},
|
|
Float64x: {16, 16, 16},
|
|
Float128: {16, 16, 16},
|
|
Decimal32: {4, 4, 4},
|
|
Decimal64: {8, 8, 8},
|
|
Decimal128: {16, 16, 16},
|
|
},
|
|
// $ i686-w64-mingw32-gcc main.c && wine a.exe
|
|
{"windows", "386"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {4, 4, 4},
|
|
ULong: {4, 4, 4},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {4, 4, 4},
|
|
Function: {4, 4, 4},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {12, 4, 4},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 8, 8},
|
|
Float64: {8, 8, 8},
|
|
Float64x: {12, 4, 4},
|
|
Float128: {16, 16, 16},
|
|
Decimal32: {4, 4, 4},
|
|
Decimal64: {8, 8, 8},
|
|
Decimal128: {16, 16, 16},
|
|
},
|
|
{"darwin", "amd64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
},
|
|
{"darwin", "arm64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {8, 8, 8},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
},
|
|
// gcc (SUSE Linux) 7.5.0
|
|
{"linux", "s390x"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 8, 8},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 8, 8},
|
|
UInt128: {16, 8, 8},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 8, 8},
|
|
Float64: {8, 8, 8},
|
|
Float64x: {16, 8, 8},
|
|
Float128: {16, 8, 8},
|
|
Decimal32: {4, 4, 4},
|
|
Decimal64: {8, 8, 8},
|
|
Decimal128: {16, 8, 8},
|
|
},
|
|
// gcc (FreeBSD Ports Collection) 10.3.0
|
|
{"freebsd", "amd64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
},
|
|
// gcc (FreeBSD Ports Collection) 10.3.0
|
|
{"freebsd", "386"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {4, 4, 4},
|
|
ULong: {4, 4, 4},
|
|
LongLong: {8, 4, 4},
|
|
ULongLong: {8, 4, 4},
|
|
Ptr: {4, 4, 4},
|
|
Function: {4, 4, 4},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 4, 4},
|
|
LongDouble: {12, 4, 4},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 4, 4},
|
|
UInt64: {8, 4, 4},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 4, 4},
|
|
Float64: {8, 4, 4},
|
|
Float64x: {16, 16, 16},
|
|
Float128: {16, 16, 16},
|
|
},
|
|
// gcc (GCC) 8.4.0
|
|
{"openbsd", "amd64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
Float32: {4, 4, 4},
|
|
Float32x: {8, 8, 8},
|
|
Float64: {8, 8, 8},
|
|
Float64x: {16, 16, 16},
|
|
Float128: {16, 16, 16},
|
|
},
|
|
// gcc (GCC) 10.3.0
|
|
{"netbsd", "amd64"}: {
|
|
Void: {1, 1, 1},
|
|
Bool: {1, 1, 1},
|
|
Char: {1, 1, 1},
|
|
SChar: {1, 1, 1},
|
|
UChar: {1, 1, 1},
|
|
Short: {2, 2, 2},
|
|
UShort: {2, 2, 2},
|
|
Enum: {4, 4, 4},
|
|
Int: {4, 4, 4},
|
|
UInt: {4, 4, 4},
|
|
Long: {8, 8, 8},
|
|
ULong: {8, 8, 8},
|
|
LongLong: {8, 8, 8},
|
|
ULongLong: {8, 8, 8},
|
|
Ptr: {8, 8, 8},
|
|
Function: {8, 8, 8},
|
|
Float: {4, 4, 4},
|
|
Double: {8, 8, 8},
|
|
LongDouble: {16, 16, 16},
|
|
Int8: {1, 1, 1},
|
|
UInt8: {1, 1, 1},
|
|
Int16: {2, 2, 2},
|
|
UInt16: {2, 2, 2},
|
|
Int32: {4, 4, 4},
|
|
UInt32: {4, 4, 4},
|
|
Int64: {8, 8, 8},
|
|
UInt64: {8, 8, 8},
|
|
Int128: {16, 16, 16},
|
|
UInt128: {16, 16, 16},
|
|
},
|
|
}
|