diff options
author | ncopa <ncopa@f176ef85-8d20-0410-844a-e957b5a1c371> | 2007-09-08 08:52:15 +0000 |
---|---|---|
committer | ncopa <ncopa@f176ef85-8d20-0410-844a-e957b5a1c371> | 2007-09-08 08:52:15 +0000 |
commit | e03e6d8d4ba517db81505f3dcb089cd25d7dda29 (patch) | |
tree | bbd478e19b5dba688b1d1ff15190d45e89ecf90d | |
parent | 7ba6889e40cd186df88fd3ef68012ffac2b428da (diff) | |
download | alpine-baselayout-e03e6d8d4ba517db81505f3dcb089cd25d7dda29.tar.bz2 alpine-baselayout-e03e6d8d4ba517db81505f3dcb089cd25d7dda29.tar.xz |
use freopen () and revert to old getchar()
-rw-r--r-- | src/sendbug.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/sendbug.c b/src/sendbug.c index 00ae4e3..abe6aad 100644 --- a/src/sendbug.c +++ b/src/sendbug.c @@ -162,11 +162,8 @@ main(int argc, char *argv[]) template(fp); if (!isatty(0)) { - int tty; fcopy(stdin, fp); - close(0); - tty = open(_PATH_TTY, O_RDWR); - if (tty < 0) + if (freopen(_PATH_TTY, "r", stdin) == NULL) err(1, _PATH_TTY); } @@ -286,16 +283,17 @@ editit(const char *pathname) int prompt(void) { - char ret; - char c; + int ret, c; __fpurge(stdin); fprintf(stderr, "a)bort, e)dit, or s)end: "); fflush(stderr); - /* avoid getchar() to avoid strange bug in uclibc */ - if (read(0, &ret, 1) <= 0) - return (-1); - while (read(0, &c, 1) > 0 && c != '\n'); + ret = getchar(); + if (ret == EOF || ret == '\n') + return (ret); + do { + c = getchar(); + } while (c != EOF && c != '\n'); return (ret); } |