← Commit list

499597d6e

Denys Vlasenko
Denys Vlasenko
2012-01-11
FAILED Duration: 222s

Subject

mdev: do not treat non-leading '#' chars as start of comment. Closes 4676

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

include/libbb.h+3 -2
@@ -1195,13 +1195,14 @@ enum {
PARSE_MIN_DIE = 0x00100000, // die if < min tokens found
// keep a copy of current line
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:
// * remove leading and trailing delimiters and collapse
// multiple delimiters into one
// * warn and continue if less than mintokens delimiters found
// * 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 {
FILE *fp;
libbb/parse_config.c+1 -1
@@ -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);
} else {
/* 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 */
if (flags & PARSE_TRIM) {
util-linux/mdev.c+2 -1
@@ -206,7 +206,8 @@ static void parse_next_rule(void)
char *tokens[4];
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;
/* Fields: [-]regex uid:gid mode [alias] [cmd] */