Thread (4 messages) flat view 4 messages, 4 authors, 2016-06-15

Re: [PATCH] Correct dir.c to compile on Solaris 9

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:04

Hi,

On Sun, 15 Apr 2007, Shawn O. Pearce wrote:
quoted hunk ↗ jump to hunk
The compiler on my Solaris 9 system doesn't understand
the array initialization syntax used here in dir.c.

Signed-off-by: Shawn O. Pearce <redacted>
---
 dir.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/dir.c b/dir.c
index 7426fde..038fd82 100644
--- a/dir.c
+++ b/dir.c
@@ -423,18 +423,17 @@ static int cmp_name(const void *p1, const void *p2)
  */
 static int simple_length(const char *match)
 {
-	const char special[256] = {
-		[0] = 1, ['?'] = 1,
-		['\\'] = 1, ['*'] = 1,
-		['['] = 1
-	};
 	int len = -1;
 
 	for (;;) {
 		unsigned char c = *match++;
 		len++;
-		if (special[c])
+		switch (c) {
+		case 0: case '?':
+		case '\\': case '*':
+		case '[':
 			return len;
+		}
 	}
 }
You are replacing a table-based check with a switch based, which might be 
substantially slower (depends on how often cmp_name() is called).

Maybe there is another way to initialize the table (and make it static to 
begin with)?

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help