1#include "tests.h"
2#include <signal.h>
3#include <stdio.h>
4#include <unistd.h>
5
6void sig_print(const char *signame, const int pid, const int uid)
7{
8	printf("kill(%d, %s) = 0\n"
9	       "--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d"
10	       ", si_uid=%d} ---\n",
11	       pid, signame, signame, signame, pid, uid);
12}
13
14static void
15handler(int sig)
16{
17}
18
19int
20main(void)
21{
22	int sig, pid = getpid(), uid = getuid();
23	const struct sigaction act = { .sa_handler = handler };
24	sigset_t mask;
25	sigemptyset(&mask);
26
27	for (sig = 1; sig <= 31; sig++) {
28		if (sig != SIGKILL && sig != SIGSTOP) {
29			sigaction(sig, &act, NULL);
30			sigaddset(&mask, sig);
31		}
32	}
33	sigprocmask(SIG_UNBLOCK, &mask, NULL);
34
35	for (sig = 1; sig <= 31; sig++) {
36		if (sig != SIGKILL && sig != SIGSTOP) {
37			if (kill(pid, sig) != 0)
38				perror_msg_and_fail("kill: %d", sig);
39			sig_print(signal2name(sig), pid, uid);
40		}
41	}
42
43	puts("+++ exited with 0 +++");
44	return 0;
45}
46