vt: discard unhandle OSC escapes, and use nelem instead of sizeof for title buffer
This commit is contained in:
parent
96c1e08f48
commit
b35df8dd22
1 changed files with 38 additions and 13 deletions
|
@ -122,6 +122,7 @@ char gmap[256] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static void setattr(int argc, int *argv);
|
static void setattr(int argc, int *argv);
|
||||||
|
static void osc(void);
|
||||||
|
|
||||||
void
|
void
|
||||||
fixops(int *operand)
|
fixops(int *operand)
|
||||||
|
@ -820,19 +821,9 @@ print("unknown escape2 '%c' (0x%x)\n", dch, dch);
|
||||||
peekc = '\033';
|
peekc = '\033';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* set title */
|
/* OSC escape */
|
||||||
case ']': /* it's actually <esc> ] num ; title <bel> */
|
case ']':
|
||||||
{
|
osc();
|
||||||
int ch, fd;
|
|
||||||
number(buf, nil);
|
|
||||||
i = 0;
|
|
||||||
while((ch = get_next_char()) != '\a')
|
|
||||||
if(i < sizeof buf)
|
|
||||||
buf[i++] = ch;
|
|
||||||
fd = open("/dev/label", OWRITE);
|
|
||||||
write(fd, buf, i);
|
|
||||||
close(fd);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -946,3 +937,37 @@ setattr(int argc, int *argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handle ESC], Operating System Command
|
||||||
|
static void
|
||||||
|
osc(void)
|
||||||
|
{
|
||||||
|
Rune ch, buf[BUFS+1];
|
||||||
|
int fd, osc, got, i;
|
||||||
|
osc = number(&ch, &got);
|
||||||
|
|
||||||
|
if(got) {
|
||||||
|
switch(osc) {
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
// set title
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
while((ch = get_next_char()) != '\a') {
|
||||||
|
if(i < nelem(buf) - 1) {
|
||||||
|
buf[i++] = ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf[i] = 0;
|
||||||
|
if((fd = open("/dev/label", OWRITE)) >= 0) {
|
||||||
|
fprint(fd, "%S", buf);
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprint(2, "unknown osc escape %d\n", osc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue