[git commit master 1/1] xargs: trivial code shrink

Denys Vlasenko vda.linux at googlemail.com
Mon Jun 14 10:38:36 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=c28cafb18d4ecf079d77f15a7b8d9ba6d4241b5a
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
process_stdin                                        343     336      -7
process0_stdin                                       124     117      -7
xargs_main                                           807     787     -20

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 findutils/xargs.c |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/findutils/xargs.c b/findutils/xargs.c
index 857773d..5c26685 100644
--- a/findutils/xargs.c
+++ b/findutils/xargs.c
@@ -150,7 +150,6 @@ static void store_param(char *s)
  * (buf has extra byte at the end to accomodate terminating NUL
  * of "tail characters" string).
  * Otherwise, the returned pointer points to NUL byte.
- * The args[] vector is NULL-terminated.
  * On entry, buf[] may contain some "seed chars" which are to become
  * the beginning of the first parameter.
  */
@@ -241,7 +240,7 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf)
 	}
  ret:
 	*p = '\0';
-	store_param(NULL);
+	/* store_param(NULL) - caller will do it */
 	dbg_msg("return:'%s'", s);
 	return s;
 }
@@ -293,7 +292,7 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf)
 	}
  ret:
 	*p = '\0';
-	store_param(NULL);
+	/* store_param(NULL) - caller will do it */
 	dbg_msg("return:'%s'", s);
 	return s;
 }
@@ -334,7 +333,7 @@ static char* FAST_FUNC process0_stdin(int n_max_chars, int n_max_arg, char *buf)
 	}
  ret:
 	*p = '\0';
-	store_param(NULL);
+	/* store_param(NULL) - caller will do it */
 	dbg_msg("return:'%s'", s);
 	return s;
 }
@@ -461,13 +460,10 @@ int xargs_main(int argc, char **argv)
 
 	buf = xzalloc(n_max_chars + 1);
 
+	n_max_arg = n_max_chars;
 	if (opt & OPT_UPTO_NUMBER) {
 		n_max_arg = xatou_range(max_args, 1, INT_MAX);
-		if (n_max_arg < n_max_chars)
-			goto skip;
 	}
-	n_max_arg = n_max_chars;
- skip:
 
 	/* Allocate pointers for execvp */
 	/* We can statically allocate (argc + n_max_arg + 1) elements
@@ -489,6 +485,7 @@ int xargs_main(int argc, char **argv)
 
 		G.idx = argc;
 		rem = read_args(n_max_chars, n_max_arg, buf);
+		store_param(NULL);
 
 		if (!G.args[argc]) {
 			if (*rem != '\0')
@@ -499,10 +496,11 @@ int xargs_main(int argc, char **argv)
 		opt |= OPT_NO_EMPTY;
 
 		if (opt & (OPT_INTERACTIVE | OPT_VERBOSE)) {
-			for (i = 0; G.args[i]; i++) {
-				if (i)
-					bb_putchar_stderr(' ');
-				fputs(G.args[i], stderr);
+			const char *fmt = " %s" + 1;
+			char **args = G.args;
+			for (i = 0; args[i]; i++) {
+				fprintf(stderr, fmt, args[i]);
+				fmt = " %s";
 			}
 			if (!(opt & OPT_INTERACTIVE))
 				bb_putchar_stderr('\n');
-- 
1.7.1



More information about the busybox-cvs mailing list