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

27
osc.c
View file

@ -559,24 +559,23 @@ 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++) { else {
char c = *string; for (const char *s_idx = strtok(string, ";");
if (c == ';') { s_idx != NULL;
LOG_DBG("resetting color #%u", idx); s_idx = strtok(NULL, ";"))
term->colors.table[idx] = term->colors.default_table[idx]; {
idx = 0; unsigned idx = 0;
continue; for (; *s_idx != '\0'; s_idx++) {
char c = *s_idx;
idx *= 10;
idx += c - '0';
} }
idx *= 10; LOG_DBG("resetting color #%u", idx);
idx += c - '0'; term->colors.table[idx] = term->colors.default_table[idx];
} }
LOG_DBG("resetting color #%u", idx);
term->colors.table[idx] = term->colors.default_table[idx];
} }
render_refresh(term); render_refresh(term);