summaryrefslogtreecommitdiff
path: root/avr
diff options
context:
space:
mode:
authorLeo C2016-05-25 13:59:12 +0200
committerLeo C2016-05-25 13:59:12 +0200
commit01c1907dff86c12d5296cfb201101caa5c88423b (patch)
tree5b80812b7984971fcb919a1b32b8f13e74756385 /avr
parent04b3ea0e67e1f1fe8e9af71f6d532af5471da0e3 (diff)
downloadz180-stamp-01c1907dff86c12d5296cfb201101caa5c88423b.zip
Allow comments on command lines. Comment token is '#' .
Diffstat (limited to 'avr')
-rw-r--r--avr/cli.c23
1 files changed, 13 insertions, 10 deletions
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);