From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Fri, 8 Feb 2019 18:38:46 +0000 (+0530)
Subject: Use sigaction
X-Git-Tag: v2.3~25
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=1253e462b83c1fa5ba928907d68159af4e9f8170;p=nnn.git

Use sigaction
---

diff --git a/src/nnn.c b/src/nnn.c
index 30e82cf6..6a83e8ce 100644
--- 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 */