diff mbox

[U-Boot,v4,06/13] Replace space and tab checks with isblank

Message ID 1314133621-6488-7-git-send-email-jason.hobbs@calxeda.com
State Accepted
Commit 4d91a6ecabd10652abba696e55e952676db0aae1
Headers show

Commit Message

Jason Hobbs Aug. 23, 2011, 9:06 p.m. UTC
These are various places I found that checked for conditions equivalent
to isblank.

Signed-off-by: Jason Hobbs <jason.hobbs@calxeda.com>
---
new in v4

 board/hymod/env.c                    |    9 +++++----
 common/command.c                     |    9 +++++----
 common/main.c                        |    5 +++--
 drivers/bios_emulator/x86emu/debug.c |    7 ++++---
 examples/standalone/smc911x_eeprom.c |    5 +++--
 lib/hashtable.c                      |    4 +++-
 6 files changed, 23 insertions(+), 16 deletions(-)

Comments

Mike Frysinger Aug. 23, 2011, 9:42 p.m. UTC | #1
On Tuesday, August 23, 2011 17:06:54 Jason Hobbs wrote:
> -	while (*nn == ' ' || *nn == '\t')
> +	while (isblank(*nn))
>  		nn++;

at least for these "walking forward" ones, they could be replaced with:
	nn += strspn(nn, " \t");
-mike
Jason Hobbs Aug. 24, 2011, 3:56 p.m. UTC | #2
On Tue, Aug 23, 2011 at 05:42:59PM -0400, Mike Frysinger wrote:
> On Tuesday, August 23, 2011 17:06:54 Jason Hobbs wrote:
> > -	while (*nn == ' ' || *nn == '\t')
> > +	while (isblank(*nn))
> >  		nn++;
> 
> at least for these "walking forward" ones, they could be replaced with:
> 	nn += strspn(nn, " \t");
> -mike

Sure, and we'd pick up the use of a currently unused function which
might otherwise get optimized away with linker garbage collection. Even
without taking garbage collection of strspn into account, switching one
of the "walkahead while isblank" lines in my tree to the strspn pattern
inceases my binary size by 11 bytes - two of them inceases it by 31
bytes. There's also the extra overhead for the function call and
strspn's local variables. I'd consider it if strspn was more readable (I
don't think it is), or there was some cost to adding the isblank macro
(there isn't, as it's replacing existing code that was doing the same
thing).

Jason
diff mbox

Patch

diff --git a/board/hymod/env.c b/board/hymod/env.c
index c0e2cd5..fde428d 100644
--- a/board/hymod/env.c
+++ b/board/hymod/env.c
@@ -22,6 +22,7 @@ 
  */
 
 #include <common.h>
+#include <linux/ctype.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -45,7 +46,7 @@  env_callback (uchar *name, uchar *value)
 		nn++;
 	}
 
-	while (*nn == ' ' || *nn == '\t')
+	while (isblank(*nn))
 		nn++;
 
 	if ((nnl = strlen (nn)) == 0) {
@@ -61,7 +62,7 @@  env_callback (uchar *name, uchar *value)
 		nn[--nnl] = '\0';
 	}
 
