]> Sergey Matveev's repositories - nnn.git/commitdiff
Remove a startup loop and use self-fixing
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 30 Nov 2019 14:21:57 +0000 (19:51 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 30 Nov 2019 14:21:57 +0000 (19:51 +0530)
src/nnn.c

index 55278ccb8af308b347db0bf5e5aba56d0fef7c1e..7aa464b9fa6b3f121dd6377e907104c0954411c3 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -582,6 +582,7 @@ static void move_cursor(int target, int ignore_scrolloff);
 static inline bool getutil(char *util);
 static size_t mkpath(const char *dir, const char *name, char *out);
 static void updateselbuf(const char *path, char *newpath);
+static char *xgetenv(const char *name, char *fallback);
 
 /* Functions */
 
@@ -1140,6 +1141,7 @@ static bool selsafe(void)
 static bool initcurses(mmask_t *oldmask)
 {
        short i;
+       char *colors = xgetenv(env_cfg[NNN_CONTEXT_COLORS], "4444");
 
        if (cfg.picker) {
                if (!newterm(NULL, stderr, stdin)) {
@@ -1168,9 +1170,16 @@ static bool initcurses(mmask_t *oldmask)
        start_color();
        use_default_colors();
 
-       /* Initialize default colors */
-       for (i = 0; i <  CTX_MAX; ++i)
+       /* Get and set the context colors */
+       for (i = 0; i <  CTX_MAX; ++i) {
+               if (*colors) {
+                       g_ctx[i].color = (*colors < '0' || *colors > '7') ? 4 : *colors - '0';
+                       ++colors;
+               } else
+                       g_ctx[i].color = 4;
+
                init_pair(i + 1, g_ctx[i].color, -1);
+       }
 
        settimeout(); /* One second */
        set_escdelay(25);
@@ -5640,24 +5649,6 @@ int main(int argc, char *argv[])
        if (!cfg.picker && !(isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)))
                exit(1);
 
-       /* Get the context colors; copier used as tmp var */
-       copier = xgetenv(env_cfg[NNN_CONTEXT_COLORS], "4444");
-       opt = 0;
-       while (opt < CTX_MAX) {
-               if (*copier) {
-                       if (*copier < '0' || *copier > '7') {
-                               fprintf(stderr, "0 <= code <= 7\n");
-                               return _FAILURE;
-                       }
-
-                       g_ctx[opt].color = *copier - '0';
-                       ++copier;
-               } else
-                       g_ctx[opt].color = 4;
-
-               ++opt;
-       }
-
 #ifdef DBGMODE
        enabledbg();
        DPRINTF_S(VERSION);