osc 104: handle multiple indices the same way we do in OSC 4 - use strtok()

This commit is contained in:
Daniel Eklöf 2020-04-04 14:30:50 +02:00
parent ae1b235eaa
commit 5b67e97fc2
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

19
osc.c
View file

@ -559,18 +559,16 @@ osc_dispatch(struct terminal *term)
LOG_DBG("resetting all colors"); LOG_DBG("resetting all colors");
for (size_t i = 0; i < 256; i++) for (size_t i = 0; i < 256; i++)
term->colors.table[i] = term->colors.default_table[i]; term->colors.table[i] = term->colors.default_table[i];
} else {
unsigned idx = 0;
for (; *string != '\0'; string++) {
char c = *string;
if (c == ';') {
LOG_DBG("resetting color #%u", idx);
term->colors.table[idx] = term->colors.default_table[idx];
idx = 0;
continue;
} }
else {
for (const char *s_idx = strtok(string, ";");
s_idx != NULL;
s_idx = strtok(NULL, ";"))
{
unsigned idx = 0;
for (; *s_idx != '\0'; s_idx++) {
char c = *s_idx;
idx *= 10; idx *= 10;
idx += c - '0'; idx += c - '0';
} }
@ -578,6 +576,7 @@ osc_dispatch(struct terminal *term)
LOG_DBG("resetting color #%u", idx); LOG_DBG("resetting color #%u", idx);
term->colors.table[idx] = term->colors.default_table[idx]; term->colors.table[idx] = term->colors.default_table[idx];
} }
}
render_refresh(term); render_refresh(term);
break; break;