tacme, sam, samterm: remove weird switch usage - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 1c845e0bd5ff897dc5e90f2c24db4ecd81a8f60c
 (DIR) parent 0a513e65607223d11ba94003256b13ef5779e7e8
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Tue,  5 Jan 2021 23:38:09 -0500
       
       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
       tthan it really needs to be.
       
       This commit assumes those are intended as written
       and simply writes them more clearly. I did consider
       tthat 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
       ttwo decades, this commit should be correct too.
       
       Diffstat:
         M src/cmd/acme/edit.c                 |       6 ++++--
         M src/cmd/sam/cmd.c                   |       6 ++++--
         M src/cmd/sam/regexp.c                |       2 +-
         M src/cmd/samterm/flayer.c            |       2 +-
       
       4 files changed, 10 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/acme/edit.c b/src/cmd/acme/edit.c
       t@@ -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 '#':
 (DIR) diff --git a/src/cmd/sam/cmd.c b/src/cmd/sam/cmd.c
       t@@ -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 '#':
 (DIR) diff --git a/src/cmd/sam/regexp.c b/src/cmd/sam/regexp.c
       t@@ -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;
                                }
 (DIR) diff --git a/src/cmd/samterm/flayer.c b/src/cmd/samterm/flayer.c
       t@@ -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);