Yet more polish (thanks again to kent robotti for the bug reports).
-Erik
This commit is contained in:
parent
53323695c5
commit
d266748c76
@ -38,7 +38,7 @@ int xargs_main(int argc, char **argv)
|
|||||||
char *args = NULL;
|
char *args = NULL;
|
||||||
char *cmd_to_be_executed = NULL;
|
char *cmd_to_be_executed = NULL;
|
||||||
char traceflag = 0;
|
char traceflag = 0;
|
||||||
int len_args=2, len_cmd_to_be_executed, opt;
|
int len_args=0, len_cmd_to_be_executed, opt;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int wpid, status;
|
int wpid, status;
|
||||||
|
|
||||||
@ -69,8 +69,8 @@ int xargs_main(int argc, char **argv)
|
|||||||
strcat(cmd_to_be_executed, *argv);
|
strcat(cmd_to_be_executed, *argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
args=xrealloc(args, len_args);
|
//args=xrealloc(args, len_args);
|
||||||
strcpy(args, " ");
|
// strcpy(args, " ");
|
||||||
|
|
||||||
/* Now, read in one line at a time from stdin, and store this
|
/* Now, read in one line at a time from stdin, and store this
|
||||||
* line to be used later as an argument to the command */
|
* line to be used later as an argument to the command */
|
||||||
@ -112,21 +112,23 @@ int xargs_main(int argc, char **argv)
|
|||||||
in_from_stdin = get_line_from_file(stdin);
|
in_from_stdin = get_line_from_file(stdin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (traceflag==1) {
|
|
||||||
fprintf(stderr, "%s%s\n", cmd_to_be_executed, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid = fork()) == 0) {
|
if ((pid = fork()) == 0) {
|
||||||
char *cmd[255];
|
char *cmd[255];
|
||||||
int i=1;
|
int i=1;
|
||||||
|
|
||||||
//printf("argv[0]='%s'\n", cmd_to_be_executed);
|
if (traceflag==1) {
|
||||||
|
fprintf(stderr, "%s ", cmd_to_be_executed);
|
||||||
|
}
|
||||||
cmd[0] = cmd_to_be_executed;
|
cmd[0] = cmd_to_be_executed;
|
||||||
while (--argc && ++argv && *argv ) {
|
while (--argc && ++argv && *argv ) {
|
||||||
//printf("argv[%d]='%s'\n", i, *argv);
|
if (traceflag==1) {
|
||||||
|
fprintf(stderr, "%s ", *argv);
|
||||||
|
}
|
||||||
cmd[i++]=*argv;
|
cmd[i++]=*argv;
|
||||||
}
|
}
|
||||||
//printf("argv[%d]='%s'\n", i, args);
|
if (traceflag==1) {
|
||||||
|
fprintf(stderr, "%s\n", args);
|
||||||
|
}
|
||||||
cmd[i++] = args;
|
cmd[i++] = args;
|
||||||
cmd[i] = NULL;
|
cmd[i] = NULL;
|
||||||
execvp(cmd_to_be_executed, cmd);
|
execvp(cmd_to_be_executed, cmd);
|
||||||
|
22
xargs.c
22
xargs.c
@ -38,7 +38,7 @@ int xargs_main(int argc, char **argv)
|
|||||||
char *args = NULL;
|
char *args = NULL;
|
||||||
char *cmd_to_be_executed = NULL;
|
char *cmd_to_be_executed = NULL;
|
||||||
char traceflag = 0;
|
char traceflag = 0;
|
||||||
int len_args=2, len_cmd_to_be_executed, opt;
|
int len_args=0, len_cmd_to_be_executed, opt;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int wpid, status;
|
int wpid, status;
|
||||||
|
|
||||||
@ -69,8 +69,8 @@ int xargs_main(int argc, char **argv)
|
|||||||
strcat(cmd_to_be_executed, *argv);
|
strcat(cmd_to_be_executed, *argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
args=xrealloc(args, len_args);
|
//args=xrealloc(args, len_args);
|
||||||
strcpy(args, " ");
|
// strcpy(args, " ");
|
||||||
|
|
||||||
/* Now, read in one line at a time from stdin, and store this
|
/* Now, read in one line at a time from stdin, and store this
|
||||||
* line to be used later as an argument to the command */
|
* line to be used later as an argument to the command */
|
||||||
@ -112,21 +112,23 @@ int xargs_main(int argc, char **argv)
|
|||||||
in_from_stdin = get_line_from_file(stdin);
|
in_from_stdin = get_line_from_file(stdin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (traceflag==1) {
|
|
||||||
fprintf(stderr, "%s%s\n", cmd_to_be_executed, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pid = fork()) == 0) {
|
if ((pid = fork()) == 0) {
|
||||||
char *cmd[255];
|
char *cmd[255];
|
||||||
int i=1;
|
int i=1;
|
||||||
|
|
||||||
//printf("argv[0]='%s'\n", cmd_to_be_executed);
|
if (traceflag==1) {
|
||||||
|
fprintf(stderr, "%s ", cmd_to_be_executed);
|
||||||
|
}
|
||||||
cmd[0] = cmd_to_be_executed;
|
cmd[0] = cmd_to_be_executed;
|
||||||
while (--argc && ++argv && *argv ) {
|
while (--argc && ++argv && *argv ) {
|
||||||
//printf("argv[%d]='%s'\n", i, *argv);
|
if (traceflag==1) {
|
||||||
|
fprintf(stderr, "%s ", *argv);
|
||||||
|
}
|
||||||
cmd[i++]=*argv;
|
cmd[i++]=*argv;
|
||||||
}
|
}
|
||||||
//printf("argv[%d]='%s'\n", i, args);
|
if (traceflag==1) {
|
||||||
|
fprintf(stderr, "%s\n", args);
|
||||||
|
}
|
||||||
cmd[i++] = args;
|
cmd[i++] = args;
|
||||||
cmd[i] = NULL;
|
cmd[i] = NULL;
|
||||||
execvp(cmd_to_be_executed, cmd);
|
execvp(cmd_to_be_executed, cmd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user