summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorncopa <ncopa@f176ef85-8d20-0410-844a-e957b5a1c371>2007-09-08 08:52:15 +0000
committerncopa <ncopa@f176ef85-8d20-0410-844a-e957b5a1c371>2007-09-08 08:52:15 +0000
commite03e6d8d4ba517db81505f3dcb089cd25d7dda29 (patch)
treebbd478e19b5dba688b1d1ff15190d45e89ecf90d
parent7ba6889e40cd186df88fd3ef68012ffac2b428da (diff)
downloadalpine-baselayout-e03e6d8d4ba517db81505f3dcb089cd25d7dda29.tar.bz2
alpine-baselayout-e03e6d8d4ba517db81505f3dcb089cd25d7dda29.tar.xz
use freopen () and revert to old getchar()
-rw-r--r--src/sendbug.c18
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);
}