#include "tests.h"
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void sig_print(const char *signame, const int pid, const int uid)
{
	printf("kill(%d, %s) = 0\n"
	       "--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d"
	       ", si_uid=%d} ---\n",
	       pid, signame, signame, signame, pid, uid);
}

static void
handler(int sig)
{
}

int
main(void)
{
	int sig, pid = getpid(), uid = getuid();
	const struct sigaction act = { .sa_handler = handler };
	sigset_t mask;
	sigemptyset(&mask);

	for (sig = 1; sig <= 31; sig++) {
		if (sig != SIGKILL && sig != SIGSTOP) {
			sigaction(sig, &act, NULL);
			sigaddset(&mask, sig);
		}
	}
	sigprocmask(SIG_UNBLOCK, &mask, NULL);

	for (sig = 1; sig <= 31; sig++) {
		if (sig != SIGKILL && sig != SIGSTOP) {
			if (kill(pid, sig) != 0)
				perror_msg_and_fail("kill: %d", sig);
			sig_print(signal2name(sig), pid, uid);
		}
	}

	puts("+++ exited with 0 +++");
	return 0;
}
