From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Tue, 12 Dec 2017 21:11:30 +0000 (+0530)
Subject: Use static vars in frequently used APIs
X-Git-Tag: v1.6~35
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c3545dd82f37fb7ef803a699765e6c0ba42c2bad;p=nnn.git

Use static vars in frequently used APIs
---

diff --git a/nnn.c b/nnn.c
index 5614d070..e7ab8ec4 100644
--- a/nnn.c
+++ b/nnn.c
@@ -450,7 +450,8 @@ static char *
 xdirname(const char *path)
 {
 	static char *buf = g_buf;
-	static char *last_slash;
+	static char *last_slash, *runp;
+
 
 	xstrlcpy(buf, path, PATH_MAX);
 
@@ -459,8 +460,6 @@ xdirname(const char *path)
 
 	if (last_slash != NULL && last_slash != buf && last_slash[1] == '\0') {
 		/* Determine whether all remaining characters are slashes. */
-		char *runp;
-
 		for (runp = last_slash; runp != buf; --runp)
 			if (runp[-1] != '/')
 				break;
@@ -472,8 +471,6 @@ xdirname(const char *path)
 
 	if (last_slash != NULL) {
 		/* Determine whether all remaining characters are slashes. */
-		char *runp;
-
 		for (runp = last_slash; runp != buf; --runp)
 			if (runp[-1] != '/')
 				break;
@@ -609,10 +606,12 @@ spawn(char *file, char *arg1, char *arg2, char *dir, uchar flag)
 static char *
 xgetenv(char *name, char *fallback)
 {
+	static char *value;
+
 	if (name == NULL)
 		return fallback;
 
-	char *value = getenv(name);
+	value = getenv(name);
 
 	return value && value[0] ? value : fallback;
 }
@@ -726,8 +725,8 @@ strstrip(char *s)
 static char *
 getmime(char *file)
 {
-	regex_t regex;
-	uint i;
+	static regex_t regex;
+	static uint i;
 	static uint len = LEN(assocs);
 
 	for (i = 0; i < len; ++i) {