use the new parser by default

you can force the old parser with the command line flag
--force-old-config-parser-v4.4-only (which will be present in v4.4 only,
as the name suggests)
This commit is contained in:
Michael Stapelberg
2012-10-08 13:26:42 +02:00
parent 2738f13798
commit 20c0fa7cfb
5 changed files with 28 additions and 7 deletions

View File

@ -13,6 +13,8 @@
#include "all.h"
bool force_old_config_parser = false;
static pid_t configerror_pid = -1;
static Match current_match;
@ -625,15 +627,20 @@ void parse_file(const char *f) {
}
}
/* now lex/parse it */
yy_scan_string(new);
context = scalloc(sizeof(struct context));
context->filename = f;
if (yyparse() != 0) {
fprintf(stderr, "Could not parse configfile\n");
exit(1);
if (force_old_config_parser) {
/* now lex/parse it */
yy_scan_string(new);
if (yyparse() != 0) {
fprintf(stderr, "Could not parse configfile\n");
exit(1);
}
} else {
struct ConfigResult *config_output = parse_config(new, context);
yajl_gen_free(config_output->json_gen);
}
check_for_duplicate_bindings(context);
@ -669,7 +676,8 @@ void parse_file(const char *f) {
start_configerror_nagbar(f);
}
yylex_destroy();
if (force_old_config_parser)
yylex_destroy();
FREE(context->line_copy);
free(context);
FREE(font_pattern);
@ -1485,6 +1493,7 @@ new_float:
border_style:
TOK_NORMAL optional_border_width
{
/* FIXME: the whole border_style thing actually screws up when new_float is used because it overwrites earlier values :-/ */
config.default_border_width = $2;
$$ = BS_NORMAL;
}

View File

@ -269,6 +269,7 @@ int main(int argc, char *argv[]) {
{"get_socketpath", no_argument, 0, 0},
{"fake_outputs", required_argument, 0, 0},
{"fake-outputs", required_argument, 0, 0},
{"force-old-config-parser-v4.4-only", no_argument, 0, 0},
{0, 0, 0, 0}
};
int option_index = 0, opt;
@ -372,6 +373,10 @@ int main(int argc, char *argv[]) {
LOG("Initializing fake outputs: %s\n", optarg);
fake_outputs = sstrdup(optarg);
break;
} else if (strcmp(long_options[option_index].name, "force-old-config-parser-v4.4-only") == 0) {
LOG("FORCING OLD CONFIG PARSER!\n");
force_old_config_parser = true;
break;
}
/* fall-through */
default: