diff options
Diffstat (limited to 'seccomp/output.go')
| -rw-r--r-- | seccomp/output.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/seccomp/output.go b/seccomp/output.go new file mode 100644 index 00000000..d583c9ee --- /dev/null +++ b/seccomp/output.go @@ -0,0 +1,30 @@ +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)) + } +} |
