aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-09-09 02:16:10 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-09-09 02:16:10 +0530
commit5ab6dd2feddfeb04eb873ff82626184f556548a2 (patch)
tree74176430dbcf6321436fa84db7def9536c4d7aaf
parent321a618192bf8da808757dcc8d9d700b6b096b88 (diff)
downloadnnn-5ab6dd2feddfeb04eb873ff82626184f556548a2.tar.gz
Convert metaviewer and color to bitfields
-rw-r--r--nnn.c51
1 files changed, 24 insertions, 27 deletions
diff --git a/nnn.c b/nnn.c
index 15c5164..547c471 100644
--- 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");