From 01c1907dff86c12d5296cfb201101caa5c88423b Mon Sep 17 00:00:00 2001 From: Leo C Date: Wed, 25 May 2016 13:59:12 +0200 Subject: Allow comments on command lines. Comment token is '#' . --- avr/cli.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'avr') diff --git a/avr/cli.c b/avr/cli.c index 6e27fce..1a26206 100644 --- a/avr/cli.c +++ b/avr/cli.c @@ -258,26 +258,29 @@ static int cli_run_command(const char *cmd, int flag) */ for (inquotes = 0, sep = str; *sep; sep++) { if ((*sep == '\'') && - (sep != str) && /* past string start */ - (*(sep - 1) != '\\')) /* and NOT escaped */ + (sep != str) && /* past string start */ + (*(sep - 1) != '\\')) /* and NOT escaped */ inquotes = !inquotes; if (!inquotes && - (*sep == ';' || *sep == '\n') && /* separator */ - (sep != str) && /* past string start */ - (*(sep - 1) != '\\')) /* and NOT escaped */ + (*sep == ';' || *sep == '\n' /* separator */ + || *sep == '#') && /* or start of comment */ + ((sep == str) || /* string start */ + (*(sep - 1) != '\\'))) /* or NOT escaped */ break; } - /* - * Limit the token to data between separators - */ + /* no more commands after unescaped '#' token */ + if (*sep == '#') + *sep = '\0'; + + /* Limit the token to data between separators */ token = str; if (*sep) { - str = sep + 1; /* start of command for next pass */ + str = sep + 1; /* start of command for next pass */ *sep = '\0'; } else { - str = sep; /* no more commands for next pass */ + str = sep; /* no more commands for next pass */ } debug_parser("token: \"%s\"\n", token); -- cgit v1.2.3