diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/ask_confirmation.c | 12 | ||||
-rw-r--r-- | libbb/remove_file.c | 7 |
2 files changed, 13 insertions, 6 deletions
diff --git a/libbb/ask_confirmation.c b/libbb/ask_confirmation.c index ccd983c..e4814e2 100644 --- a/libbb/ask_confirmation.c +++ b/libbb/ask_confirmation.c @@ -8,15 +8,16 @@ */ #include "libbb.h" -/* Read a line from stdin. If the first non-whitespace char is 'y' or 'Y', +/* Read a line from fp. If the first non-whitespace char is 'y' or 'Y', * return 1. Otherwise return 0. */ -int FAST_FUNC bb_ask_y_confirmation(void) +int FAST_FUNC bb_ask_y_confirmation_FILE(FILE *fp) { char first = 0; int c; - while (((c = getchar()) != EOF) && (c != '\n')) { + fflush_all(); + while (((c = fgetc(fp)) != EOF) && (c != '\n')) { if (first == 0 && !isblank(c)) { first = c|0x20; } @@ -24,3 +25,8 @@ int FAST_FUNC bb_ask_y_confirmation(void) return first == 'y'; } + +int FAST_FUNC bb_ask_y_confirmation(void) +{ + return bb_ask_y_confirmation_FILE(stdin); +} diff --git a/libbb/remove_file.c b/libbb/remove_file.c index 074ffae..86c9a5c 100644 --- a/libbb/remove_file.c +++ b/libbb/remove_file.c @@ -39,8 +39,8 @@ int FAST_FUNC remove_file(const char *path, int flags) if ((!(flags & FILEUTILS_FORCE) && access(path, W_OK) < 0 && isatty(0)) || (flags & FILEUTILS_INTERACTIVE) ) { - fprintf(stderr, "%s: descend into directory '%s'? ", applet_name, - path); + fprintf(stderr, "%s: descend into directory '%s'? ", + applet_name, path); if (!bb_ask_y_confirmation()) return 0; } @@ -67,7 +67,8 @@ int FAST_FUNC remove_file(const char *path, int flags) } if (flags & FILEUTILS_INTERACTIVE) { - fprintf(stderr, "%s: remove directory '%s'? ", applet_name, path); + fprintf(stderr, "%s: remove directory '%s'? ", + applet_name, path); if (!bb_ask_y_confirmation()) return status; } |