return token;
}
-
/*
* Format a scanner error message
*/
_("Problem probably begins at line %d.\n"), lc->begin_line_no);
} else {
more[0] = 0;
- }
- e_msg(file, line, M_ERROR_TERM, 0, _("Config error: %s\n"
+ }
+ if (lc->line_no > 0) {
+ e_msg(file, line, M_ERROR_TERM, 0, _("Config error: %s\n"
" : line %d, col %d of file %s\n%s\n%s"),
- buf, lc->line_no, lc->col_no, lc->fname, lc->line, more);
+ buf, lc->line_no, lc->col_no, lc->fname, lc->line, more);
+ } else {
+ e_msg(file, line, M_ERROR_TERM, 0, _("Config error: %s\n"), buf);
+ }
+}
+
+void lex_set_default_error_handler(LEX *lf)
+{
+ lf->scan_error = s_err;
}
Dmsg1(2000, "Close lex file: %s\n", lf->fname);
if (lf == NULL) {
- Emsg0(M_ABORT, 0, "Close of NULL file\n");
+ Emsg0(M_ABORT, 0, _("Close of NULL file\n"));
}
of = lf->next;
fclose(lf->fd);
if ((fd = fopen(fname, "r")) == NULL) {
return NULL;
}
- Dmsg1(2000, "Open config file: %s\n", fname);
+ Dmsg1(400, "Open config file: %s\n", fname);
nf = (LEX *)malloc(sizeof(LEX));
if (lf) {
memcpy(nf, lf, sizeof(LEX));
lf = nf; /* start new packet */
memset(lf, 0, sizeof(LEX));
}
- lf->fd = fd;
- lf->fname = fname;
- lf->state = lex_none;
- lf->ch = L_EOL;
if (scan_error) {
lf->scan_error = scan_error;
} else {
- lf->scan_error = s_err;
+ lex_set_default_error_handler(lf);
}
+ lf->fd = fd;
+ lf->fname = fname;
+ lf->state = lex_none;
+ lf->ch = L_EOL;
Dmsg1(2000, "Return lex=%x\n", lf);
return lf;
}
int lex_get_char(LEX *lf)
{
if (lf->ch == L_EOF) {
- Emsg0(M_ABORT, 0, "get_char: called after EOF\n");
+ Emsg0(M_ABORT, 0, _("get_char: called after EOF\n"));
}
if (lf->ch == L_EOL) {
if (bfgets(lf->line, MAXSTRING, lf->fd) == NULL) {
}
lf->line_no++;
lf->col_no = 0;
+ Dmsg2(1000, "fget line=%d %s", lf->line_no, lf->line);
}
lf->ch = (uint8_t)lf->line[lf->col_no];
if (lf->ch == 0) {
static const char *lex_state_to_str(int state)
{
switch (state) {
- case lex_none: return "none";
- case lex_comment: return "comment";
- case lex_number: return "number";
- case lex_ip_addr: return "ip_addr";
- case lex_identifier: return "identifier";
- case lex_string: return "string";
- case lex_quoted_string: return "quoted_string";
+ case lex_none: return _("none");
+ case lex_comment: return _("comment");
+ case lex_number: return _("number");
+ case lex_ip_addr: return _("ip_addr");
+ case lex_identifier: return _("identifier");
+ case lex_string: return _("string");
+ case lex_quoted_string: return _("quoted_string");
default: return "??????";
}
}