nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 1253e462b83c1fa5ba928907d68159af4e9f8170
parent 027af53ae0b57538166c9888b675d2ce4c979355
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Sat,  9 Feb 2019 00:08:46 +0530

Use sigaction

Diffstat:
Msrc/nnn.c | 13+++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c @@ -539,7 +539,7 @@ static uchar crc8fast(uchar const message[], size_t n) return remainder; } -static void signal_handler(int signum) +static void sigint_handler(int sig, siginfo_t *siginfo, void *context) { interrupted = TRUE; } @@ -2961,7 +2961,6 @@ begin: populate(path, lastname); if (interrupted) { interrupted = FALSE; - signal(SIGINT, &signal_handler); cfg.apparentsz = 0; cfg.blkorder = 0; BLK_SHIFT = 9; @@ -4222,8 +4221,14 @@ int main(int argc, char *argv[]) if (getenv(env_cfg[NNN_RESTRICT_0B])) cfg.restrict0b = 1; - /* Ignore certain signals */ - signal(SIGINT, &signal_handler); + /* Ignore/handle certain signals */ + struct sigaction act = {0}; + act.sa_sigaction = &sigint_handler; + act.sa_flags = SA_SIGINFO; + if (sigaction(SIGINT, &act, NULL) < 0) { + fprintf(stderr, "sigaction\n"); + return 1; + } signal(SIGQUIT, SIG_IGN); /* Test initial path */