summaryrefslogtreecommitdiffstats
path: root/mmss/config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mmss/config.cpp')
-rw-r--r--mmss/config.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/mmss/config.cpp b/mmss/config.cpp
index 475b1c5..394ca5b 100644
--- a/mmss/config.cpp
+++ b/mmss/config.cpp
@@ -25,10 +25,10 @@
#include "context.hpp"
+#include "lex.hpp"
#include "network.hpp"
#include "node.hpp"
#include "protocol.hpp"
-#include <config.ll.hpp>
#include <config.yy.hpp>
#include <cstdio>
@@ -155,7 +155,6 @@ std::shared_ptr<const config_t> config_t::read(context_t *mmss, const char *file
char *filename2 = NULL;
char *dir = NULL;
FILE *file;
- yyscan_t scanner;
mmss_config_pstate *ps;
int token;
YYSTYPE token_val;
@@ -164,9 +163,6 @@ std::shared_ptr<const config_t> config_t::read(context_t *mmss, const char *file
std::stack<char*> strings;
- mmss_config_yylex_init(&scanner);
- ps = mmss_config_pstate_new();
-
if (!filename) {
file = stdin;
}
@@ -174,12 +170,13 @@ std::shared_ptr<const config_t> config_t::read(context_t *mmss, const char *file
file = fopen(filename, "r");
if (!file) {
mmss->logf(LOG_ERR, "can't open config file `%s': %s", filename, strerror(errno));
- conf.reset();
- goto end_free;
+ return std::shared_ptr<config_t>();
}
}
- mmss_config_yyset_in(file, scanner);
+ lex_t scanner(file);
+ ps = mmss_config_pstate_new();
+
if (filename) {
filename2 = strdup(filename);
@@ -193,7 +190,7 @@ std::shared_ptr<const config_t> config_t::read(context_t *mmss, const char *file
}
do {
- token = mmss_config_yylex(&token_val, &loc, scanner);
+ token = scanner.lex(&token_val, &loc);
if (token < 0) {
mmss->logf(LOG_ERR, "config error: %s at %s:%i:%i", token_val.error, filename, loc.first_line, loc.first_column);
@@ -218,7 +215,6 @@ std::shared_ptr<const config_t> config_t::read(context_t *mmss, const char *file
}
mmss_config_pstate_delete(ps);
- mmss_config_yylex_destroy(scanner);
if(chdir(oldcwd))
mmss->logf(LOG_ERR, "can't chdir to `%s': %s", oldcwd, strerror(errno));