diff options
author | Leo C | 2016-05-25 13:59:12 +0200 |
---|---|---|
committer | Leo C | 2016-05-25 13:59:12 +0200 |
commit | 01c1907dff86c12d5296cfb201101caa5c88423b (patch) | |
tree | 5b80812b7984971fcb919a1b32b8f13e74756385 /avr | |
parent | 04b3ea0e67e1f1fe8e9af71f6d532af5471da0e3 (diff) | |
download | z180-stamp-01c1907dff86c12d5296cfb201101caa5c88423b.zip |
Allow comments on command lines. Comment token is '#' .
Diffstat (limited to 'avr')
-rw-r--r-- | avr/cli.c | 23 |
1 files changed, 13 insertions, 10 deletions
@@ -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); |