summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/ask_confirmation.c12
-rw-r--r--libbb/remove_file.c7
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;
}