diff options
author | ncopa <ncopa@f176ef85-8d20-0410-844a-e957b5a1c371> | 2007-09-06 23:44:22 +0000 |
---|---|---|
committer | ncopa <ncopa@f176ef85-8d20-0410-844a-e957b5a1c371> | 2007-09-06 23:44:22 +0000 |
commit | 9f3a3db209ec4dd0f9671e6581136fb47adec596 (patch) | |
tree | 4bb765c2567293825acb07c6d67dc113710be1b6 | |
parent | 5d2a5916b76f399097f38ea8d49ce5f696c5e651 (diff) | |
download | alpine-baselayout-9f3a3db209ec4dd0f9671e6581136fb47adec596.tar.bz2 alpine-baselayout-9f3a3db209ec4dd0f9671e6581136fb47adec596.tar.xz |
walk around bug in uclibc by using read(2) instead of getchar(3)
-rw-r--r-- | src/sendbug.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/sendbug.c b/src/sendbug.c index c842d4b..00ae4e3 100644 --- a/src/sendbug.c +++ b/src/sendbug.c @@ -166,11 +166,10 @@ main(int argc, char *argv[]) fcopy(stdin, fp); close(0); tty = open(_PATH_TTY, O_RDWR); - fprintf(stderr, "tty is %i\n", tty); if (tty < 0) err(1, _PATH_TTY); } - + if (fflush(fp) == EOF || fstat(fd, &sb) == -1 || fclose(fp) == EOF) err(1, "error creating template"); mtime = sb.st_mtime; @@ -287,17 +286,17 @@ editit(const char *pathname) int prompt(void) { - int c, ret; + char ret; + char c; __fpurge(stdin); fprintf(stderr, "a)bort, e)dit, or s)end: "); fflush(stderr); - ret = getchar(); - if (ret == EOF || ret == '\n') - return (ret); - do { - c = getchar(); - } while (c != EOF && c != '\n'); + /* avoid getchar() to avoid strange bug in uclibc */ + if (read(0, &ret, 1) <= 0) + return (-1); + while (read(0, &c, 1) > 0 && c != '\n'); + return (ret); } |