diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2013-08-19 15:02:15 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2013-08-19 15:12:13 +0200 |
commit | cdd09333f946e746527c8e9af36e08dc3a29a975 (patch) | |
tree | cb69b7100d5347f3f3ee38ccd5133bff63435fbd /src | |
parent | 80f38e3dea6b707314b407c7c511c19aa4eade39 (diff) | |
download | px4-firmware-cdd09333f946e746527c8e9af36e08dc3a29a975.tar.gz px4-firmware-cdd09333f946e746527c8e9af36e08dc3a29a975.tar.bz2 px4-firmware-cdd09333f946e746527c8e9af36e08dc3a29a975.zip |
Minimized nshterm flags, fixed some pretty stupid non-standard coding in top, now behaving with two shell instances as expected
Diffstat (limited to 'src')
-rw-r--r-- | src/systemcmds/nshterm/nshterm.c | 2 | ||||
-rw-r--r-- | src/systemcmds/top/top.c | 18 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/systemcmds/nshterm/nshterm.c b/src/systemcmds/nshterm/nshterm.c index 2341068a2..41d108ffc 100644 --- a/src/systemcmds/nshterm/nshterm.c +++ b/src/systemcmds/nshterm/nshterm.c @@ -91,7 +91,7 @@ nshterm_main(int argc, char *argv[]) } /* Set ONLCR flag (which appends a CR for every LF) */ - uart_config.c_oflag |= (ONLCR | OPOST | OCRNL); + uart_config.c_oflag |= (ONLCR | OPOST/* | OCRNL*/); if ((termios_state = tcsetattr(fd, TCSANOW, &uart_config)) < 0) { warnx("ERROR setting baudrate / termios config for %s (tcsetattr)\n", argv[1]); diff --git a/src/systemcmds/top/top.c b/src/systemcmds/top/top.c index 0d064a05e..1ca3fc928 100644 --- a/src/systemcmds/top/top.c +++ b/src/systemcmds/top/top.c @@ -107,9 +107,6 @@ top_main(void) float interval_time_ms_inv = 0.f; - /* Open console directly to grab CTRL-C signal */ - int console = open("/dev/console", O_NONBLOCK | O_RDONLY | O_NOCTTY); - /* clear screen */ printf("\033[2J"); @@ -256,17 +253,24 @@ top_main(void) interval_start_time = new_time; /* Sleep 200 ms waiting for user input five times ~ 1s */ - /* XXX use poll ... */ for (int k = 0; k < 5; k++) { char c; - if (read(console, &c, 1) == 1) { + struct pollfd fds; + int ret; + fds.fd = 0; /* stdin */ + fds.events = POLLIN; + ret = poll(&fds, 1, 0); + + if (ret > 0) { + + read(0, &c, 1); + switch (c) { case 0x03: // ctrl-c case 0x1b: // esc case 'c': case 'q': - close(console); return OK; /* not reached */ } @@ -278,7 +282,5 @@ top_main(void) new_time = hrt_absolute_time(); } - close(console); - return OK; } |