#endif lint
+#include <mit-copyright.h>
#include <sys/types.h>
#include <stdio.h>
#include <signal.h>
(void) raw(); /* We parse & print everything ourselves */
(void) noecho();
cur_ms = make_ms(0); /* So we always have some current */
- /* menu_screen */
- top_menu = m;
+ /* menu_screen */
/* Run the menu */
(void) Do_menu(m, -1, (char **) NULL);
}
{
cur_ms = NULLMS;
COLS = 80;
- top_menu = m;
/* Run the menu */
(void) Do_menu(m, -1, (char **) NULL);
}
continue;
}
/* finally, try to find it using Find_command */
- else if ((command = Find_command(argvals[0])) ==
+ else if ((command = Find_command(m, argvals[0])) ==
(struct menu_line *) 0) {
Put_message("Command not recognized");
continue;
while(1) {
(void) wmove(cur_ms->ms_input, y, x);
(void) touchwin(cur_ms->ms_screen);
-#ifdef notdef
(void) wclrtoeol(cur_ms->ms_input);
-#endif notdef
refresh_ms(cur_ms);
c = getchar() & 0x7f;
switch (c) {
case CTL('C'):
+ *p = '\0';
return 0;
case CTL('Z'):
(void) kill(getpid(), SIGTSTP);
p = buf;
break;
default:
- if (isprint(c) && (p - buf < buflen)) {
+ /* (buflen - 1) leaves room for the \0 */
+ if (isprint(c) && (p - buf < buflen - 1)) {
(void) waddch(cur_ms->ms_input, c);
*p++ = c;
x++;
}
else {
printf("---More (hit return)---");
- (void) getchar() & 0x7f;
+ getchar();
}
Start_paging(); /* Reset lines_left */
}
if (!strcmp(c, m->m_lines[line].ml_command)) {
return (&m->m_lines[line]);
}
- else if (m->m_lines[line].ml_submenu != NULLMENU
- && (maybe =
- find_command_from(c, m->m_lines[line].ml_submenu, d - 1))
- != (struct menu_line *) 0) {
+ }
+ for (line = 0; line < m->m_length; line++) {
+ if (m->m_lines[line].ml_submenu != NULLMENU &&
+ (maybe = find_command_from(c, m->m_lines[line].ml_submenu, d - 1))
+ != (struct menu_line *) 0) {
return (maybe);
}
}
/* And returns a pointer to a menu_line with the specified command name */
/* It returns (struct menu_line *) 0 if none is found */
struct menu_line *
-Find_command(command)
+Find_command(m, command)
+ Menu *m;
char *command;
{
- if (top_menu == NULLMENU) {
+ if (m == NULLMENU) {
return ((struct menu_line *) 0);
}
else {
- return (find_command_from(command, top_menu, MAX_MENU_DEPTH));
+ return (find_command_from(command, m, MAX_MENU_DEPTH));
}
}
if (log_file == (FILE *) NULL) {
pid = getpid();
if (!whoami) {
- char *whoami;
Put_message("I've lost my SENSE of DIRECTION! I have no IDEA who I AM!");
Put_message("My God... You've turned him into a DEMOCRAT!!");
Put_message(" -- Doonesbury");
}
return(DM_NORMAL);
}
-
-/*
- * Local Variables:
- * mode: c
- * c-indent-level: 4
- * c-continued-statement-offset: 4
- * c-brace-offset: -4
- * c-argdecl-indent: 4
- * c-label-offset: -4
- * End:
- */