summaryrefslogtreecommitdiff
path: root/xargs.c
diff options
context:
space:
mode:
authorEric Andersen2000-09-23 19:53:31 +0000
committerEric Andersen2000-09-23 19:53:31 +0000
commit96bdde97fb7ebb44a89404bb87dc8e8cd4ec7446 (patch)
tree0ca8189e67b96c03195193b6b2d060a8aa47b538 /xargs.c
parent6d66817b6bcc237c24c6aeb37af1407b36f49f9f (diff)
downloadbusybox-96bdde97fb7ebb44a89404bb87dc8e8cd4ec7446.zip
busybox-96bdde97fb7ebb44a89404bb87dc8e8cd4ec7446.tar.gz
Fix memory problems, and make behavior correct.
Diffstat (limited to 'xargs.c')
-rw-r--r--xargs.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/xargs.c b/xargs.c
index 24daf50..bf68cf7 100644
--- a/xargs.c
+++ b/xargs.c
@@ -78,13 +78,16 @@ int xargs_main(int argc, char **argv)
/* Now, read in one line at a time from stdin, and run command+args on it */
in_from_stdin = get_line_from_file(stdin);
for (;in_from_stdin!=NULL;) {
+ char *tmp;
len = strlen(in_from_stdin) + len_args_from_cmdline;
- if ( len > len_cmd_to_be_executed ) {
- len_cmd_to_be_executed=len+3;
- cmd_to_be_executed=xrealloc(cmd_to_be_executed, len_cmd_to_be_executed);
- }
+ len_cmd_to_be_executed+=len+3;
+ cmd_to_be_executed=xrealloc(cmd_to_be_executed, len_cmd_to_be_executed);
+
+ /* Strip out any \n's, so we just get one command to run */
+ while( (tmp = strchr(in_from_stdin, '\n')) != NULL )
+ *tmp=' ';
+
strcat(cmd_to_be_executed, in_from_stdin);
- strcat(cmd_to_be_executed+strlen(cmd_to_be_executed)-2, " ");
strcat(cmd_to_be_executed, " ");
free(in_from_stdin);