diff options
author | Denys Vlasenko | 2020-09-30 00:00:43 +0200 |
---|---|---|
committer | Denys Vlasenko | 2020-09-30 00:00:43 +0200 |
commit | bd202a5ec15b82ba9562cdd81157e703349d8459 (patch) | |
tree | 6ecc199048004f741144bbbf9c5b3561f6161d57 /findutils/xargs.c | |
parent | d4dd48f2948b006f4ccb7cc2b603fb3d00f90685 (diff) | |
download | busybox-bd202a5ec15b82ba9562cdd81157e703349d8459.zip busybox-bd202a5ec15b82ba9562cdd81157e703349d8459.tar.gz |
xargs: fix -I SUBSTR behaviour
function old new delta
process_stdin_with_replace 165 204 +39
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'findutils/xargs.c')
-rw-r--r-- | findutils/xargs.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/findutils/xargs.c b/findutils/xargs.c index ff04bfe..e2b3527 100644 --- a/findutils/xargs.c +++ b/findutils/xargs.c @@ -80,9 +80,11 @@ /* This is a NOEXEC applet. Be very careful! */ -//#define dbg_msg(...) bb_error_msg(__VA_ARGS__) -#define dbg_msg(...) ((void)0) - +#if 0 +# define dbg_msg(...) bb_error_msg(__VA_ARGS__) +#else +# define dbg_msg(...) ((void)0) +#endif #ifdef TEST # ifndef ENABLE_FEATURE_XARGS_SUPPORT_CONFIRMATION @@ -466,9 +468,18 @@ static char* FAST_FUNC process_stdin_with_replace(int n_max_chars, int n_max_arg while (1) { int c = getchar(); + if (p == buf) { + if (c == EOF) + goto ret; /* last line is empty, return "" */ + if (c == G.eol_ch) + continue; /* empty line, ignore */ + /* Skip leading whitespace of each line: try + * echo -e ' \t\v1 2 3 ' | xargs -I% echo '[%]' + */ + if (ISSPACE(c)) + continue; + } if (c == EOF || c == G.eol_ch) { - if (p == buf) - goto ret; /* empty line */ c = '\0'; } *p++ = c; |