summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/vt/main.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/sys/src/cmd/vt/main.c b/sys/src/cmd/vt/main.c
index deef5bc83..8c8b36823 100644
--- a/sys/src/cmd/vt/main.c
+++ b/sys/src/cmd/vt/main.c
@@ -915,16 +915,25 @@ resized(void)
Rune *
selrange(Rune *r, int x0, int y0, int x1, int y1)
{
- Rune *p, *sr, *er;
-
- p = r;
- sr = onscreenr(x0, y0);
- er = onscreenr(x1, y1);
- for(; sr != er; sr++)
- if(*sr)
- *p++ = *sr;
- *p = 0;
- return p;
+ Rune *s, *e;
+ int z, p;
+
+ s = onscreenr(x0, y0);
+ e = onscreenr(x1, y1);
+ for(z = p = 0; s < e; s++){
+ if(*s){
+ if(*s == '\n')
+ z = p = 0;
+ else if(p++ == 0){
+ while(z-- > 0) *r++ = ' ';
+ }
+ *r++ = *s;
+ } else {
+ z++;
+ }
+ }
+ *r = 0;
+ return r;
}
Rune*