diff options
author | msmith <msmith@FreeBSD.org> | 1997-06-25 08:14:45 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 1997-06-25 08:14:45 +0000 |
commit | 47c54a3022436a9cb8381ff416a167c166f99b00 (patch) | |
tree | 0b3d0ed538afc44e92a53986db3026e3a78e939b /lib | |
parent | f4312c45dc5fb1b4831e63087e8563fa0fa4601f (diff) | |
download | FreeBSD-src-47c54a3022436a9cb8381ff416a167c166f99b00.zip FreeBSD-src-47c54a3022436a9cb8381ff416a167c166f99b00.tar.gz |
Add extra test functionality.
Obtained from: NetBSD
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libedit/TEST/test.c | 70 |
1 files changed, 49 insertions, 21 deletions
diff --git a/lib/libedit/TEST/test.c b/lib/libedit/TEST/test.c index 2379b6f..097055a 100644 --- a/lib/libedit/TEST/test.c +++ b/lib/libedit/TEST/test.c @@ -179,28 +179,56 @@ main(argc, argv) history(hist, continuation ? H_ADD : H_ENTER, buf); continuation = 0; - if (el_parse(el, ac, av) != -1) { - tok_reset(tok); - continue; - } - switch (fork()) { - case 0: - execvp(av[0], av); - perror(av[0]); - _exit(1); - /*NOTREACHED*/ - break; - - case -1: - perror("fork"); - break; - - default: - if (wait(&num) == -1) - perror("wait"); - (void) fprintf(stderr, "Exit %x\n", num); - break; + if (strcmp(av[0], "history") == 0) { + const struct HistEvent *he; + + switch (ac) { + case 1: + for (he = history(hist, H_LAST); he; + he = history(hist, H_PREV)) + (void) fprintf(stdout, "%4d %s", he->num, he->str); + break; + + case 2: + if (strcmp(av[1], "clear") == 0) + history(hist, H_CLEAR); + else + goto badhist; + break; + + case 3: + if (strcmp(av[1], "load") == 0) + history(hist, H_LOAD, av[2]); + else if (strcmp(av[1], "save") == 0) + history(hist, H_SAVE, av[2]); + break; + + badhist: + default: + (void) fprintf(stderr, "Bad history arguments\n"); + break; + } + } + else if (el_parse(el, ac, av) == -1) { + switch (fork()) { + case 0: + execvp(av[0], av); + perror(av[0]); + _exit(1); + /*NOTREACHED*/ + break; + + case -1: + perror("fork"); + break; + + default: + if (wait(&num) == -1) + perror("wait"); + (void) fprintf(stderr, "Exit %x\n", num); + break; + } } tok_reset(tok); } |