|
|
@@ -987,26 +987,6 @@ static char xchartohex(char c) |
|
|
|
return c; |
|
|
|
} |
|
|
|
|
|
|
|
static char *getmime(const char *file) |
|
|
|
{ |
|
|
|
static regex_t regex; |
|
|
|
static uint i; |
|
|
|
static const uint len = LEN(assocs); |
|
|
|
|
|
|
|
for (i = 0; i < len; ++i) { |
|
|
|
if (regcomp(®ex, assocs[i].regex, REG_NOSUB | REG_EXTENDED | REG_ICASE) != 0) |
|
|
|
continue; |
|
|
|
|
|
|
|
if (regexec(®ex, file, 0, NULL, 0) == 0) { |
|
|
|
regfree(®ex); |
|
|
|
return assocs[i].mime; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
regfree(®ex); |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
|
|
|
|
static int setfilter(regex_t *regex, char *filter) |
|
|
|
{ |
|
|
|
static size_t len; |
|
|
@@ -2719,13 +2699,12 @@ nochange: |
|
|
|
continue; |
|
|
|
|
|
|
|
/* If NNN_USE_EDITOR is set, open text in EDITOR */ |
|
|
|
if (cfg.useeditor) |
|
|
|
if (getmime(dents[cur].name) || |
|
|
|
(get_output(g_buf, CMD_LEN_MAX, "file", FILE_OPTS, newpath, FALSE) && |
|
|
|
strstr(g_buf, "text/") == g_buf)) { |
|
|
|
spawn(editor, newpath, editor_arg, path, F_NORMAL); |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (cfg.useeditor && |
|
|
|
get_output(g_buf, CMD_LEN_MAX, "file", FILE_OPTS, newpath, FALSE) && |
|
|
|
strstr(g_buf, "text/") == g_buf) { |
|
|
|
spawn(editor, newpath, editor_arg, path, F_NORMAL); |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
/* Invoke desktop opener as last resort */ |
|
|
|
spawn(utils[OPENER], newpath, NULL, NULL, F_NOWAIT | F_NOTRACE); |
|
|
|