]> Sergey Matveev's repositories - nnn.git/commitdiff
Convert metaviewer and color to bitfields
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 8 Sep 2017 20:46:10 +0000 (02:16 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Fri, 8 Sep 2017 20:46:10 +0000 (02:16 +0530)
nnn.c

diff --git a/nnn.c b/nnn.c
index 15c5164206bcf871ad01b62e6106d6543d4d0bb0..547c471f04f3555189b5a3d0526a566c52f683df 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -197,20 +197,22 @@ typedef struct {
 
 /* Settings */
 typedef struct {
-       uchar filtermode : 1;  /* Set to enter filter mode */
-       uchar mtimeorder : 1;  /* Set to sort by time modified */
-       uchar sizeorder  : 1;  /* Set to sort by file size */
-       uchar blkorder   : 1;  /* Set to sort by blocks used (disk usage) */
-       uchar showhidden : 1;  /* Set to show hidden files */
-       uchar showdetail : 1;  /* Clear to show fewer file info */
-       uchar showcolor  : 1;  /* Set to show dirs in blue */
-       uchar dircolor   : 1;  /* Current status of dir color */
+       ushort filtermode : 1;  /* Set to enter filter mode */
+       ushort mtimeorder : 1;  /* Set to sort by time modified */
+       ushort sizeorder  : 1;  /* Set to sort by file size */
+       ushort blkorder   : 1;  /* Set to sort by blocks used (disk usage) */
+       ushort showhidden : 1;  /* Set to show hidden files */
+       ushort showdetail : 1;  /* Clear to show fewer file info */
+       ushort showcolor  : 1;  /* Set to show dirs in blue */
+       ushort dircolor   : 1;  /* Current status of dir color */
+       ushort metaviewer : 1;  /* Index of metadata viewer in utils[] */
+       ushort color      : 3;  /* Color code for directories */
 } settings;
 
 /* GLOBALS */
 
 /* Configuration */
-static settings cfg = {0, 0, 0, 0, 0, 1, 1, 0};
+static settings cfg = {0, 0, 0, 0, 0, 1, 1, 0, 0, 4};
 
 static struct entry *dents;
 static int ndents, cur, total_dents;
@@ -220,13 +222,11 @@ static char *player;
 static char *copier;
 static char *editor;
 static char *desktop_manager;
-static char *metaviewer;
 static blkcnt_t ent_blocks;
 static blkcnt_t dir_blocks;
 static ulong num_files;
 static uint open_max;
 static bm bookmark[BM_MAX];
-static uchar color = 4;
 
 #ifdef LINUX_INOTIFY
 static int inotify_fd, inotify_wd = -1;
@@ -240,14 +240,14 @@ static struct timespec gtimeout;
 
 /* Utilities to open files, run actions */
 static char * const utils[] = {
+       "mediainfo",
+       "exiftool",
 #ifdef __APPLE__
        "/usr/bin/open",
 #else
        "/usr/bin/xdg-open",
 #endif
-       "nlay",
-       "mediainfo",
-       "exiftool"
+       "nlay"
 };
 
 /* Common message strings */
@@ -537,7 +537,7 @@ initcurses(void)
        start_color();
        use_default_colors();
        if (cfg.showcolor)
-               init_pair(1, color, -1);
+               init_pair(1, cfg.color, -1);
        settimeout(); /* One second */
 }
 
@@ -1607,11 +1607,11 @@ get_fs_capacity(char *path)
 static int
 show_mediainfo(char *fpath, char *arg)
 {
-       if (!get_output(g_buf, MAX_CMD_LEN, "which", metaviewer, NULL, 0))
+       if (!get_output(g_buf, MAX_CMD_LEN, "which", utils[cfg.metaviewer], NULL, 0))
                return -1;
 
        exitcurses();
-       get_output(NULL, 0, metaviewer, fpath, arg, 1);
+       get_output(NULL, 0, utils[cfg.metaviewer], fpath, arg, 1);
        initcurses();
        return 0;
 }
@@ -2206,7 +2206,7 @@ nochange:
                                }
 
                                /* Invoke desktop opener as last resort */
-                               spawn(utils[0], newpath, NULL, NULL, F_NOTRACE);
+                               spawn(utils[2], newpath, NULL, NULL, F_NOTRACE);
                                continue;
                        }
                        default:
@@ -2549,7 +2549,7 @@ nochange:
                                mkpath(path, dents[cur].name, oldpath, PATH_MAX);
 
                                if (show_mediainfo(oldpath, run) == -1) {
-                                       sprintf(g_buf, "%s missing", metaviewer);
+                                       sprintf(g_buf, "%s missing", utils[cfg.metaviewer]);
                                        printmsg(g_buf);
                                        goto nochange;
                                }
@@ -2726,12 +2726,13 @@ main(int argc, char *argv[])
                        cfg.filtermode = 1;
                        break;
                case 'c':
-                       color = (uchar)atoi(optarg);
-                       if (color > 7)
+                       if ((uchar)atoi(optarg) > 7)
                                cfg.showcolor = 0;
+                       else
+                               cfg.color = (uchar)atoi(optarg);
                        break;
                case 'e':
-                       metaviewer = utils[3];
+                       cfg.metaviewer = 1;
                        break;
                case 'p':
                        player = optarg;
@@ -2792,13 +2793,9 @@ main(int argc, char *argv[])
        if (getenv("NNN_USE_EDITOR"))
                editor = xgetenv("EDITOR", "vi");
 
-       /* Set metadata viewer if not set */
-       if (!metaviewer)
-               metaviewer = utils[2];
-
        /* Set player if not set already */
        if (!player)
-               player = utils[1];
+               player = utils[3];
 
        /* Get the desktop file browser, if set */
        desktop_manager = getenv("NNN_DE_FILE_MANAGER");