diff options
author | rsc <devnull@localhost> | 2003-12-04 00:31:14 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2003-12-04 00:31:14 +0000 |
commit | d2a414f28d7e224b1d89e6ac56990895304ff17e (patch) | |
tree | 7f622a363fba63b81ebb30ca7a127fe623d831b0 /src/cmd/9term | |
parent | 5af29cd3a94477ec79f36ac200dc5322b6ea6df6 (diff) | |
download | plan9port-d2a414f28d7e224b1d89e6ac56990895304ff17e.tar.gz plan9port-d2a414f28d7e224b1d89e6ac56990895304ff17e.tar.bz2 plan9port-d2a414f28d7e224b1d89e6ac56990895304ff17e.zip |
fix bug in handling of backspace in output.
Diffstat (limited to 'src/cmd/9term')
-rw-r--r-- | src/cmd/9term/9term.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c index 9ba8d22c..6df15fe2 100644 --- a/src/cmd/9term/9term.c +++ b/src/cmd/9term/9term.c @@ -3,7 +3,7 @@ Rectangle scrollr; /* scroll bar rectangle */ Rectangle lastsr; /* used for scroll bar */ int holdon; /* hold mode */ -int rawon; /* raw mode */ +int rawon(void); /* raw mode */ int scrolling; /* window scrolls */ int clickmsec; /* time of last click */ uint clickq0; /* point of last click */ @@ -162,6 +162,16 @@ hoststart(void) proccreate(hostproc, hostc, 32*1024); } +int crawon = -1; + +int +rawon(void) +{ + if(crawon != -1) + return crawon; + return 0; +} + void loop(void) { @@ -183,7 +193,7 @@ loop(void) a[2].op = CHANRCV; if(!scrolling && t.qh > t.org+t.f->nchars) a[2].op = CHANNOP;; - + crawon = -1; switch(alt(a)) { default: fatal("impossible"); @@ -519,7 +529,7 @@ key(Rune r) return; } - if(rawon && t.q0==t.nr){ + if(rawon() && t.q0==t.nr){ addraw(&r, 1); return; } @@ -600,7 +610,7 @@ consready(void) if(holdon) return 0; - if(rawon) + if(rawon()) return t.nraw != 0; /* look to see if there is a complete line */ @@ -636,7 +646,7 @@ consread(void) c = *p; p += width; n -= width; - if(!rawon && (c == '\n' || c == '\004')) + if(!rawon() && (c == '\n' || c == '\004')) break; } /* take out control-d when not doing a zero length write */ @@ -685,7 +695,6 @@ conswrite(char *p, int n) n2--; q++; } - runewrite(buf2, q-buf2); } @@ -713,7 +722,7 @@ runewrite(Rune *r, int n) if(n == 0) return; - /* get ride of backspaces */ + /* get rid of backspaces */ initial = 0; p = q = r; for(i=0; i<n; i++) { @@ -763,7 +772,6 @@ runewrite(Rune *r, int n) fill(); } updatesel(); - return; } if(t.nr>HiWater && t.qh>=t.org){ @@ -885,7 +893,7 @@ paste(Rune *r, int n, int advance) uint m; uint q0; - if(rawon && t.q0==t.nr){ + if(rawon() && t.q0==t.nr){ addraw(r, n); return; } |