/*
- * lex.h
+ * lex.h
*
* Lexical scanning of configuration files, used by parsers.
*
- * Kern Sibbald, MM
+ * Kern Sibbald, MM
*
* Version $Id$
*
*/
/*
- Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+ 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
#define L_EOL (-2)
/* Internal tokens */
-#define T_NONE 100
+#define T_NONE 100
/* Tokens returned by get_token() */
#define T_EOF 101
#define T_EQUALS 110
#define T_COMMA 111
#define T_EOL 112
-#define T_SEMI 113
#define T_ERROR 200
/*
* The following will be returned only if
- * the appropriate expect flag has been set
+ * the appropriate expect flag has been set
*/
+#define T_SKIP_EOL 113 /* scan through EOLs */
#define T_PINT32 114 /* positive integer */
#define T_PINT32_RANGE 115 /* positive integer range */
#define T_INT32 116 /* integer */
/* Lex scan options */
#define LOPT_NO_IDENT 0x1 /* No Identifiers -- use string */
+#define LOPT_STRING 0x2 /* Force scan for string */
/* Lexical context */
typedef struct s_lex_context {
int str_len; /* length of string */
int line_no; /* file line number */
int col_no; /* char position on line */
+ int begin_line_no; /* line no of beginning of string */
enum lex_state state; /* lex_state variable */
int ch; /* last char/L_VAL returned by get_char */
int token;
uint32_t pint32_val2;
int32_t int32_val;
int64_t int64_val;
- void (*scan_error)(char *file, int line, struct s_lex_context *lc, char *msg, ...);
+ void (*scan_error)(const char *file, int line, struct s_lex_context *lc, const char *msg, ...);
void *caller_ctx; /* caller private data */
} LEX;
-typedef void (LEX_ERROR_HANDLER)(char *file, int line, LEX *lc, char *msg, ...);
+typedef void (LEX_ERROR_HANDLER)(const char *file, int line, LEX *lc, const char *msg, ...);
/* Lexical scanning errors in parsing conf files */
#define scan_err0(lc, msg) lc->scan_error(__FILE__, __LINE__, lc, msg)
#define scan_err6(lc, msg, a1, a2, a3, a4, a5, a6) lc->scan_error(__FILE__, __LINE__, lc, msg, a1, a2, a3, a4, a5, a6)
void scan_to_eol(LEX *lc);
+int scan_to_next_not_eol(LEX * lc);
#endif /* _LEX_H */