-	while (nnl > 0 && ((c = nn[nnl - 1]) == ' ' || c == '\t'))
+	while (nnl > 0 && isblank(nn[nnl - 1]))
 		nn[--nnl] = '\0';
 	if (nnl == 0) {
 		printf ("Empty name in global env file\n");
@@ -71,11 +72,11 @@  env_callback (uchar *name, uchar *value)
 	p = (char *)value;
 	q = nv;
 
-	while ((c = *p) == ' ' || c == '\t')
+	while (isblank(*p))
 		p++;
 
 	nvl = strlen (p);
-	while (nvl > 0 && ((c = p[nvl - 1]) == ' ' || c == '\t'))
+	while (nvl > 0 && isblank(p[nvl - 1]))
 		p[--nvl] = '\0';
 
 	while ((*q = *p++) != '\0') {
diff --git a/common/command.c b/common/command.c
index ddaed68..85b6424 100644
--- a/common/command.c
+++ b/common/command.c
@@ -27,6 +27,7 @@ 
 
 #include <common.h>
 #include <command.h>
+#include <linux/ctype.h>
 
 /*
  * Use puts() instead of printf() to avoid printf buffer overflow
@@ -165,7 +166,7 @@  int var_complete(int argc, char * const argv[], char last_char, int maxv, char *
 	static char tmp_buf[512];
 	int space;
 
-	space = last_char == '\0' || last_char == ' ' || last_char == '\t';
+	space = last_char == '\0' || isblank(last_char);
 
 	if (space && argc == 1)
 		return env_complete("", maxv, cmdv, sizeof(tmp_buf), tmp_buf);
@@ -206,7 +207,7 @@  static int complete_cmdv(int argc, char * const argv[], char last_char, int maxv
 	}
 
 	/* more than one arg or one but the start of the next */
-	if (argc > 1 || (last_char == '\0' || last_char == ' ' || last_char == '\t')) {
+	if (argc > 1 || (last_char == '\0' || isblank(last_char))) {
 		cmdtp = find_cmd(argv[0]);
 		if (cmdtp == NULL || cmdtp->complete == NULL) {
 			cmdv[0] = NULL;
@@ -257,7 +258,7 @@  static int make_argv(char *s, int argvsz, char *argv[])
 	while (argc < argvsz - 1) {
 
 		/* skip any white space */
-		while ((*s == ' ') || (*s == '\t'))
+		while (isblank(*s))
 			++s;
 
 		if (*s == '\0')	/* end of s, no more args	*/
@@ -266,7 +267,7 @@  static int make_argv(char *s, int argvsz, char *argv[])
 		argv[argc++] = s;	/* begin of argument string	*/
 
 		/* find end of string */
-		while (*s && (*s != ' ') && (*s != '\t'))
+		while (*s && !isblank(*s))
 			++s;
 
 		if (*s == '\0')		/* end of s, no more args	*/
diff --git a/common/main.c b/common/main.c
index bf5ddca..5a623d8 100644
--- a/common/main.c
+++ b/common/main.c
@@ -40,6 +40,7 @@ 
 #endif
 
 #include <post.h>
+#include <linux/ctype.h>
 
 #if defined(CONFIG_SILENT_CONSOLE) || defined(CONFIG_POST) || defined(CONFIG_CMDLINE_EDITING)
 DECLARE_GLOBAL_DATA_PTR;
@@ -1091,7 +1092,7 @@  int parse_line (char *line, char *argv[])
 	while (nargs < CONFIG_SYS_MAXARGS) {
 
 		/* skip any white space */
-		while ((*line == ' ') || (*line == '\t'))
+		while (isblank(*line))
 			++line;
 
 		if (*line == '\0') {	/* end of line, no more args	*/
@@ -1105,7 +1106,7 @@  int parse_line (char *line, char *argv[])
 		argv[nargs++] = line;	/* begin of argument string	*/
 
 		/* find end of string */
-		while (*line && (*line != ' ') && (*line != '\t'))
+		while (*line && !isblank(*line))
 			++line;
 
 		if (*line == '\0') {	/* end of line, no more args	*/
diff --git a/drivers/bios_emulator/x86emu/debug.c b/drivers/bios_emulator/x86emu/debug.c
index 241acf3..6417d09 100644
--- a/drivers/bios_emulator/x86emu/debug.c
+++ b/drivers/bios_emulator/x86emu/debug.c
@@ -39,6 +39,7 @@ 
 
 #include <stdarg.h>
 #include <common.h>
+#include <linux/ctype.h>
 #include "x86emu/x86emui.h"
 
 /*----------------------------- Implementation ----------------------------*/
@@ -333,7 +334,7 @@  static int x86emu_parse_line(char *s, int *ps, int *n)
 	int cmd;
 
 	*n = 0;
-	while (*s == ' ' || *s == '\t')
+	while (isblank(*s))
 		s++;
 	ps[*n] = *s;
 	switch (*s) {
@@ -346,13 +347,13 @@  static int x86emu_parse_line(char *s, int *ps, int *n)
 	}
 
 	while (1) {
-		while (*s != ' ' && *s != '\t' && *s != '\n')
+		while (!isblank(*s) && *s != '\n')
 			s++;
 
 		if (*s == '\n')
 			return cmd;
 
-		while (*s == ' ' || *s == '\t')
+		while (isblank(*s))
 			s++;
 
 		*n += 1;
diff --git a/examples/standalone/smc911x_eeprom.c b/examples/standalone/smc911x_eeprom.c
index 00e8266..6c79c5f 100644
--- a/examples/standalone/smc911x_eeprom.c
+++ b/examples/standalone/smc911x_eeprom.c
@@ -16,6 +16,7 @@ 
 
 #include <common.h>
 #include <exports.h>
+#include <linux/ctype.h>
 #include "../drivers/net/smc911x.h"
 
 /**
@@ -128,7 +129,7 @@  static int write_eeprom_reg(struct eth_device *dev, u8 value, u8 reg)
  */
 static char *skip_space(char *buf)
 {
-	while (buf[0] == ' ' || buf[0] == '\t')
+	while (isblank(buf[0]))
 		++buf;
 	return buf;
 }
@@ -357,7 +358,7 @@  int smc911x_eeprom(int argc, char * const argv[])
 			continue;
 
 		/* Only accept 1 letter commands */
-		if (line[0] && line[1] && line[1] != ' ' && line[1] != '\t')
+		if (line[0] && line[1] && !isblank(line[1]))
 			goto unknown_cmd;
 
 		/* Now parse the command */
diff --git a/lib/hashtable.c b/lib/hashtable.c
index 026dbca..6895550 100644
--- a/lib/hashtable.c
+++ b/lib/hashtable.c
@@ -32,6 +32,7 @@ 
 #ifdef USE_HOSTCC		/* HOST build */
 # include <string.h>
 # include <assert.h>
+# include <ctype.h>
 
 # ifndef debug
 #  ifdef DEBUG
@@ -43,6 +44,7 @@ 
 #else				/* U-Boot build */
 # include <common.h>
 # include <linux/string.h>
+# include <linux/ctype.h>
 #endif
 
 #ifndef	CONFIG_ENV_MIN_ENTRIES	/* minimum number of entries */
@@ -690,7 +692,7 @@  int himport_r(struct hsearch_data *htab,
 		ENTRY e, *rv;
 
 		/* skip leading white space */
-		while ((*dp == ' ') || (*dp == '\t'))
+		while (isblank(*dp))
 			++dp;
 
 		/* skip comment lines */