]> Sergey Matveev's repositories - nnn.git/commitdiff
Use sigaction
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 8 Feb 2019 18:38:46 +0000 (00:08 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Fri, 8 Feb 2019 18:38:46 +0000 (00:08 +0530)
src/nnn.c

index 30e82cf60d88cff19a531cb737dd802007c61799..6a83e8ce386cb98db4641c3f1068508de9374afb 100644 (file)
--- 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 */