URI: 
       tbetter cr handling - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit dcc0b3ca1dee27e0f8fecec5497577a2c6faddaf
   DIR parent ac39f019494b1ae0c037cf4dd99de70ade7d9c64
  HTML Author: rsc <devnull@localhost>
       Date:   Mon, 18 Jul 2005 00:01:56 +0000
       
       better cr handling
       
       Diffstat:
         M src/cmd/9term/9term.c               |      11 +++++++++--
       
       1 file changed, 9 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -1136,6 +1136,7 @@ conswrite(char *p, int n)
        void
        runewrite(Rune *r, int n)
        {
       +        static int havecr;
                int i;
                uint initial;
                uint q0, q1;
       t@@ -1146,8 +1147,13 @@ runewrite(Rune *r, int n)
                if(n == 0)
                        return;
        
       -        /* get rid of backspaces */
       +        /* process trailing \r from previous write */
                initial = 0;
       +        if(havecr && *r != '\r' && *r != '\n')
       +                initial = bswidth(0x15, t.qh, 0);
       +        havecr = 0;
       +
       +        /* get rid of backspaces */
                p = q = r;
                for(i=0; i<n; i++) {
                        if(*p == '\b') {
       t@@ -1167,7 +1173,8 @@ runewrite(Rune *r, int n)
                                                q--;
                                        if(q==r)
                                                initial = bswidth(0x15, t.qh, 0);
       -                        }
       +                        }else if(i == n-1)
       +                                havecr = 1;
                        } else if(*p)
                                *q++ = *p;
                        p++;