31 lines
465 B
Go
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))
|
|
}
|
|
}
|