X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libbb%2Fask_confirmation.c;h=e4814e21594df9d58f7f22fe05ac94c983ff6d59;hb=3d27d435dbe7d39894257894b9dd32bfa607604c;hp=d08bc515e0f86536a6f8e1ac55fb16e2adc862af;hpb=defc1ea34074e7882724c460260d307cdf981a70;p=oweals%2Fbusybox.git diff --git a/libbb/ask_confirmation.c b/libbb/ask_confirmation.c index d08bc515e..e4814e215 100644 --- a/libbb/ask_confirmation.c +++ b/libbb/ask_confirmation.c @@ -1,34 +1,32 @@ /* vi: set sw=4 ts=4: */ /* - * bb_ask_confirmation implementation for busybox + * bb_ask_y_confirmation implementation for busybox * * Copyright (C) 2003 Manuel Novoa III * - * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. + * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +#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. */ - -#include "libbb.h" - -int FAST_FUNC bb_ask_confirmation(void) +int FAST_FUNC bb_ask_y_confirmation_FILE(FILE *fp) { - int retval = 0; - int first = 1; + char first = 0; int c; - while (((c = getchar()) != EOF) && (c != '\n')) { - /* Make sure we get the actual function call for isspace, - * as speed is not critical here. */ - if (first && !(isspace)(c)) { - --first; - if ((c == 'y') || (c == 'Y')) { - ++retval; - } + fflush_all(); + while (((c = fgetc(fp)) != EOF) && (c != '\n')) { + if (first == 0 && !isblank(c)) { + first = c|0x20; } } - return retval; + return first == 'y'; +} + +int FAST_FUNC bb_ask_y_confirmation(void) +{ + return bb_ask_y_confirmation_FILE(stdin); }