Some more polish to make xargs act like GNU xargs (thanks to kent robotti
authorEric Andersen <andersen@codepoet.org>
Mon, 25 Sep 2000 22:53:05 +0000 (22:53 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 25 Sep 2000 22:53:05 +0000 (22:53 -0000)
<robotti@metconnect.com> for testing and pointing out the differences)
 -Erik

findutils/xargs.c
xargs.c

index 4a3fe3c6094722f890c28382c35541e9e7a99ce1..beada7a15412222d1bfee902d2ab167d90fbe6d2 100644 (file)
@@ -38,7 +38,7 @@ int xargs_main(int argc, char **argv)
        char *args = NULL;
        char *cmd_to_be_executed = NULL;
        char traceflag = 0;
-       int len_args=10, len_cmd_to_be_executed, opt;
+       int len_args=2, len_cmd_to_be_executed, opt;
        pid_t pid;
        int wpid, status;
 
@@ -69,9 +69,11 @@ int xargs_main(int argc, char **argv)
                strcat(cmd_to_be_executed, *argv);
        }
 
+       args=xrealloc(args, len_args);
+       strcpy(args, " ");
 
-       /* Now, read in one line at a time from stdin, and stroe this to be used later 
-        * as an argument to the command we just stored */
+       /* Now, read in one line at a time from stdin, and store this 
+        * line to be used later as an argument to the command */
        in_from_stdin = get_line_from_file(stdin);
        for (;in_from_stdin!=NULL;) {
                char *tmp;
@@ -111,8 +113,7 @@ int xargs_main(int argc, char **argv)
        }
 
        if (traceflag==1) {
-               fputs(cmd_to_be_executed, stderr);
-               fputs(args, stderr);
+               fprintf(stderr, "%s%s\n", cmd_to_be_executed, args);
        }
 
        if ((pid = fork()) == 0) {
diff --git a/xargs.c b/xargs.c
index 4a3fe3c6094722f890c28382c35541e9e7a99ce1..beada7a15412222d1bfee902d2ab167d90fbe6d2 100644 (file)
--- a/xargs.c
+++ b/xargs.c
@@ -38,7 +38,7 @@ int xargs_main(int argc, char **argv)
        char *args = NULL;
        char *cmd_to_be_executed = NULL;
        char traceflag = 0;
-       int len_args=10, len_cmd_to_be_executed, opt;
+       int len_args=2, len_cmd_to_be_executed, opt;
        pid_t pid;
        int wpid, status;
 
@@ -69,9 +69,11 @@ int xargs_main(int argc, char **argv)
                strcat(cmd_to_be_executed, *argv);
        }
 
+       args=xrealloc(args, len_args);
+       strcpy(args, " ");
 
-       /* Now, read in one line at a time from stdin, and stroe this to be used later 
-        * as an argument to the command we just stored */
+       /* Now, read in one line at a time from stdin, and store this 
+        * line to be used later as an argument to the command */
        in_from_stdin = get_line_from_file(stdin);
        for (;in_from_stdin!=NULL;) {
                char *tmp;
@@ -111,8 +113,7 @@ int xargs_main(int argc, char **argv)
        }
 
        if (traceflag==1) {
-               fputs(cmd_to_be_executed, stderr);
-               fputs(args, stderr);
+               fprintf(stderr, "%s%s\n", cmd_to_be_executed, args);
        }
 
        if ((pid = fork()) == 0) {