[git commit] lsscsi: code shrink

Denys Vlasenko vda.linux at googlemail.com
Mon Jul 20 00:03:02 UTC 2020


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

function                                             old     new   delta
lsscsi_main                                          298     302      +4
get_line                                              56      45     -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 4/-11)              Total: -7 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/lsscsi.c | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/miscutils/lsscsi.c b/miscutils/lsscsi.c
index f737d33d9..76c281264 100644
--- a/miscutils/lsscsi.c
+++ b/miscutils/lsscsi.c
@@ -27,25 +27,21 @@
 
 static const char scsi_dir[] ALIGN1 = "/sys/bus/scsi/devices";
 
-static char *get_line(const char *filename, char *buf, unsigned *bufsize_p)
+static char *get_line(const char *filename, char *buf, char *bufend)
 {
-	unsigned bufsize = *bufsize_p;
-	ssize_t sz;
+	ssize_t sz = bufend - buf - 2; /* -2 for two NULs */
 
-	if ((int)(bufsize - 2) <= 0)
+	if (sz <= 0)
 		return buf;
 
-	sz = open_read_close(filename, buf, bufsize - 2);
+	sz = open_read_close(filename, buf, sz);
 	if (sz < 0)
 		sz = 0;
 	buf[sz] = '\0';
 
-	sz = (trim(buf) - buf) + 1;
-	bufsize -= sz;
-	buf += sz;
+	buf = trim(buf) + 1;
 	buf[0] = '\0';
 
-	*bufsize_p = bufsize;
 	return buf;
 }
 
@@ -61,7 +57,6 @@ int lsscsi_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 	while ((de = readdir(dir)) != NULL) {
 		char buf[256];
 		char *ptr;
-		unsigned bufsize;
 		const char *vendor;
 		const char *type_str;
 		const char *type_name;
@@ -76,15 +71,17 @@ int lsscsi_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 		if (chdir(de->d_name) != 0)
 			continue;
 
-		bufsize = sizeof(buf);
 		vendor = buf;
-		ptr = get_line("vendor", buf, &bufsize);
+		ptr = get_line("vendor", buf, buf + sizeof(buf));
+
 		type_str = ptr;
-		ptr = get_line("type", ptr, &bufsize);
+		ptr = get_line("type", ptr, buf + sizeof(buf));
+
 		model = ptr;
-		ptr = get_line("model", ptr, &bufsize);
+		ptr = get_line("model", ptr, buf + sizeof(buf));
+
 		rev = ptr;
-		ptr = get_line("rev", ptr, &bufsize);
+		/*ptr =*/ get_line("rev", ptr, buf + sizeof(buf));
 
 		printf("[%s]\t", de->d_name);
 


More information about the busybox-cvs mailing list