twin fixes - 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 6a6c2663bfd42eab68cc53c42a499798ae6332a3
 (DIR) parent 7d9c0f0f0e041051d3105404ada074cf983cd6ad
 (HTM) Author: Fazlul Shahriar <fshahriar@gmail.com>
       Date:   Tue,  5 Jan 2010 14:31:27 -0800
       
       win fixes
       
       - don't exit from a "child" note unless rc exited (code copied from 9term.c)
       - ignore writes to the tag; specifically " Send Noscroll" at startup.
       
       R=rsc
       CC=codebot
       http://codereview.appspot.com/181115
       
       Diffstat:
         M src/cmd/9term/win.c                 |      32 +++++++++++++++++++++++++------
       
       1 file changed, 26 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9term/win.c b/src/cmd/9term/win.c
       t@@ -108,8 +108,16 @@ hangupnote(void *a, char *msg)
                        noted(NDFLT);
                }
                if(strstr(msg, "child")){
       -                /* bug: do better */
       -                threadexitsall(0);
       +                char buf[128];
       +                int n;
       +
       +                n = awaitnohang(buf, sizeof buf-1);
       +                if(n > 0){
       +                        buf[n] = 0;
       +                        if(atoi(buf) == pid)
       +                                threadexitsall(0);
       +                }
       +                noted(NCONT);
                }
                noted(NDFLT);
        }
       t@@ -357,10 +365,22 @@ stdinproc(void *v)
                                print("unknown message %c%c\n", e.c1, e.c2);
                                break;
        
       -                case 'E':        /* write to body; can't affect us */
       -                        if(debug)
       -                                fprint(2, "shift typing %d... ", e.q1-e.q0);
       -                        q.p += e.q1-e.q0;
       +                case 'E':        /* write to body or tag; can't affect us */
       +                        switch(e.c2){
       +                        case 'I':
       +                        case 'D':                /* body */
       +                                if(debug)
       +                                        fprint(2, "shift typing %d... ", e.q1-e.q0);
       +                                q.p += e.q1-e.q0;
       +                                break;
       +                        
       +                        case 'i':
       +                        case 'd':                /* tag */
       +                                break;
       +                        
       +                        default:
       +                                goto Unknown;
       +                        }
                                break;
        
                        case 'F':        /* generated by our actions; ignore */