signals: move ParseSignal to containerd package

Signed-off-by: Samuel Karp <skarp@amazon.com>
This commit is contained in:
Samuel Karp
2018-09-27 14:55:32 -07:00
parent df60d3272a
commit b392a3a8e4
6 changed files with 48 additions and 27 deletions

View File

@@ -18,11 +18,8 @@ package commands
import (
gocontext "context"
"fmt"
"os"
"os/signal"
"strconv"
"strings"
"syscall"
"github.com/containerd/containerd"
@@ -53,23 +50,3 @@ func StopCatch(sigc chan os.Signal) {
signal.Stop(sigc)
close(sigc)
}
// ParseSignal parses a given string into a syscall.Signal
// it checks that the signal exists in the platform-appropriate signalMap
func ParseSignal(rawSignal string) (syscall.Signal, error) {
s, err := strconv.Atoi(rawSignal)
if err == nil {
sig := syscall.Signal(s)
for _, msig := range signalMap {
if sig == msig {
return sig, nil
}
}
return -1, fmt.Errorf("unknown signal %q", rawSignal)
}
signal, ok := signalMap[strings.TrimPrefix(strings.ToUpper(rawSignal), "SIG")]
if !ok {
return -1, fmt.Errorf("unknown signal %q", rawSignal)
}
return signal, nil
}