summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2014-12-14 15:13:38 +0100
committerYorhel <git@yorhel.nl>2014-12-14 15:13:38 +0100
commit777db9a5dfa23ed60f41fce272be20ff2c93ee90 (patch)
tree5692a52aebef6f3939fe4d6cf4d5a4ff11df5d02
parenta25e5f80a53d2d08c1bcc72033e0931a65737715 (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.h1
-rw-r--r--src/help.c2
-rw-r--r--src/shell.c4
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
diff --git a/src/help.c b/src/help.c
index 074d9ed..8c130d7 100644
--- a/src/help.c
+++ b/src/help.c
@@ -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"