← Commit list

cc08ad26f

Denis Vlasenko
Denis Vlasenko
2008-08-03
FAILED Duration: 21s

Subject

xargs: fix xargs -e; added test for that

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

findutils/xargs.c+7 -1
@@ -376,6 +376,8 @@ enum {
int xargs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int xargs_main(int argc, char **argv)
{
+ static const char const_eof_str[] ALIGN1 = "_";
+
char **args;
int i, n;
xlist_t *list = NULL;
@@ -385,7 +387,7 @@ int xargs_main(int argc, char **argv)
int n_max_arg;
size_t n_chars = 0;
long orig_arg_max;
- const char *eof_str = "_";
+ const char *eof_str = const_eof_str;
unsigned opt;
size_t n_max_chars;
#if ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM
@@ -396,6 +398,10 @@ int xargs_main(int argc, char **argv)
opt = getopt32(argv, OPTION_STR, &max_args, &max_chars, &eof_str);
+ /* -e without optional param? */
+ if ((opt & OPT_EOF_STRING) && eof_str == const_eof_str)
+ eof_str = NULL;
+
if (opt & OPT_ZEROTERM)
USE_FEATURE_XARGS_SUPPORT_ZERO_TERM(read_args = process0_stdin);
testsuite/xargs.tests+19 -0
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Copyright 2008 by Denys Vlasenko
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# testing "test name" "command" "expected result" "file input" "stdin"
+
+testing "xargs stops on underscore" \
+ "xargs" \
+ "a\n" \
+ "" "a\n_\nb\n"
+
+testing "xargs -e without param" \
+ "xargs -e" \
+ "a _ b\n" \
+ "" "a\n_\nb\n"
+
+exit $FAILCOUNT