From bae8fc4436f9aeb43ef0aaccd1c9b1b35b5a4617 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 7 Apr 2018 15:21:35 +0200 Subject: xargs: use bb_ask_y_confirmation_FILE() instead of homegrown copy function old new delta bb_ask_y_confirmation_FILE - 83 +83 inetd_main 2033 2043 +10 udhcp_send_kernel_packet 295 301 +6 rmescapes 306 310 +4 send_tree 353 355 +2 i2cdetect_main 674 672 -2 confirm_or_abort 43 38 -5 get_terminal_width_height 242 234 -8 bb_ask_y_confirmation 76 10 -66 xargs_main 823 755 -68 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 4/5 up/down: 105/-149) Total: -44 bytes Signed-off-by: Denys Vlasenko --- libbb/ask_confirmation.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'libbb/ask_confirmation.c') diff --git a/libbb/ask_confirmation.c b/libbb/ask_confirmation.c index ccd983c29..e4814e215 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); +} -- cgit v1.2.3