diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-04-27 00:28:12 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-04-27 00:28:12 -0700 |
commit | f133a1da76f32c6b54a71e2170b7d1ab66910ac4 (patch) | |
tree | c5024afc6ca1b0409745162a2b0b5780ccbfb3cb /pw.c | |
parent | 66c11a4add855941754df81e9ebd43ddca8e134c (diff) | |
download | pw-f133a1da76f32c6b54a71e2170b7d1ab66910ac4.tar.gz pw-f133a1da76f32c6b54a71e2170b7d1ab66910ac4.tar.bz2 pw-f133a1da76f32c6b54a71e2170b7d1ab66910ac4.zip |
Colon is part of command string.
Diffstat (limited to 'pw.c')
-rw-r--r-- | pw.c | 21 |
1 files changed, 11 insertions, 10 deletions
@@ -177,7 +177,7 @@ static void clear_cur_line() static void drawstatus(unsigned stat, char *cmd) { if (cmd) { - printf(":%s", cmd); + printf("%s", cmd); } else if ((stat & (stat_eof | stat_susp))) { if ((stat & stat_eof)) printf("EOF "); @@ -207,14 +207,14 @@ static void redraw(char **circbuf, int nlines, int hpos, static void execute(char *cmd) { - char *arg = cmd + 1 + strspn(cmd + 1, " \t"); + char *arg = cmd + 2 + strspn(cmd + 2, " \t"); clear_cur_line(); - switch (cmd[0]) { + switch (cmd[1]) { case 'w': case 'a': { - FILE *f = fopen(arg, cmd[0] == 'w' ? "w" : "a"); + FILE *f = fopen(arg, cmd[1] == 'w' ? "w" : "a"); int ok = 1; if (!f) { @@ -474,7 +474,8 @@ int main(int argc, char **argv) break; case ':': kbd_state = kbd_colon; - cmdbuf[0] = 0; + cmdbuf[0] = ch; + cmdbuf[1] = 0; colcmd = cmdbuf; break; } @@ -503,7 +504,7 @@ int main(int argc, char **argv) case 27: case 13: case 3: kbd_state = kbd_cmd; stat |= stat_dirty; - if (ch == 13 && cmdbuf[0]) { + if (ch == 13 && cmdbuf[1]) { execute(cmdbuf); stat &= ~stat_dirty; kbd_state = kbd_result; @@ -514,7 +515,7 @@ int main(int argc, char **argv) case 8: case 127: { size_t len = strlen(cmdbuf); - if (len == 0) { + if (len == 1) { kbd_state = kbd_cmd; colcmd = 0; stat |= stat_dirty; @@ -524,14 +525,14 @@ int main(int argc, char **argv) } break; case 21: - cmdbuf[0] = 0; + cmdbuf[1] = 0; break; case 23: { size_t len = strlen(cmdbuf); - while (len > 0 && isspace((unsigned char) cmdbuf[len - 1])) + while (len > 1 && isspace((unsigned char) cmdbuf[len - 1])) len--; - while (len > 0 && !isspace((unsigned char) cmdbuf[len - 1])) + while (len > 1 && !isspace((unsigned char) cmdbuf[len - 1])) len--; cmdbuf[len] = 0; } |