aboutsummaryrefslogtreecommitdiff
path: root/mpiosh/mpiosh.c
diff options
context:
space:
mode:
authorcrunchy <crunchy>2002-09-13 19:06:29 +0000
committercrunchy <crunchy>2002-09-13 19:06:29 +0000
commitc74b3cb41e5498ed863325fa060f5a1f2d1902d0 (patch)
tree6a2e57ad570fcda24fc938f22ccad0c25442a47f /mpiosh/mpiosh.c
parent0dd441fe0f1942a3bd8e21339f331c63ed9e7ecf (diff)
downloadmpiosh-c74b3cb41e5498ed863325fa060f5a1f2d1902d0.tar.gz
mpiosh-c74b3cb41e5498ed863325fa060f5a1f2d1902d0.tar.bz2
mpiosh-c74b3cb41e5498ed863325fa060f5a1f2d1902d0.zip
extended handling of SIGINT; support for stdin being a tty
Diffstat (limited to 'mpiosh/mpiosh.c')
-rw-r--r--mpiosh/mpiosh.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/mpiosh/mpiosh.c b/mpiosh/mpiosh.c
index 2db4e16..3bcf6d4 100644
--- a/mpiosh/mpiosh.c
+++ b/mpiosh/mpiosh.c
@@ -2,7 +2,7 @@
/*
*
- * $Id: mpiosh.c,v 1.3 2002/09/13 15:20:25 crunchy Exp $
+ * $Id: mpiosh.c,v 1.4 2002/09/13 19:06:30 crunchy Exp $
*
* Author: Andreas Büsching <crunchy@tzi.de>
*
@@ -346,6 +346,7 @@ main(int argc, char *argv[]) {
char ** cmds, **walk;
mpiosh_cmd_t * cmd;
struct sigaction sigc;
+ int interactive = 1;
UNUSED(argc);
UNUSED(argv);
@@ -371,18 +372,23 @@ main(int argc, char *argv[]) {
mpiosh_init();
mpiosh.dev = mpio_init();
- if (!mpiosh.dev) {
- printf("could not find MPIO player.\n");
- }
-
if (mpiosh.card == MPIO_INTERNAL_MEM)
mpiosh.prompt = PROMPT_INT;
else
mpiosh.prompt = PROMPT_EXT;
+ if (!isatty(fileno(stdin))) {
+ interactive = 0;
+ mpiosh.prompt = NULL;
+ }
+
+ if (!mpiosh.dev && interactive) {
+ printf("could not find MPIO player.\n");
+ }
+
while ((line = readline(mpiosh.prompt))) {
if (*line == '\0') continue;
-
+
cmds = mpiosh_command_split(line);
if (cmds[0][0] == '\0') {
@@ -411,6 +417,9 @@ main(int argc, char *argv[]) {
walk++;
}
free(cmds);
+
+ /* reset abort state */
+ mpiosh_cancel = 0;
}
mpiosh_cmd_quit(NULL);