From bc098da93f938e359c3d2976ed8d8a48a45d4edf Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sat, 5 Feb 2022 03:51:57 -0500 Subject: [PATCH] Implement all of os.Signal in arch-specific syscall This is basically copied from `syscall_js.go` from the Go standard library, since the existing parts were from there as well. --- src/syscall/syscall_libc_darwin.go | 15 +++++++++++++++ src/syscall/syscall_libc_nintendoswitch.go | 18 ++++++++++++++++++ src/syscall/syscall_libc_wasi.go | 15 +++++++++++++++ src/syscall/syscall_nonhosted.go | 18 ++++++++++++++++++ 4 files changed, 66 insertions(+) diff --git a/src/syscall/syscall_libc_darwin.go b/src/syscall/syscall_libc_darwin.go index ac89f74e..d3ec6376 100644 --- a/src/syscall/syscall_libc_darwin.go +++ b/src/syscall/syscall_libc_darwin.go @@ -4,6 +4,7 @@ package syscall import ( + "internal/itoa" "unsafe" ) @@ -82,6 +83,20 @@ const ( SIGTERM Signal = 0xf ) +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa.Itoa(int(s)) +} + +var signals = [...]string{} + const ( Stdin = 0 Stdout = 1 diff --git a/src/syscall/syscall_libc_nintendoswitch.go b/src/syscall/syscall_libc_nintendoswitch.go index 876f125c..98494643 100644 --- a/src/syscall/syscall_libc_nintendoswitch.go +++ b/src/syscall/syscall_libc_nintendoswitch.go @@ -3,6 +3,10 @@ package syscall +import ( + "internal/itoa" +) + // A Signal is a number describing a process signal. // It implements the os.Signal interface. type Signal int @@ -17,6 +21,20 @@ const ( SIGTERM ) +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa.Itoa(int(s)) +} + +var signals = [...]string{} + // File system const ( diff --git a/src/syscall/syscall_libc_wasi.go b/src/syscall/syscall_libc_wasi.go index a19420d7..c8c5dd0a 100644 --- a/src/syscall/syscall_libc_wasi.go +++ b/src/syscall/syscall_libc_wasi.go @@ -4,6 +4,7 @@ package syscall import ( + "internal/itoa" "unsafe" ) @@ -20,6 +21,20 @@ const ( SIGTERM = 15 ) +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa.Itoa(int(s)) +} + +var signals = [...]string{} + const ( Stdin = 0 Stdout = 1 diff --git a/src/syscall/syscall_nonhosted.go b/src/syscall/syscall_nonhosted.go index 2f590f2b..b63dc0b6 100644 --- a/src/syscall/syscall_nonhosted.go +++ b/src/syscall/syscall_nonhosted.go @@ -3,6 +3,10 @@ package syscall +import ( + "internal/itoa" +) + // Most code here has been copied from the Go sources: // https://github.com/golang/go/blob/go1.12/src/syscall/syscall_js.go // It has the following copyright note: @@ -25,6 +29,20 @@ const ( SIGTERM ) +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa.Itoa(int(s)) +} + +var signals = [...]string{} + // File system const (