aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2014-09-11 18:23:49 +0200
committerMarc André Tanner <mat@brain-dump.org>2014-09-11 18:23:49 +0200
commit838631bc7d6d242ea168f3ed4206cf3c51b63733 (patch)
tree877b639ac78b0efe83b1bf851564effa8916edd5 /vis.c
parentae450167e7f0574876db44bbe434c4021ee02979 (diff)
downloadvis-838631bc7d6d242ea168f3ed4206cf3c51b63733.tar.gz
vis-838631bc7d6d242ea168f3ed4206cf3c51b63733.tar.xz
Be stricter on what commands to accept at the ':'- prompt
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/vis.c b/vis.c
index 8ca33bd..88cefd2 100644
--- a/vis.c
+++ b/vis.c
@@ -993,6 +993,11 @@ static bool exec_command(char *cmdline) {
init = true;
}
+ /* regex should only apply to command name */
+ char *s = strchr(cmdline, ' ');
+ if (s)
+ *s++ = '\0';
+
Command *cmd = NULL;
for (Command *c = cmds; c->name; c++) {
if (!regexec(&c->regex, cmdline, 0, NULL, 0)) {
@@ -1005,15 +1010,12 @@ static bool exec_command(char *cmdline) {
return false;
const char *argv[32] = { cmdline };
- char *s = cmdline;
for (int i = 1; i < LENGTH(argv); i++) {
- if (s) {
- if ((s = strchr(s, ' ')))
- *s++ = '\0';
- }
while (s && *s && *s == ' ')
s++;
- argv[i] = s ? s : NULL;
+ argv[i] = s;
+ if (s && (s = strchr(s, ' ')))
+ *s++ = '\0';
}
cmd->cmd(argv);