[git commit] Rewrite iteration through applet names to save a few bytes

Denys Vlasenko vda.linux at googlemail.com
Fri Apr 15 20:13:51 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=2b91958dff0b7bae83cf2c3f2db55bd248fe0956
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
run_applet_and_exit                                  758     755      -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3)               Total: -3 bytes

In standalone shell mode the saving increases to 17 bytes.

Signed-off-by: Ron Yorston <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/appletlib.c | 3 ++-
 libbb/lineedit.c  | 7 +++----
 shell/ash.c       | 3 ++-
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index de654f6..b682e6b 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -791,7 +791,8 @@ static int busybox_main(char **argv)
 			full_write2_str(a);
 			full_write2_str("\n");
 			i++;
-			a += strlen(a) + 1;
+			while (*a++ != '\0')
+				continue;
 		}
 		return 0;
 	}
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 2ddb2b6..3e62f46 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -779,12 +779,11 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type)
 	if (type == FIND_EXE_ONLY) {
 		const char *p = applet_names;
 
-		i = 0;
-		while (i < NUM_APPLETS) {
+		while (*p) {
 			if (strncmp(pfind, p, pf_len) == 0)
 				add_match(xstrdup(p));
-			p += strlen(p) + 1;
-			i++;
+			while (*p++ != '\0')
+				continue;
 		}
 	}
 #endif
diff --git a/shell/ash.c b/shell/ash.c
index 5613e1f..13eeab3 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -12597,7 +12597,8 @@ helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 				out1fmt("\n");
 				col = 0;
 			}
-			a += strlen(a) + 1;
+			while (*a++ != '\0')
+				continue;
 		}
 	}
 # endif


More information about the busybox-cvs mailing list