Ver código fonte

Retain control chars when invoking external utils

master
Arun Prakash Jana 8 anos atrás
pai
commit
a3852a6cb1
Nenhuma chave conhecida encontrada para esta assinatura no banco de dados ID da chave GPG: A75979F35C080412
1 arquivos alterados com 21 adições e 13 exclusões
  1. +21
    -13
      nnn.c

+ 21
- 13
nnn.c Ver arquivo

@@ -1103,7 +1103,9 @@ show_stats(char* fpath, char* fname, struct stat *sb)


if (S_ISREG(sb->st_mode)) { if (S_ISREG(sb->st_mode)) {
/* Show file(1) output */ /* Show file(1) output */
sprintf(buf, "file -b \"%s\" 2>&1", fpath);
strcpy(buf, "file -b \"");
xstrlcpy(buf + strlen(buf), fpath, strlen(fpath) + 1);
strcat(buf, "\" 2>&1");
p = get_output(buf, PATH_MAX + 16); p = get_output(buf, PATH_MAX + 16);
if (p) { if (p) {
dprintf(fd, "\n\n "); dprintf(fd, "\n\n ");
@@ -1135,14 +1137,17 @@ show_mediainfo(const char* fpath, int full)
{ {
static char buf[MAX_CMD_LEN]; static char buf[MAX_CMD_LEN];


snprintf(buf, MAX_CMD_LEN, "which mediainfo");
strcpy(buf, "which mediainfo");
if (get_output(buf, MAX_CMD_LEN) == NULL) if (get_output(buf, MAX_CMD_LEN) == NULL)
return -1; return -1;


strcpy(buf, "mediainfo \"");
xstrlcpy(buf + strlen(buf), fpath, strlen(fpath) + 1);
if (full) if (full)
sprintf(buf, "mediainfo -f \"%s\" 2>&1 | %s", fpath, xgetenv("PAGER", "less"));
strcat(buf, "\" -f ");
else else
sprintf(buf, "mediainfo \"%s\" 2>&1 | %s", fpath, xgetenv("PAGER", "less"));
strcat(buf, "\" ");
sprintf(buf + strlen(buf), "2>&1 | %s", xgetenv("PAGER", "less"));


return system(buf); return system(buf);
} }
@@ -1566,9 +1571,9 @@ nochange:


/* If NNN_OPENER is set, use it */ /* If NNN_OPENER is set, use it */
if (opener) { if (opener) {
snprintf(cmd, MAX_CMD_LEN,
"%s \"%s\" > /dev/null 2>&1",
opener, newpath);
sprintf(cmd, "%s \"", opener);
xstrlcpy(cmd + strlen(cmd), newpath, strlen(newpath) + 1);
strcat(cmd, "\" > /dev/null 2>&1");
r = system(cmd); r = system(cmd);
continue; continue;
} }
@@ -1576,8 +1581,9 @@ nochange:
/* Play with nlay if identified */ /* Play with nlay if identified */
mime = getmime(dents[cur].name); mime = getmime(dents[cur].name);
if (mime) { if (mime) {
snprintf(cmd, MAX_CMD_LEN, "nlay \"%s\" %s",
newpath, mime);
strcpy(cmd, "nlay \"");
xstrlcpy(cmd + strlen(cmd), newpath, strlen(newpath) + 1);
sprintf(cmd + strlen(cmd), "\" %s", mime);
exitcurses(); exitcurses();
r = system(cmd); r = system(cmd);
initcurses(); initcurses();
@@ -1586,8 +1592,9 @@ nochange:


/* If nlay doesn't handle it, open plain text /* If nlay doesn't handle it, open plain text
files with vi, then try NNN_FALLBACK_OPENER */ files with vi, then try NNN_FALLBACK_OPENER */
snprintf(cmd, MAX_CMD_LEN,
"file \"%s\"", newpath);
strcpy(cmd, "file -b \"");
xstrlcpy(cmd + strlen(cmd), newpath, strlen(newpath) + 1);
strcat(cmd, "\"");
if (get_output(cmd, MAX_CMD_LEN) == NULL) if (get_output(cmd, MAX_CMD_LEN) == NULL)
continue; continue;


@@ -1598,8 +1605,9 @@ nochange:
initcurses(); initcurses();
continue; continue;
} else if (fb_opener) { } else if (fb_opener) {
snprintf(cmd, MAX_CMD_LEN, "%s \"%s\" > /dev/null 2>&1",
fb_opener, newpath);
sprintf(cmd, "%s \"", fb_opener);
xstrlcpy(cmd + strlen(cmd), newpath, strlen(newpath) + 1);
strcat(cmd, "\" > /dev/null 2>&1");
r = system(cmd); r = system(cmd);
continue; continue;
} }


Carregando…
Cancelar
Salvar