diff options
| author | Christian Hesse <mail@eworm.de> | 2016-05-20 13:30:09 +0200 |
|---|---|---|
| committer | Christian Hesse <mail@eworm.de> | 2016-05-20 13:30:09 +0200 |
| commit | 0e80beefc335f3559460508afaf61a16d973da94 (patch) | |
| tree | b017368d1bcfa9f301b6fd4b1fe3a2034c79df8d | |
| parent | ad6d91d32da302b493f475352aa69f0bf86da48c (diff) | |
| download | vis-0e80beefc335f3559460508afaf61a16d973da94.tar.gz vis-0e80beefc335f3559460508afaf61a16d973da94.tar.xz | |
implement xread() and wrap read() + die()
| -rw-r--r-- | vis-menu.c | 25 |
1 files changed, 16 insertions, 9 deletions
@@ -74,6 +74,7 @@ static void resetline(void); static void setup(void); static size_t textw(const char*); static size_t textwn(const char*, int); +static void xread(int fildes, void *buf, size_t nbyte); static char text[BUFSIZ] = ""; static int barpos = 0; @@ -318,47 +319,47 @@ run(void) { char c; while(1) { - read(0, &c, 1); + xread(0, &c, 1); memset(buf, '\0', sizeof buf); buf[0]=c; switch_top: switch(c) { case CONTROL('['): - read(0, &c, 1); + xread(0, &c, 1); esc_switch_top: switch(c) { case CONTROL('['): /* ESC, need to press twice due to console limitations */ c=CONTROL('C'); goto switch_top; case '[': - read(0, &c, 1); + xread(0, &c, 1); switch(c) { case '1': /* Home */ case '7': case 'H': - if(c!='H') read(0, &c, 1); /* Remove trailing '~' from stdin */ + if(c!='H') xread(0, &c, 1); /* Remove trailing '~' from stdin */ c=CONTROL('A'); goto switch_top; case '2': /* Insert */ - read(0, &c, 1); /* Remove trailing '~' from stdin */ + xread(0, &c, 1); /* Remove trailing '~' from stdin */ c=CONTROL('Y'); goto switch_top; case '3': /* Delete */ - read(0, &c, 1); /* Remove trailing '~' from stdin */ + xread(0, &c, 1); /* Remove trailing '~' from stdin */ c=CONTROL('D'); goto switch_top; case '4': /* End */ case '8': case 'F': - if(c!='F') read(0, &c, 1); /* Remove trailing '~' from stdin */ + if(c!='F') xread(0, &c, 1); /* Remove trailing '~' from stdin */ c=CONTROL('E'); goto switch_top; case '5': /* PageUp */ - read(0, &c, 1); /* Remove trailing '~' from stdin */ + xread(0, &c, 1); /* Remove trailing '~' from stdin */ c=CONTROL('V'); goto switch_top; case '6': /* PageDown */ - read(0, &c, 1); /* Remove trailing '~' from stdin */ + xread(0, &c, 1); /* Remove trailing '~' from stdin */ c='v'; goto esc_switch_top; case 'A': /* Up arrow */ @@ -570,6 +571,12 @@ textwn(const char *s, int l) { return c+4; /* Accomodate for the leading and trailing spaces */ } +void +xread(int fildes, void *buf, size_t nbyte) { + if (read(fildes, buf, nbyte) < 0) + die("Can not read."); +} + int main(int argc, char **argv) { int i; |
