From 5ed71b4b6e7a5018b067aed66268c5cf0fb0d3e8 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Mon, 22 Aug 2011 14:28:20 +1000 Subject: [PATCH] Stop using case ranges. case a...b: is gcc specific. So don't use it - do an explicit range test instead. Reported-by: Oliver Kiddle Signed-off-by: NeilBrown --- vpatch.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/vpatch.c b/vpatch.c index 0bf4884..fb7cdaa 100644 --- a/vpatch.c +++ b/vpatch.c @@ -1037,7 +1037,7 @@ static void merge_window(struct plist *p, FILE *f, int reverse) int rows = 0, cols = 0; int splitrow = -1; int lastrow = 0; - int i, c; + int i, c, cswitch; int mode = ORIG|RESULT; char *modename = "merge"; char **modehelp = merge_help; @@ -1296,7 +1296,16 @@ static void merge_window(struct plist *p, FILE *f, int reverse) tmeta = meta; meta = 0; tnum = num; num = -1; tvpos = vpos; vpos = pos; - switch(c | tmeta) { + cswitch = c | tmeta; + /* Handle some ranges */ + /* case '0' ... '9': */ + if (cswitch >= '0' && cswitch <= '9') + cswitch = '0'; + /* case SEARCH(' ') ... SEARCH('~'): */ + if (cswitch >= SEARCH(' ') && cswitch <= SEARCH('~')) + cswitch = SEARCH(' '); + + switch(cswitch) { case 27: /* escape */ case META(27): meta = META(0); @@ -1322,7 +1331,7 @@ static void merge_window(struct plist *p, FILE *f, int reverse) if (row >= lastrow) row = lastrow; break; - case '0' ... '9': + case '0': /* actually '0'...'9' */ if (tnum < 0) tnum = 0; num = tnum*10 + (c-'0'); break; @@ -1386,7 +1395,7 @@ static void merge_window(struct plist *p, FILE *f, int reverse) refresh = 1; } break; - case SEARCH(' ') ... SEARCH('~'): + case SEARCH(' '): /* actually ' '...'~' */ case SEARCH('\t'): meta = SEARCH(0); if (searchlen < sizeof(search)-1) -- 2.39.5