From 88b8d2641d64156c762571994f3aefd3056081ae Mon Sep 17 00:00:00 2001
From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Fri, 20 Dec 2019 16:01:35 +0530
Subject: [PATCH] Replace bools for binary states with an uchar

---
 src/nnn.c | 40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c
index 57432d99..124b0cd4 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -331,8 +331,6 @@ static kv bookmark[BM_MAX];
 static kv plug[PLUGIN_MAX];
 static uchar g_tmpfplen;
 static uchar blk_shift = BLK_SHIFT_512;
-static bool interrupted = FALSE;
-static bool rangesel = FALSE;
 
 /* Retain old signal handlers */
 #ifdef __linux__
@@ -353,8 +351,14 @@ static char g_tmpfpath[TMP_LEN_MAX] __attribute__ ((aligned));
 /* Buffer to store plugins control pipe location */
 static char g_pipepath[TMP_LEN_MAX] __attribute__ ((aligned));
 
+/* MISC NON-PERSISTENT INTERNAL BINARY STATES */
+
 /* Plugin control initialization status */
-static bool g_plinit = FALSE;
+#define STATE_PLUGIN_INIT 0x1
+#define STATE_INTERRUPTED 0x2
+#define STATE_RANGESEL 0x4
+
+static uchar g_states;
 
 /* Options to identify file mime */
 #if defined(__APPLE__)
@@ -604,7 +608,7 @@ static void sigint_handler(int sig)
 {
 	(void) sig;
 
-	interrupted = TRUE;
+	g_states |= STATE_INTERRUPTED;
 }
 
 static uint xatoi(const char *str)
@@ -3607,9 +3611,9 @@ static bool run_selected_plugin(char **path, const char *file, char *newpath, ch
 	if (*file == '_')
 		return run_cmd_as_plugin(*path, file, newpath, runfile);
 
-	if (!g_plinit) {
+	if (!(g_states & STATE_PLUGIN_INIT)) {
 		plctrl_init();
-		g_plinit = TRUE;
+		g_states |= STATE_PLUGIN_INIT;
 	}
 
 	fd = open(g_pipepath, O_RDONLY | O_NONBLOCK);
@@ -3796,7 +3800,7 @@ static int dentfill(char *path, struct entry **dents)
 
 					dir_blocks += dirwalk(buf, &sb);
 
-					if (interrupted) {
+					if (g_states & STATE_INTERRUPTED) {
 						closedir(dirp);
 						return n;
 					}
@@ -3893,7 +3897,7 @@ static int dentfill(char *path, struct entry **dents)
 				else
 					num_files = num_saved;
 
-				if (interrupted) {
+				if (g_states & STATE_INTERRUPTED) {
 					closedir(dirp);
 					return n;
 				}
@@ -4189,7 +4193,7 @@ static void redraw(char *path)
 
 			mvprintw(lastln, 0, "%d/%d [%d:%s] %cu:%s free:%s files:%lu %lldB %s",
 				 cur + 1, ndents, cfg.selmode,
-				 (rangesel ? "*" : (nselected ? xitoa(nselected) : "")),
+				 ((g_states & STATE_RANGESEL) ? "*" : (nselected ? xitoa(nselected) : "")),
 				 c, buf, coolsize(get_fs_info(path, FREE)), num_files,
 				 (ll)pent->blocks << blk_shift, ptr);
 		} else { /* light or detail mode */
@@ -4203,7 +4207,7 @@ static void redraw(char *path)
 
 			mvprintw(lastln, 0, "%d/%d [%d:%s] %s%s %s %s %s [%s]",
 				 cur + 1, ndents, cfg.selmode,
-				 (rangesel ? "*" : (nselected ? xitoa(nselected) : "")),
+				 ((g_states & STATE_RANGESEL) ? "*" : (nselected ? xitoa(nselected) : "")),
 				 sort, buf, get_lsperms(pent->mode), coolsize(pent->size), ptr, base);
 		}
 	} else
@@ -4280,8 +4284,8 @@ begin:
 		printwarn(&presel);
 
 	populate(path, lastname);
-	if (interrupted) {
-		interrupted = FALSE;
+	if (g_states & STATE_INTERRUPTED) {
+		g_states &= ~STATE_INTERRUPTED;
 		cfg.apparentsz = 0;
 		cfg.blkorder = 0;
 		blk_shift = BLK_SHIFT_512;
@@ -4870,8 +4874,8 @@ nochange:
 				goto nochange;
 
 			startselection();
-			if (rangesel)
-				rangesel = FALSE;
+			if (g_states & STATE_RANGESEL)
+				g_states &= ~STATE_RANGESEL;
 
 			/* Toggle selection status */
 			dents[cur].flags ^= FILE_SELECTED;
@@ -4904,14 +4908,14 @@ nochange:
 				goto nochange;
 
 			startselection();
-			rangesel ^= TRUE;
+			g_states ^= STATE_RANGESEL;
 
 			if (stat(path, &sb) == -1) {
 				printwarn(&presel);
 				goto nochange;
 			}
 
-			if (rangesel) { /* Range selection started */
+			if (g_states & STATE_RANGESEL) { /* Range selection started */
 				inode = sb.st_ino;
 				selstartid = cur;
 				continue;
@@ -4941,8 +4945,8 @@ nochange:
 					goto nochange;
 
 				startselection();
-				if (rangesel)
-					rangesel = FALSE;
+				if (g_states & STATE_RANGESEL)
+					g_states &= ~STATE_RANGESEL;
 
 				selstartid = 0;
 				selendid = ndents - 1;
-- 
2.51.0