A little tidying in style_parse.

This commit is contained in:
nicm 2019-03-14 10:19:52 +00:00
parent 13f9a061ac
commit 0425e3178d

31
style.c
View File

@ -39,23 +39,22 @@ static struct style style_default = {
int int
style_parse(struct style *sy, const struct grid_cell *base, const char *in) style_parse(struct style *sy, const struct grid_cell *base, const char *in)
{ {
struct grid_cell *gc = &sy->gc; struct style saved;
struct grid_cell saved; const char delimiters[] = " ,";
const char delimiters[] = " ,"; char tmp[32];
char tmp[32]; int value, fg, bg, attr, flags;
int value, fg, bg, attr, flags; size_t end;
size_t end;
if (*in == '\0') if (*in == '\0')
return (0); return (0);
if (strchr(delimiters, in[strlen(in) - 1]) != NULL) if (strchr(delimiters, in[strlen(in) - 1]) != NULL)
return (-1); return (-1);
memcpy(&saved, base, sizeof saved); style_copy(&saved, sy);
fg = gc->fg; fg = sy->gc.fg;
bg = gc->bg; bg = sy->gc.bg;
attr = gc->attr; attr = sy->gc.attr;
flags = gc->flags; flags = sy->gc.flags;
do { do {
end = strcspn(in, delimiters); end = strcspn(in, delimiters);
@ -99,15 +98,15 @@ style_parse(struct style *sy, const struct grid_cell *base, const char *in)
in += end + strspn(in + end, delimiters); in += end + strspn(in + end, delimiters);
} while (*in != '\0'); } while (*in != '\0');
gc->fg = fg; sy->gc.fg = fg;
gc->bg = bg; sy->gc.bg = bg;
gc->attr = attr; sy->gc.attr = attr;
gc->flags = flags; sy->gc.flags = flags;
return (0); return (0);
error: error:
memcpy(gc, &saved, sizeof *gc); style_copy(sy, &saved);
return (-1); return (-1);
} }