diff options
Diffstat (limited to 'pw.c')
-rw-r--r-- | pw.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -881,10 +881,6 @@ int main(int argc, char **argv) stat |= stat_force; } break; - case '0': - hpos = 0; - stat |= stat_force; - break; case ' ': if ((stat & stat_eof) == 0) stat |= stat_susp; @@ -927,6 +923,13 @@ int main(int argc, char **argv) snapshot = resizebuf(snapshot, maxlines, maxlines + 1); } break; + case '0': + if (cmdcount == UINT_MAX) { + hpos = 0; + stat |= stat_force; + break; + } + // fallthrough default: if (isdigit(ch)) { if (cmdcount == UINT_MAX) @@ -934,6 +937,8 @@ int main(int argc, char **argv) cmdcount = (cmdcount * 10 + (ch - '0')) % 1000; } } + if (kbd_state == kbd_cmd && !isdigit(ch)) + cmdcount = UINT_MAX; break; case kbd_esc: if (ch == '[') { @@ -1057,7 +1062,7 @@ int main(int argc, char **argv) if (len == 1) { kbd_state = kbd_cmd; curcmd = 0; - cmdcount = UINT_MAX; + // cmdcount deliberately not reset to UNIT_MAX } else { cmdbuf[--len] = 0; } |