*/
/*
- Copyright (C) 2000-2004 Kern Sibbald
+ Copyright (C) 2000-2005 Kern Sibbald
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
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;
}
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;
}
}
lf->line_no++;
lf->col_no = 0;
+ Dmsg2(400, "fget line=%d %s", lf->line_no, lf->line);
}
- lf->ch = lf->line[lf->col_no];
+ lf->ch = (uint8_t)lf->line[lf->col_no];
if (lf->ch == 0) {
lf->ch = L_EOL;
} else {