- *cp = '\0';
- if (ansbuf[0] == '?' || cp == ansbuf) {
- printf ("Options are:\n");
- print_sw (ALL, ansp, "");
- continue;
- }
- cpp = brkstring (ansbuf, " ", NULL);
- switch (smatch (*cpp, ansp)) {
- case AMBIGSW:
- ambigsw (*cpp, ansp);
- continue;
- case UNKWNSW:
- printf (" -%s unknown. Hit <CR> for help.\n", *cpp);
- continue;
- default:
- SIGNAL (SIGINT, istat);
- return cpp;
+
+ for (;;) {
+ printf("%s", prompt);
+ fflush(stdout);
+ cp = ansbuf;
+ while ((i = getchar()) != '\n') {
+ if (i == EOF)
+ longjmp(sigenv, 1);
+ if (cp < &ansbuf[sizeof ansbuf - 1])
+ *cp++ = i;
+ }
+ *cp = '\0';
+ if (ansbuf[0] == '?' || cp == ansbuf) {
+ printf("Options are:\n");
+ print_sw(ALL, ansp, "", stdout);
+ continue;
+ }
+ cpp = brkstring(ansbuf, " ", NULL);
+ switch (smatch(*cpp, ansp)) {
+ case AMBIGSW:
+ ambigsw(*cpp, ansp);
+ continue;
+ case UNKWNSW:
+ printf(" -%s unknown. Hit <CR> for help.\n", *cpp);
+ continue;
+ default:
+ SIGNAL(SIGINT, istat);
+ return cpp;
+ }