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>
This commit is contained in:
parent
d4dd48f294
commit
bd202a5ec1
@ -80,9 +80,11 @@
|
|||||||
/* This is a NOEXEC applet. Be very careful! */
|
/* This is a NOEXEC applet. Be very careful! */
|
||||||
|
|
||||||
|
|
||||||
//#define dbg_msg(...) bb_error_msg(__VA_ARGS__)
|
#if 0
|
||||||
#define dbg_msg(...) ((void)0)
|
# define dbg_msg(...) bb_error_msg(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
# define dbg_msg(...) ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
# ifndef ENABLE_FEATURE_XARGS_SUPPORT_CONFIRMATION
|
# 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) {
|
while (1) {
|
||||||
int c = getchar();
|
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 (c == EOF || c == G.eol_ch) {
|
||||||
if (p == buf)
|
|
||||||
goto ret; /* empty line */
|
|
||||||
c = '\0';
|
c = '\0';
|
||||||
}
|
}
|
||||||
*p++ = c;
|
*p++ = c;
|
||||||
|
@ -61,4 +61,12 @@ testing "xargs -n2" \
|
|||||||
|
|
||||||
SKIP=
|
SKIP=
|
||||||
|
|
||||||
|
optional FEATURE_XARGS_SUPPORT_QUOTES
|
||||||
|
testing "xargs -I skips empty lines and leading whitespace" \
|
||||||
|
"xargs -I% echo '[%]'" \
|
||||||
|
"[2]\n[4]\n[6 6 ]\n[7]\n" \
|
||||||
|
"" " \n2\n\n4\n\n 6 6 \n \v \t 7\n\t\n\v\n"
|
||||||
|
|
||||||
|
SKIP=
|
||||||
|
|
||||||
exit $FAILCOUNT
|
exit $FAILCOUNT
|
||||||
|
Loading…
Reference in New Issue
Block a user