diff options
author | Yorhel <git@yorhel.nl> | 2014-12-14 15:13:38 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2014-12-14 15:13:38 +0100 |
commit | 777db9a5dfa23ed60f41fce272be20ff2c93ee90 (patch) | |
tree | 5692a52aebef6f3939fe4d6cf4d5a4ff11df5d02 | |
parent | a25e5f80a53d2d08c1bcc72033e0931a65737715 (diff) |
Minor fixes to new shell feature
The check for the system() exit status is slightly problematic, because
bash returns the status code of the last command it executed. I've set
it to only check for status code 127 now (command not found) in order to
at least provide a message when the $SHELL command can't be found. This
error can still be triggered when executing a nonexistant command within
the shell and then exiting.
-rw-r--r-- | src/global.h | 1 | ||||
-rw-r--r-- | src/help.c | 2 | ||||
-rw-r--r-- | src/shell.c | 4 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/global.h b/src/global.h index 67e4141..9ba22ba 100644 --- a/src/global.h +++ b/src/global.h @@ -103,5 +103,6 @@ int input_handle(int); #include "help.h" #include "path.h" #include "util.h" +#include "shell.h" #endif @@ -32,7 +32,7 @@ int page, start; -#define KEYS 16 +#define KEYS 17 char *keys[KEYS*2] = { /*|----key----| |----------------description----------------|*/ "up, k", "Move cursor up", diff --git a/src/shell.c b/src/shell.c index ae3cc22..d601b5a 100644 --- a/src/shell.c +++ b/src/shell.c @@ -34,7 +34,7 @@ #include <unistd.h> void shell_draw() { - char *full_path, *shell; + char *full_path; int res; /* suspend ncurses mode */ @@ -60,7 +60,7 @@ void shell_draw() { /* resume ncurses mode */ reset_prog_mode(); - if (res == -1 || WEXITSTATUS(res) != 0) { + if (res == -1 || !WIFEXITED(res) || WEXITSTATUS(res) == 127) { clear(); printw("ERROR: Can't execute shell interpreter: %s\n" "\n" |