diff --git a/src/xargs.c b/src/xargs.c index 4e017ab..e359cc8 100644 --- a/src/xargs.c +++ b/src/xargs.c @@ -14,7 +14,7 @@ #define ARG_MAX 10000 #endif -static int args_main; +static int args; static int args_added; static char *cmd[ARG_MAX + 1]; @@ -41,14 +41,14 @@ enum { }; static void clear_cmd(void) { - for (int i = 0; i < args_main; i++) { + for (int i = 0; i < args; i++) { if (cmd[i] != NULL) { free(cmd[i]); cmd[i] = NULL; } } - args_main = 0; + args = 0; args_added = 0; } @@ -57,7 +57,7 @@ static int add_arg(const char *str, size_t chars, const char flag) { args_added++; int ret = NORMAL; - if (args_main >= ARG_MAX) + if (args >= ARG_MAX) return ERROR; else if (n_flag > 0 && args_added == n_flag && I_flag == NULL) @@ -67,7 +67,7 @@ static int add_arg(const char *str, size_t chars, const char flag) { ret = STOP; if (!flag && I_flag) { - for (int i = 0; i < args_main; i++) + for (int i = 0; i < args; i++) if (strstr(cmd[i], I_flag)) { char *ptr = NULL; CONTINUE: @@ -86,8 +86,8 @@ CONTINUE: return STOP; } - cmd[args_main] = strdup(str); - args_main++; + cmd[args] = strdup(str); + args++; return ret; } @@ -200,7 +200,7 @@ static int xargs(void) { static int spawn(void) { if (t_flag) { - for (int i = 0; i < args_main; i++) + for (int i = 0; i < args; i++) fprintf(stderr, "%s ", cmd[i]); fputc('\n', stderr); @@ -306,7 +306,7 @@ int main(int argc, char **argv) { ret = 1; /* Check NULL */ - for (int i = 0; i < args_main; i++) { + for (int i = 0; i < args; i++) { if (cmd[i] == NULL) { fprintf(stderr, "xargs: strdup failed\n"); clear_cmd(); @@ -317,10 +317,10 @@ int main(int argc, char **argv) { } /* Run */ - if (stdin_stat == NORMAL) + if (stdin_stat == NORMAL || stdin_stat == CEOF) ret = spawn(); - else if (stdin_stat == R_FLAG && !r_flag) + else if (stdin_stat == R_FLAG && !r_flag && I_flag == NULL) ret = spawn(); clear_cmd();