fortify/seccomp/output.go
Ophestra dd61efc55b
Some checks failed
Test / Create distribution (push) Failing after 21s
Test / Fpkg (push) Failing after 36s
Test / Fortify (push) Failing after 44s
Test / Data race detector (push) Failing after 41s
Test / Flake checks (push) Has been skipped
seccomp: install output atomically
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-03-17 01:09:12 +09:00

31 lines
465 B
Go

package seccomp
import "C"
import "sync/atomic"
var printlnP atomic.Pointer[func(v ...any)]
func SetOutput(f func(v ...any)) {
if f == nil {
// avoid storing nil function
printlnP.Store(nil)
} else {
printlnP.Store(&f)
}
}
func GetOutput() func(v ...any) {
if fp := printlnP.Load(); fp == nil {
return nil
} else {
return *fp
}
}
//export F_println
func F_println(v *C.char) {
if fp := printlnP.Load(); fp != nil {
(*fp)(C.GoString(v))
}
}