aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-04-22 19:49:00 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-04-22 19:49:00 +0530
commit4790d17d04d82d25aaf0b7228ef6023abee6db4f (patch)
treed021d3b058987f41c27eaf4c0d2f068597a5e424
parentb19778fdffca3ee208f338bcb0c62259507ca4fa (diff)
downloadnnn-4790d17d04d82d25aaf0b7228ef6023abee6db4f.tar.gz
Do not wait when spawning DE file manager
-rw-r--r--README.md4
-rw-r--r--nnn.14
-rw-r--r--nnn.c25
3 files changed, 19 insertions, 14 deletions
diff --git a/README.md b/README.md
index 0aae778..ba253e5 100644
--- a/README.md
+++ b/README.md
@@ -139,8 +139,8 @@ nnn needs libreadline, libncursesw (on Linux or ncurses on OS X) and standard li
| `c` | Show change dir prompt |
| `d` | Toggle detail view |
| `D` | Toggle current file details screen |
-| `m` | Show concise mediainfo in less |
-| `M` | Show full mediainfo in less |
+| `m` | Show concise mediainfo |
+| `M` | Show full mediainfo |
| `.` | Toggle hide .dot files |
| `s` | Toggle sort by file size |
| `S` | Toggle disk usage analyzer mode |
diff --git a/nnn.1 b/nnn.1
index ea67625..8b74150 100644
--- a/nnn.1
+++ b/nnn.1
@@ -56,9 +56,9 @@ Toggle detail view
.It Ic D
Toggle current file details screen
.It Ic m
-Show concise mediainfo in less
+Show concise mediainfo
.It Ic M
-Show full mediainfo in less
+Show full mediainfo
.It Ic \&.
Toggle hide .dot files
.It Ic s
diff --git a/nnn.c b/nnn.c
index 446d498..b847f99 100644
--- a/nnn.c
+++ b/nnn.c
@@ -280,8 +280,13 @@ xdirname(const char *path)
return buf;
}
+/*
+ * Spawns a child process. Behaviour can be controlled using flag:
+ * flag = 1: draw a marker to indicate nnn spawned e.g., a shell
+ * flag = 2: do not wait in parent for child process e.g. DE file manager
+ */
static void
-spawn(char *file, char *arg, char *dir, int notify)
+spawn(char *file, char *arg, char *dir, int flag)
{
pid_t pid;
int status;
@@ -290,14 +295,16 @@ spawn(char *file, char *arg, char *dir, int notify)
if (pid == 0) {
if (dir != NULL)
status = chdir(dir);
- if (notify)
+ if (flag == 1)
fprintf(stdout, "\n +-++-++-+\n | n n n |\n +-++-++-+\n\n");
execlp(file, file, arg, NULL);
_exit(1);
} else {
- /* Ignore interruptions */
- while (waitpid(pid, &status, 0) == -1)
- DPRINTF_D(status);
+ if (flag != 2) {
+ /* Ignore interruptions */
+ while (waitpid(pid, &status, 0) == -1)
+ DPRINTF_D(status);
+ }
DPRINTF_D(pid);
}
}
@@ -937,8 +944,8 @@ show_help(void)
c Show change dir prompt\n\
d Toggle detail view\n\
D Toggle current file details screen\n\
- m Show concise mediainfo in less\n\
- M Show full mediainfo in less\n\
+ m Show concise mediainfo\n\
+ M Show full mediainfo\n\
. Toggle hide .dot files\n\
s Toggle sort by file size\n\
S Toggle disk usage analyzer mode\n\
@@ -1618,9 +1625,7 @@ nochange:
goto nochange;
}
- exitcurses();
- spawn(desktop_manager, path, path, 0);
- initcurses();
+ spawn(desktop_manager, path, path, 2);
break;
case SEL_FSIZE:
sizeorder = !sizeorder;