aboutsummaryrefslogtreecommitdiffhomepage
path: root/seccomp/output.go
blob: d583c9ee621d9b8aaea9e76cc3c0f6c634d5b282 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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))
	}
}