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 <vda.linux@googlemail.com>
This commit is contained in:
parent
77cb6b99a4
commit
bae8fc4436
@ -496,16 +496,16 @@ static char* FAST_FUNC process_stdin_with_replace(int n_max_chars, int n_max_arg
|
|||||||
static int xargs_ask_confirmation(void)
|
static int xargs_ask_confirmation(void)
|
||||||
{
|
{
|
||||||
FILE *tty_stream;
|
FILE *tty_stream;
|
||||||
int c, savec;
|
int r;
|
||||||
|
|
||||||
tty_stream = xfopen_for_read(CURRENT_TTY);
|
tty_stream = xfopen_for_read(CURRENT_TTY);
|
||||||
|
|
||||||
fputs(" ?...", stderr);
|
fputs(" ?...", stderr);
|
||||||
fflush_all();
|
r = bb_ask_y_confirmation_FILE(tty_stream);
|
||||||
c = savec = getc(tty_stream);
|
|
||||||
while (c != EOF && c != '\n')
|
|
||||||
c = getc(tty_stream);
|
|
||||||
fclose(tty_stream);
|
fclose(tty_stream);
|
||||||
return (savec == 'y' || savec == 'Y');
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
# define xargs_ask_confirmation() 1
|
# define xargs_ask_confirmation() 1
|
||||||
|
@ -1412,6 +1412,7 @@ extern int set_loop(char **devname, const char *file, unsigned long long offset,
|
|||||||
char *bb_ask_noecho_stdin(const char *prompt) FAST_FUNC;
|
char *bb_ask_noecho_stdin(const char *prompt) FAST_FUNC;
|
||||||
//TODO: pass buf pointer or return allocated buf (avoid statics)?
|
//TODO: pass buf pointer or return allocated buf (avoid statics)?
|
||||||
char *bb_ask_noecho(const int fd, int timeout, const char *prompt) FAST_FUNC;
|
char *bb_ask_noecho(const int fd, int timeout, const char *prompt) FAST_FUNC;
|
||||||
|
int bb_ask_y_confirmation_FILE(FILE *fp) FAST_FUNC;
|
||||||
int bb_ask_y_confirmation(void) FAST_FUNC;
|
int bb_ask_y_confirmation(void) FAST_FUNC;
|
||||||
|
|
||||||
/* Returns -1 if input is invalid. current_mode is a base for e.g. "u+rw" */
|
/* Returns -1 if input is invalid. current_mode is a base for e.g. "u+rw" */
|
||||||
|
@ -8,15 +8,16 @@
|
|||||||
*/
|
*/
|
||||||
#include "libbb.h"
|
#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.
|
* 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;
|
char first = 0;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
while (((c = getchar()) != EOF) && (c != '\n')) {
|
fflush_all();
|
||||||
|
while (((c = fgetc(fp)) != EOF) && (c != '\n')) {
|
||||||
if (first == 0 && !isblank(c)) {
|
if (first == 0 && !isblank(c)) {
|
||||||
first = c|0x20;
|
first = c|0x20;
|
||||||
}
|
}
|
||||||
@ -24,3 +25,8 @@ int FAST_FUNC bb_ask_y_confirmation(void)
|
|||||||
|
|
||||||
return first == 'y';
|
return first == 'y';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int FAST_FUNC bb_ask_y_confirmation(void)
|
||||||
|
{
|
||||||
|
return bb_ask_y_confirmation_FILE(stdin);
|
||||||
|
}
|
||||||
|
@ -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))
|
if ((!(flags & FILEUTILS_FORCE) && access(path, W_OK) < 0 && isatty(0))
|
||||||
|| (flags & FILEUTILS_INTERACTIVE)
|
|| (flags & FILEUTILS_INTERACTIVE)
|
||||||
) {
|
) {
|
||||||
fprintf(stderr, "%s: descend into directory '%s'? ", applet_name,
|
fprintf(stderr, "%s: descend into directory '%s'? ",
|
||||||
path);
|
applet_name, path);
|
||||||
if (!bb_ask_y_confirmation())
|
if (!bb_ask_y_confirmation())
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -67,7 +67,8 @@ int FAST_FUNC remove_file(const char *path, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (flags & FILEUTILS_INTERACTIVE) {
|
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())
|
if (!bb_ask_y_confirmation())
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -421,7 +421,6 @@ static void check_write_funcs(int fd, int mode, int pec)
|
|||||||
static void confirm_or_abort(void)
|
static void confirm_or_abort(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Continue? [y/N] ");
|
fprintf(stderr, "Continue? [y/N] ");
|
||||||
fflush_all();
|
|
||||||
if (!bb_ask_y_confirmation())
|
if (!bb_ask_y_confirmation())
|
||||||
bb_error_msg_and_die("aborting");
|
bb_error_msg_and_die("aborting");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user