mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
* action() returns void - this gets rid of checks in vt_from_slave() * split up ACTION_PRINT into ACTION_PRINT (ASCII) and ACTION_UTF8_PRINT ACTION_PRINT is on the hot path, and we want it streamlined. * Remove run-time checkout for unimplemented state transitions, as we shouldn't have any of those left. * Don't re-load current VT state on each iteration in vt_from_slave()
53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
#include "osc.h"
|
|
#include <ctype.h>
|
|
#include "terminal.h"
|
|
|
|
#define LOG_MODULE "osc"
|
|
#define LOG_ENABLE_DBG 0
|
|
#include "log.h"
|
|
#include "render.h"
|
|
|
|
void
|
|
osc_dispatch(struct terminal *term)
|
|
{
|
|
int param = 0;
|
|
int data_ofs = 0;
|
|
|
|
for (size_t i = 0; i < term->vt.osc.idx; i++) {
|
|
int c = term->vt.osc.data[i];
|
|
|
|
if (c == ';') {
|
|
data_ofs = i + 1;
|
|
break;
|
|
}
|
|
|
|
if (!isdigit(c)) {
|
|
LOG_ERR("OSC: invalid parameter: %.*s",
|
|
(int)term->vt.osc.idx, term->vt.osc.data);
|
|
abort();
|
|
}
|
|
|
|
param *= 10;
|
|
param += c - '0';
|
|
}
|
|
LOG_DBG("OCS: %.*s (param = %d)",
|
|
(int)term->vt.osc.idx, term->vt.osc.data, param);
|
|
|
|
const char *string = (const char *)&term->vt.osc.data[data_ofs];
|
|
|
|
switch (param) {
|
|
case 0: render_set_title(term, string); break; /* icon + title */
|
|
case 1: break; /* icon */
|
|
case 2: render_set_title(term, string); break; /* title */
|
|
|
|
case 104: /* Reset Color Number 'c' */
|
|
case 105: /* Reset Special Color Number 'c' */
|
|
break;
|
|
|
|
default:
|
|
LOG_ERR("unimplemented: OSC: %.*s",
|
|
(int)term->vt.osc.idx, term->vt.osc.data);
|
|
abort();
|
|
break;
|
|
}
|
|
}
|