#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <err.h>
#include "../lpi.c"         // for getSigname()
                            // implemented in ../defs.c

void handler(int sig, siginfo_t *siginfo, void *ucontext);

int
main(int argc, char *argv[])
{
    struct sigaction sa;

    sigemptyset(&sa.sa_mask);
    sa.sa_sigaction = handler;
    sa.sa_flags = SA_SIGINFO;

    if (sigaction(SIGINT, &sa, NULL) == -1)
        err(EXIT_FAILURE, "sigaction");

    printf("For quit type Control-\\\n");
    printf("Type Control-C repeatedly\n");

    while (1)
        pause();

    exit(EXIT_SUCCESS);
}

void
handler(int sig, siginfo_t *siginfo, void *ucontext)
{
    printf("Caught signal %d (%s)\n", sig, getSigname(sig));
    printf("signo: %d\n", siginfo->si_signo);
}
