Support NOICE_OPENER env variable.

This commit is contained in:
Arun Prakash Jana 2016-08-21 13:48:19 +05:30
parent 46e8388784
commit 8b12ac4b5c
No known key found for this signature in database
GPG key ID: A75979F35C080412

27
noice.c
View file

@ -38,7 +38,7 @@
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#define ISODD(x) ((x) & 1)
#define CONTROL(c) ((c) ^ 0x40)
#define MAX_PATH_LEN 1024
#define MAX_LEN 1024
struct assoc {
char *regex; /* Regex to match on filename */
@ -85,6 +85,7 @@ struct entry {
struct entry *dents;
int ndents, cur;
int idle;
char *opener = NULL;
/*
* Layout:
@ -652,19 +653,32 @@ nochange:
strlcpy(fltr, ifilter, sizeof(fltr));
goto begin;
case S_IFREG:
/* If default mime opener is set, use it */
if (opener) {
char cmd[MAX_LEN];
int status;
snprintf(cmd, MAX_LEN, "%s \"%s\" > /dev/null 2>&1", opener, newpath);
status = system(cmd);
continue;
}
/* Try custom applications */
bin = openwith(newpath);
char *execvim = "vim";
if (bin == NULL) {
/* If a custom hander application is not set, open
plain text files with vim, then try xdg-open */
FILE *fp;
char cmd[MAX_PATH_LEN];
char cmd[MAX_LEN];
int status;
snprintf(cmd, MAX_PATH_LEN, "file \"%s\"", newpath);
snprintf(cmd, MAX_LEN, "file \"%s\"", newpath);
fp = popen(cmd, "r");
if (fp == NULL)
goto nochange;
if (fgets(cmd, MAX_PATH_LEN, fp) == NULL) {
if (fgets(cmd, MAX_LEN, fp) == NULL) {
pclose(fp);
goto nochange;
}
@ -673,7 +687,7 @@ nochange:
if (strstr(cmd, "ASCII text") != NULL)
bin = execvim;
else {
snprintf(cmd, MAX_PATH_LEN, "xdg-open \"%s\" > /dev/null 2>&1", newpath);
snprintf(cmd, MAX_LEN, "xdg-open \"%s\" > /dev/null 2>&1", newpath);
status = system(cmd);
continue;
}
@ -832,6 +846,9 @@ main(int argc, char *argv[])
ipath = "/";
}
/* Get the default desktop mime opener, if set */
opener = getenv("NOICE_OPENER");
signal(SIGINT, SIG_IGN);
/* Test initial path */