From 96bdde97fb7ebb44a89404bb87dc8e8cd4ec7446 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 23 Sep 2000 19:53:31 +0000 Subject: [PATCH] Fix memory problems, and make behavior correct. --- findutils/xargs.c | 13 ++++++++----- xargs.c | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/findutils/xargs.c b/findutils/xargs.c index 24daf5085..bf68cf768 100644 --- a/findutils/xargs.c +++ b/findutils/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); diff --git a/xargs.c b/xargs.c index 24daf5085..bf68cf768 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); -- 2.25.1