aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@swtch.com>2021-01-05 23:38:09 -0500
committerRuss Cox <rsc@swtch.com>2021-01-05 23:38:09 -0500
commit1c845e0bd5ff897dc5e90f2c24db4ecd81a8f60c (patch)
tree5b4c0a3ba8784251a08dc46ed3a8f23e6b48cc60
parent0a513e65607223d11ba94003256b13ef5779e7e8 (diff)
downloadplan9port-1c845e0bd5ff897dc5e90f2c24db4ecd81a8f60c.tar.gz
plan9port-1c845e0bd5ff897dc5e90f2c24db4ecd81a8f60c.tar.bz2
plan9port-1c845e0bd5ff897dc5e90f2c24db4ecd81a8f60c.zip
acme, sam, samterm: remove weird switch usage
For whatever reason all three of these programs contain switches like: switch(x) { case 1: if(cond) case 2: f(); } Like Duff's device, this is legal C but more obscure than it really needs to be. This commit assumes those are intended as written and simply writes them more clearly. I did consider that maybe they are mistakes, but in the case of sam/regexp.c, my rewrite in this commit matches the acme/regx.c that has been in plan9port since I added acme in 2003. (I didn't bother to dig up the old Plan 9 releases.) Assuming acme/regx.c has been correct for the past two decades, this commit should be correct too.
-rw-r--r--src/cmd/acme/edit.c6
-rw-r--r--src/cmd/sam/cmd.c6
-rw-r--r--src/cmd/sam/regexp.c2
-rw-r--r--src/cmd/samterm/flayer.c2
4 files changed, 10 insertions, 6 deletions
diff --git a/src/cmd/acme/edit.c b/src/cmd/acme/edit.c
index 81f80300..82a19b0d 100644
--- a/src/cmd/acme/edit.c
+++ b/src/cmd/acme/edit.c
@@ -635,9 +635,11 @@ simpleaddr(void)
case '.':
case '$':
case '\'':
- if(addr.type!='"')
+ if(addr.type=='"')
+ break;
+ /* fall through */
case '"':
- editerror("bad address syntax");
+ editerror("bad address syntax");
break;
case 'l':
case '#':
diff --git a/src/cmd/sam/cmd.c b/src/cmd/sam/cmd.c
index 7176a827..13bd17e0 100644
--- a/src/cmd/sam/cmd.c
+++ b/src/cmd/sam/cmd.c
@@ -559,9 +559,11 @@ simpleaddr(void)
case '.':
case '$':
case '\'':
- if(addr.type!='"')
+ if(addr.type=='"')
+ break;
+ /* fall through */
case '"':
- error(Eaddress);
+ error(Eaddress);
break;
case 'l':
case '#':
diff --git a/src/cmd/sam/regexp.c b/src/cmd/sam/regexp.c
index 2e369fe1..57c639d9 100644
--- a/src/cmd/sam/regexp.c
+++ b/src/cmd/sam/regexp.c
@@ -700,11 +700,11 @@ bexecute(File *f, Posn startp)
break;
case 1: /* expired; wrap to end */
if(sel.p[0].p1>=0)
- case 3:
goto Return;
list[0][0].inst = list[1][0].inst = 0;
p = f->b.nc;
goto doloop;
+ case 3:
default:
goto Return;
}
diff --git a/src/cmd/samterm/flayer.c b/src/cmd/samterm/flayer.c
index e9fde31c..a8e70d0c 100644
--- a/src/cmd/samterm/flayer.c
+++ b/src/cmd/samterm/flayer.c
@@ -169,8 +169,8 @@ newvisibilities(int redraw)
break;
case V(Some, Some):
- if(l->f.b==0 && redraw)
case V(None, Some):
+ if(ov == None || (l->f.b==0 && redraw))
flprepare(l);
if(l->f.b && redraw){
flrefresh(l, l->entire, 0);