mdev: do not treat non-leading '#' chars as start of comment. Closes 4676
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
982fdaf4b2
commit
499597d6ef
@ -1195,13 +1195,14 @@ enum {
|
|||||||
PARSE_MIN_DIE = 0x00100000, // die if < min tokens found
|
PARSE_MIN_DIE = 0x00100000, // die if < min tokens found
|
||||||
// keep a copy of current line
|
// keep a copy of current line
|
||||||
PARSE_KEEP_COPY = 0x00200000 * ENABLE_FEATURE_CROND_D,
|
PARSE_KEEP_COPY = 0x00200000 * ENABLE_FEATURE_CROND_D,
|
||||||
// PARSE_ESCAPE = 0x00400000, // process escape sequences in tokens
|
PARSE_EOL_COMMENTS = 0x00400000, // comments are recognized even if they aren't the first char
|
||||||
// NORMAL is:
|
// NORMAL is:
|
||||||
// * remove leading and trailing delimiters and collapse
|
// * remove leading and trailing delimiters and collapse
|
||||||
// multiple delimiters into one
|
// multiple delimiters into one
|
||||||
// * warn and continue if less than mintokens delimiters found
|
// * warn and continue if less than mintokens delimiters found
|
||||||
// * grab everything into last token
|
// * grab everything into last token
|
||||||
PARSE_NORMAL = PARSE_COLLAPSE | PARSE_TRIM | PARSE_GREEDY,
|
// * comments are recognized even if they aren't the first char
|
||||||
|
PARSE_NORMAL = PARSE_COLLAPSE | PARSE_TRIM | PARSE_GREEDY | PARSE_EOL_COMMENTS,
|
||||||
};
|
};
|
||||||
typedef struct parser_t {
|
typedef struct parser_t {
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
@ -204,7 +204,7 @@ int FAST_FUNC config_read(parser_t *parser, char **tokens, unsigned flags, const
|
|||||||
line += strcspn(line, delims[0] ? delims : delims + 1);
|
line += strcspn(line, delims[0] ? delims : delims + 1);
|
||||||
} else {
|
} else {
|
||||||
/* Combining, find comment char if any */
|
/* Combining, find comment char if any */
|
||||||
line = strchrnul(line, delims[0]);
|
line = strchrnul(line, PARSE_EOL_COMMENTS ? delims[0] : '\0');
|
||||||
|
|
||||||
/* Trim any extra delimiters from the end */
|
/* Trim any extra delimiters from the end */
|
||||||
if (flags & PARSE_TRIM) {
|
if (flags & PARSE_TRIM) {
|
||||||
|
@ -206,7 +206,8 @@ static void parse_next_rule(void)
|
|||||||
char *tokens[4];
|
char *tokens[4];
|
||||||
char *val;
|
char *val;
|
||||||
|
|
||||||
if (!config_read(G.parser, tokens, 4, 3, "# \t", PARSE_NORMAL))
|
/* No PARSE_EOL_COMMENTS, because command may contain '#' chars */
|
||||||
|
if (!config_read(G.parser, tokens, 4, 3, "# \t", PARSE_NORMAL & ~PARSE_EOL_COMMENTS))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Fields: [-]regex uid:gid mode [alias] [cmd] */
|
/* Fields: [-]regex uid:gid mode [alias] [cmd] */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user