summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ed.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/ed.c b/ed.c
index 3035c60..3b1ad8b 100644
--- a/ed.c
+++ b/ed.c
@@ -22,6 +22,7 @@ void eprint(char *str) {
}
void readcmd() {
+ printf("%d > ", lineno);
char c;
while ((c = getchar()) != '\n' && cmdlen <= MAXCMD) {
command[cmdlen] = c;
@@ -97,12 +98,18 @@ void runcmd(char *outpath) {
int n;
if ((n = readnum()) != -1) {
- if (n > linecount) printf("?\n");
+ if (n > linecount) {
+ printf("?\n");
+ goto repeat;
+ }
lineno = n;
- return;
}
- switch (command[0]) {
+ int i = 0;
+repeat:
+ switch (command[i]) {
+ case 0:
+ return;
case 'd':
deleteline(lineno);
break;
@@ -120,6 +127,8 @@ void runcmd(char *outpath) {
case 'q':
exit(1);
}
+ i++;
+ goto repeat;
}
int main(int argc, char **argv) {