mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
simplify parse_config using assignment; inspired by a very old diff from
Tiago Cunha.
This commit is contained in:
parent
6f10349843
commit
469db5f371
59
parse.y
59
parse.y
@ -547,76 +547,21 @@ parse_config(const char *filename, struct conf *xconf)
|
||||
{
|
||||
int errors = 0;
|
||||
|
||||
conf = xcalloc(1, sizeof(*conf));
|
||||
conf = xconf;
|
||||
|
||||
if ((file = pushfile(filename)) == NULL) {
|
||||
free(conf);
|
||||
return (-1);
|
||||
}
|
||||
topfile = file;
|
||||
|
||||
conf_init(conf);
|
||||
|
||||
yyparse();
|
||||
errors = file->errors;
|
||||
popfile();
|
||||
|
||||
if (errors) {
|
||||
conf_clear(conf);
|
||||
conf_init(conf);
|
||||
}
|
||||
else {
|
||||
struct autogroupwin *ag;
|
||||
struct keybinding *kb;
|
||||
struct winmatch *wm;
|
||||
struct cmd *cmd;
|
||||
struct mousebinding *mb;
|
||||
int i;
|
||||
|
||||
conf_clear(xconf);
|
||||
|
||||
xconf->flags = conf->flags;
|
||||
xconf->bwidth = conf->bwidth;
|
||||
xconf->mamount = conf->mamount;
|
||||
xconf->snapdist = conf->snapdist;
|
||||
xconf->gap = conf->gap;
|
||||
|
||||
while ((cmd = TAILQ_FIRST(&conf->cmdq)) != NULL) {
|
||||
TAILQ_REMOVE(&conf->cmdq, cmd, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->cmdq, cmd, entry);
|
||||
}
|
||||
|
||||
while ((kb = TAILQ_FIRST(&conf->keybindingq)) != NULL) {
|
||||
TAILQ_REMOVE(&conf->keybindingq, kb, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->keybindingq, kb, entry);
|
||||
}
|
||||
|
||||
while ((ag = TAILQ_FIRST(&conf->autogroupq)) != NULL) {
|
||||
TAILQ_REMOVE(&conf->autogroupq, ag, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->autogroupq, ag, entry);
|
||||
}
|
||||
|
||||
while ((wm = TAILQ_FIRST(&conf->ignoreq)) != NULL) {
|
||||
TAILQ_REMOVE(&conf->ignoreq, wm, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->ignoreq, wm, entry);
|
||||
}
|
||||
|
||||
while ((mb = TAILQ_FIRST(&conf->mousebindingq)) != NULL) {
|
||||
TAILQ_REMOVE(&conf->mousebindingq, mb, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->mousebindingq, mb, entry);
|
||||
}
|
||||
|
||||
(void)strlcpy(xconf->termpath, conf->termpath,
|
||||
sizeof(xconf->termpath));
|
||||
(void)strlcpy(xconf->lockpath, conf->lockpath,
|
||||
sizeof(xconf->lockpath));
|
||||
|
||||
for (i = 0; i < CWM_COLOR_NITEMS; i++)
|
||||
xconf->color[i] = conf->color[i];
|
||||
|
||||
xconf->font = conf->font;
|
||||
}
|
||||
|
||||
free(conf);
|
||||
|
||||
return (errors ? -1 : 0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user