142
140
IF_FEATURE_XARGS_SUPPORT_QUOTES(G.process_stdin__q = '\0';) \
145
/* Correct regardless of combination of CONFIG_xxx */
154
IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(OPTBIT_INTERACTIVE,)
155
IF_FEATURE_XARGS_SUPPORT_TERMOPT( OPTBIT_TERMINATE ,)
156
IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( OPTBIT_ZEROTERM ,)
157
IF_FEATURE_XARGS_SUPPORT_REPL_STR( OPTBIT_REPLSTR ,)
158
IF_FEATURE_XARGS_SUPPORT_REPL_STR( OPTBIT_REPLSTR1 ,)
160
OPT_VERBOSE = 1 << OPTBIT_VERBOSE ,
161
OPT_NO_EMPTY = 1 << OPTBIT_NO_EMPTY ,
162
OPT_UPTO_NUMBER = 1 << OPTBIT_UPTO_NUMBER,
163
OPT_UPTO_SIZE = 1 << OPTBIT_UPTO_SIZE ,
164
OPT_EOF_STRING = 1 << OPTBIT_EOF_STRING , /* GNU: -e[<param>] */
165
OPT_EOF_STRING1 = 1 << OPTBIT_EOF_STRING1, /* SUS: -E<param> */
166
OPT_STDIN_TTY = 1 << OPTBIT_STDIN_TTY,
167
OPT_INTERACTIVE = IF_FEATURE_XARGS_SUPPORT_CONFIRMATION((1 << OPTBIT_INTERACTIVE)) + 0,
168
OPT_TERMINATE = IF_FEATURE_XARGS_SUPPORT_TERMOPT( (1 << OPTBIT_TERMINATE )) + 0,
169
OPT_ZEROTERM = IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( (1 << OPTBIT_ZEROTERM )) + 0,
170
OPT_REPLSTR = IF_FEATURE_XARGS_SUPPORT_REPL_STR( (1 << OPTBIT_REPLSTR )) + 0,
171
OPT_REPLSTR1 = IF_FEATURE_XARGS_SUPPORT_REPL_STR( (1 << OPTBIT_REPLSTR1 )) + 0,
173
#define OPTION_STR "+trn:s:e::E:o" \
174
IF_FEATURE_XARGS_SUPPORT_CONFIRMATION("p") \
175
IF_FEATURE_XARGS_SUPPORT_TERMOPT( "x") \
176
IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( "0") \
177
IF_FEATURE_XARGS_SUPPORT_REPL_STR( "I:i::") \
178
IF_FEATURE_XARGS_SUPPORT_PARALLEL( "P:+") \
179
IF_FEATURE_XARGS_SUPPORT_ARGS_FILE( "a:")
183
145
* Returns 0 if xargs should continue (but may set G.xargs_exitcode to 123).
192
if (option_mask32 & OPT_STDIN_TTY)
193
xdup2(G.fd_tty, STDIN_FILENO);
195
154
#if !ENABLE_FEATURE_XARGS_SUPPORT_PARALLEL
196
155
status = spawn_and_wait(G.args);
585
542
//usage: IF_FEATURE_XARGS_SUPPORT_ARGS_FILE(
586
543
//usage: "\n -a FILE Read from FILE instead of stdin"
588
//usage: "\n -o Reopen stdin as /dev/tty"
589
545
//usage: "\n -r Don't run command if input is empty"
590
546
//usage: "\n -t Print the command on stderr before execution"
591
547
//usage: IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(
607
563
//usage: "$ ls | xargs gzip\n"
608
564
//usage: "$ find . -name '*.c' -print | xargs rm\n"
566
/* Correct regardless of combination of CONFIG_xxx */
574
IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(OPTBIT_INTERACTIVE,)
575
IF_FEATURE_XARGS_SUPPORT_TERMOPT( OPTBIT_TERMINATE ,)
576
IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( OPTBIT_ZEROTERM ,)
577
IF_FEATURE_XARGS_SUPPORT_REPL_STR( OPTBIT_REPLSTR ,)
578
IF_FEATURE_XARGS_SUPPORT_REPL_STR( OPTBIT_REPLSTR1 ,)
580
OPT_VERBOSE = 1 << OPTBIT_VERBOSE ,
581
OPT_NO_EMPTY = 1 << OPTBIT_NO_EMPTY ,
582
OPT_UPTO_NUMBER = 1 << OPTBIT_UPTO_NUMBER,
583
OPT_UPTO_SIZE = 1 << OPTBIT_UPTO_SIZE ,
584
OPT_EOF_STRING = 1 << OPTBIT_EOF_STRING , /* GNU: -e[<param>] */
585
OPT_EOF_STRING1 = 1 << OPTBIT_EOF_STRING1, /* SUS: -E<param> */
586
OPT_INTERACTIVE = IF_FEATURE_XARGS_SUPPORT_CONFIRMATION((1 << OPTBIT_INTERACTIVE)) + 0,
587
OPT_TERMINATE = IF_FEATURE_XARGS_SUPPORT_TERMOPT( (1 << OPTBIT_TERMINATE )) + 0,
588
OPT_ZEROTERM = IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( (1 << OPTBIT_ZEROTERM )) + 0,
589
OPT_REPLSTR = IF_FEATURE_XARGS_SUPPORT_REPL_STR( (1 << OPTBIT_REPLSTR )) + 0,
590
OPT_REPLSTR1 = IF_FEATURE_XARGS_SUPPORT_REPL_STR( (1 << OPTBIT_REPLSTR1 )) + 0,
592
#define OPTION_STR "+trn:s:e::E:" \
593
IF_FEATURE_XARGS_SUPPORT_CONFIRMATION("p") \
594
IF_FEATURE_XARGS_SUPPORT_TERMOPT( "x") \
595
IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( "0") \
596
IF_FEATURE_XARGS_SUPPORT_REPL_STR( "I:i::") \
597
IF_FEATURE_XARGS_SUPPORT_PARALLEL( "P:+") \
598
IF_FEATURE_XARGS_SUPPORT_ARGS_FILE( "a:")
610
600
int xargs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
611
601
int xargs_main(int argc UNUSED_PARAM, char **argv)
736
726
store_param(argv[i]);
739
if (opt & OPT_STDIN_TTY) {
740
G.fd_tty = xopen(CURRENT_TTY, O_RDONLY);
741
close_on_exec_on(G.fd_tty);
742
G.fd_stdin = dup(STDIN_FILENO);
743
close_on_exec_on(G.fd_stdin);
746
729
initial_idx = G.idx;