summaryrefslogtreecommitdiff
path: root/src/signal.c
blob: e993ae3ea76f0bb53b3645f52864c2173d8fc7c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "signal.h"

#include <string.h>

sig_atomic_t signal_running;

static void
handle_signal_shutdown(int sig)
{
    signal_running = 0;
}

int
signal_setup_actions()
{
    int rc;
    struct sigaction action;

    signal_running = 1;

    memset(&action, 0, sizeof(action));
    action.sa_handler = handle_signal_shutdown;
    rc = sigemptyset(&action.sa_mask);
    if(rc < 0) return rc;
    rc = sigaction(SIGINT, &action, 0);
    if(rc < 0) return rc;

    rc = sigemptyset(&action.sa_mask);
    if(rc < 0) return rc;
    rc = sigaction(SIGTERM, &action, 0);
    if(rc < 0) return rc;

    return rc;
}