Browse code

Create portable signalMap

Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume@charmes.net> (github: creack)

Guillaume J. Charmes authored on 2014/03/11 05:50:16
Showing 5 changed files
... ...
@@ -5,6 +5,14 @@ import (
5 5
 	"os/signal"
6 6
 )
7 7
 
8
+func CatchAll(sigc chan os.Signal) {
9
+	handledSigs := []os.Signal{}
10
+	for _, s := range signalMap {
11
+		handledSigs = append(handledSigs, s)
12
+	}
13
+	signal.Notify(sigc, handledSigs...)
14
+}
15
+
8 16
 func StopCatch(sigc chan os.Signal) {
9 17
 	signal.Stop(sigc)
10 18
 	close(sigc)
... ...
@@ -1,44 +1,40 @@
1 1
 package signal
2 2
 
3 3
 import (
4
-	"os"
5
-	"os/signal"
6 4
 	"syscall"
7 5
 )
8 6
 
9
-func CatchAll(sigc chan os.Signal) {
10
-	signal.Notify(sigc,
11
-		syscall.SIGABRT,
12
-		syscall.SIGALRM,
13
-		syscall.SIGBUS,
14
-		syscall.SIGCHLD,
15
-		syscall.SIGCONT,
16
-		syscall.SIGEMT,
17
-		syscall.SIGFPE,
18
-		syscall.SIGHUP,
19
-		syscall.SIGILL,
20
-		syscall.SIGINFO,
21
-		syscall.SIGINT,
22
-		syscall.SIGIO,
23
-		syscall.SIGIOT,
24
-		syscall.SIGKILL,
25
-		syscall.SIGPIPE,
26
-		syscall.SIGPROF,
27
-		syscall.SIGQUIT,
28
-		syscall.SIGSEGV,
29
-		syscall.SIGSTOP,
30
-		syscall.SIGSYS,
31
-		syscall.SIGTERM,
32
-		syscall.SIGTRAP,
33
-		syscall.SIGTSTP,
34
-		syscall.SIGTTIN,
35
-		syscall.SIGTTOU,
36
-		syscall.SIGURG,
37
-		syscall.SIGUSR1,
38
-		syscall.SIGUSR2,
39
-		syscall.SIGVTALRM,
40
-		syscall.SIGWINCH,
41
-		syscall.SIGXCPU,
42
-		syscall.SIGXFSZ,
43
-	)
7
+var signalMap = map[string]syscall.Signal{
8
+	"ABRT": syscall.SIGABRT,
9
+	"ALRM": syscall.SIGALRM,
10
+	"BUG": syscall.SIGBUS,
11
+	"CHLD": syscall.SIGCHLD,
12
+	"CONT": syscall.SIGCONT,
13
+	"EMT": syscall.SIGEMT,
14
+	"FPE": syscall.SIGFPE,
15
+	"HUP": syscall.SIGHUP,
16
+	"ILL": syscall.SIGILL,
17
+	"INFO": syscall.SIGINFO,
18
+	"INT": syscall.SIGINT,
19
+	"IO": syscall.SIGIO,
20
+	"IOT": syscall.SIGIOT,
21
+	"KILL": syscall.SIGKILL,
22
+	"PIPE": syscall.SIGPIPE,
23
+	"PROF": syscall.SIGPROF,
24
+	"QUIT": syscall.SIGQUIT,
25
+	"SEGV": syscall.SIGSEGV,
26
+	"STOP": syscall.SIGSTOP,
27
+	"SYS": syscall.SIGSYS,
28
+	"TERM": syscall.SIGTERM,
29
+	"TRAP": syscall.SIGTRAP,
30
+	"TSTP": syscall.SIGTSTP,
31
+	"TTIN": syscall.SIGTTIN,
32
+	"TTOU": syscall.SIGTTOU,
33
+	"URG": syscall.SIGURG,
34
+	"USR1": syscall.SIGUSR1,
35
+	"USR2": syscall.SIGUSR2,
36
+	"VTALRM": syscall.SIGVTALRM,
37
+	"WINCH": syscall.SIGWINCH,
38
+	"XCPU": syscall.SIGXCPU,
39
+	"XFSZ": syscall.SIGXFSZ,
44 40
 }
... ...
@@ -6,37 +6,39 @@ import (
6 6
 	"syscall"
7 7
 )
8 8
 
9
-func CatchAll(sigc chan os.Signal) {
10
-	signal.Notify(sigc,
11
-		syscall.SIGABRT,
12
-		syscall.SIGALRM,
13
-		syscall.SIGBUS,
14
-		syscall.SIGCHLD,
15
-		syscall.SIGCONT,
16
-		syscall.SIGFPE,
17
-		syscall.SIGHUP,
18
-		syscall.SIGILL,
19
-		syscall.SIGINT,
20
-		syscall.SIGIO,
21
-		syscall.SIGIOT,
22
-		syscall.SIGKILL,
23
-		syscall.SIGPIPE,
24
-		syscall.SIGPROF,
25
-		syscall.SIGQUIT,
26
-		syscall.SIGSEGV,
27
-		syscall.SIGSTOP,
28
-		syscall.SIGSYS,
29
-		syscall.SIGTERM,
30
-		syscall.SIGTRAP,
31
-		syscall.SIGTSTP,
32
-		syscall.SIGTTIN,
33
-		syscall.SIGTTOU,
34
-		syscall.SIGURG,
35
-		syscall.SIGUSR1,
36
-		syscall.SIGUSR2,
37
-		syscall.SIGVTALRM,
38
-		syscall.SIGWINCH,
39
-		syscall.SIGXCPU,
40
-		syscall.SIGXFSZ,
41
-	)
9
+var signalMap = map[string]syscall.Signal{
10
+	"ABRT":   syscall.SIGABRT,
11
+	"ALRM":   syscall.SIGALRM,
12
+	"BUF":    syscall.SIGBUS,
13
+	"CHLD":   syscall.SIGCHLD,
14
+	"CONT":   syscall.SIGCONT,
15
+	"EMT":    syscall.SIGEMT,
16
+	"FPE":    syscall.SIGFPE,
17
+	"HUP":    syscall.SIGHUP,
18
+	"ILL":    syscall.SIGILL,
19
+	"INFO":   syscall.SIGINFO,
20
+	"INT":    syscall.SIGINT,
21
+	"IO":     syscall.SIGIO,
22
+	"IOT":    syscall.SIGIOT,
23
+	"KILL":   syscall.SIGKILL,
24
+	"LWP":    syscall.SIGLWP,
25
+	"PIPE":   syscall.SIGPIPE,
26
+	"PROF":   syscall.SIGPROF,
27
+	"QUIT":   syscall.SIGQUIT,
28
+	"SEGV":   syscall.SIGSEGV,
29
+	"STOP":   syscall.SIGSTOP,
30
+	"SYS":    syscall.SIGSYS,
31
+	"TERM":   syscall.SIGTERM,
32
+	"THR":    syscall.SIGTHR,
33
+	"TRAP":   syscall.SIGTRAP,
34
+	"TSTP":   syscall.SIGTSTP,
35
+	"TTIN":   syscall.SIGTTIN,
36
+	"TTOU":   syscall.SIGTTOU,
37
+	"URG":    syscall.SIGURG,
38
+	"USR1":   syscall.SIGUSR1,
39
+	"USR2":   syscall.SIGUSR2,
40
+	"VTALRM": syscall.SIGVTALRM,
41
+	"WINCH":  syscall.SIGWINCH,
42
+	"XCPU":   syscall.SIGXCPU,
43
+	"XFSZ":   syscall.SIGXFSZ,
42 44
 }
... ...
@@ -1,87 +1,43 @@
1 1
 package signal
2 2
 
3 3
 import (
4
-	"os"
5
-	"os/signal"
6 4
 	"syscall"
7 5
 )
8 6
 
9
-var signalMap = map[string]syscall.Signal{}
10
-
11
-/*
12
-	syscall.SIGABRT,
13
-	syscall.SIGALRM,
14
-	syscall.SIGBUS,
15
-	syscall.SIGCHLD,
16
-	syscall.SIGCLD,
17
-	syscall.SIGCONT,
18
-	syscall.SIGFPE,
19
-	syscall.SIGHUP,
20
-	syscall.SIGILL,
21
-	syscall.SIGINT,
22
-	syscall.SIGIO,
23
-	syscall.SIGIOT,
24
-	syscall.SIGKILL,
25
-	syscall.SIGPIPE,
26
-	syscall.SIGPOLL,
27
-	syscall.SIGPROF,
28
-	syscall.SIGPWR,
29
-	syscall.SIGQUIT,
30
-	syscall.SIGSEGV,
31
-	syscall.SIGSTKFLT,
32
-	syscall.SIGSTOP,
33
-	syscall.SIGSYS,
34
-	syscall.SIGTERM,
35
-	syscall.SIGTRAP,
36
-	syscall.SIGTSTP,
37
-	syscall.SIGTTIN,
38
-	syscall.SIGTTOU,
39
-	syscall.SIGUNUSED,
40
-	syscall.SIGURG,
41
-	syscall.SIGUSR1,
42
-	syscall.SIGUSR2,
43
-	syscall.SIGVTALRM,
44
-	syscall.SIGWINCH,
45
-	syscall.SIGXCPU,
46
-	syscall.SIGXFSZ,
47
-*/
48
-
49
-func CatchAll(sigc chan os.Signal) {
50
-	signal.Notify(sigc,
51
-		syscall.SIGABRT,
52
-		syscall.SIGALRM,
53
-		syscall.SIGBUS,
54
-		syscall.SIGCHLD,
55
-		syscall.SIGCLD,
56
-		syscall.SIGCONT,
57
-		syscall.SIGFPE,
58
-		syscall.SIGHUP,
59
-		syscall.SIGILL,
60
-		syscall.SIGINT,
61
-		syscall.SIGIO,
62
-		syscall.SIGIOT,
63
-		syscall.SIGKILL,
64
-		syscall.SIGPIPE,
65
-		syscall.SIGPOLL,
66
-		syscall.SIGPROF,
67
-		syscall.SIGPWR,
68
-		syscall.SIGQUIT,
69
-		syscall.SIGSEGV,
70
-		syscall.SIGSTKFLT,
71
-		syscall.SIGSTOP,
72
-		syscall.SIGSYS,
73
-		syscall.SIGTERM,
74
-		syscall.SIGTRAP,
75
-		syscall.SIGTSTP,
76
-		syscall.SIGTTIN,
77
-		syscall.SIGTTOU,
78
-		syscall.SIGUNUSED,
79
-		syscall.SIGURG,
80
-		syscall.SIGUSR1,
81
-		syscall.SIGUSR2,
82
-		syscall.SIGVTALRM,
83
-		syscall.SIGWINCH,
84
-		syscall.SIGXCPU,
85
-		syscall.SIGXFSZ,
86
-	)
7
+var signalMap = map[string]syscall.Signal{
8
+	"ABRT":   syscall.SIGABRT,
9
+	"ALRM":   syscall.SIGALRM,
10
+	"BUS":    syscall.SIGBUS,
11
+	"CHLD":   syscall.SIGCHLD,
12
+	"CLD":    syscall.SIGCLD,
13
+	"CONT":   syscall.SIGCONT,
14
+	"FPE":    syscall.SIGFPE,
15
+	"HUP":    syscall.SIGHUP,
16
+	"ILL":    syscall.SIGILL,
17
+	"INT":    syscall.SIGINT,
18
+	"IO":     syscall.SIGIO,
19
+	"IOT":    syscall.SIGIOT,
20
+	"KILL":   syscall.SIGKILL,
21
+	"PIPE":   syscall.SIGPIPE,
22
+	"POLL":   syscall.SIGPOLL,
23
+	"PROF":   syscall.SIGPROF,
24
+	"PWR":    syscall.SIGPWR,
25
+	"QUIT":   syscall.SIGQUIT,
26
+	"SEGV":   syscall.SIGSEGV,
27
+	"STKFLT": syscall.SIGSTKFLT,
28
+	"STOP":   syscall.SIGSTOP,
29
+	"SYS":    syscall.SIGSYS,
30
+	"TERM":   syscall.SIGTERM,
31
+	"TRAP":   syscall.SIGTRAP,
32
+	"TSTP":   syscall.SIGTSTP,
33
+	"TTIN":   syscall.SIGTTIN,
34
+	"TTOU":   syscall.SIGTTOU,
35
+	"UNUSED": syscall.SIGUNUSED,
36
+	"URG":    syscall.SIGURG,
37
+	"USR1":   syscall.SIGUSR1,
38
+	"USR2":   syscall.SIGUSR2,
39
+	"VTALRM": syscall.SIGVTALRM,
40
+	"WINCH":  syscall.SIGWINCH,
41
+	"XCPU":   syscall.SIGXCPU,
42
+	"XFSZ":   syscall.SIGXFSZ,
87 43
 }
88 44
new file mode 100644
... ...
@@ -0,0 +1,9 @@
0
+// +build !linux,!darwin,!freebsd
1
+
2
+package signal
3
+
4
+import (
5
+	"syscall"
6
+)
7
+
8
+var signalMap = map[string]syscall.Signal{}