3 #define MAX_ARGC 16 /* Maximum argument count per line */
4 #define MAX_ARGLEN 128 /* Maximum length of an argument */
5 #define MAX_LINES 16 /* Maximum number of lines per menu */
7 #define MAX_TITLE 1 /* Maximum length of title, in lines */
9 /* Maximum depth to which submenus will be searched when looking for commands */
10 #define MAX_MENU_DEPTH 8
12 typedef struct menu_arg {
13 char *ma_doc; /* Short doc for completion */
14 char *ma_prompt; /* For prompting in menu */
17 typedef struct menu_line {
18 int (*ml_function)(int argc, char **argv);
19 struct menu *ml_submenu;
21 struct menu_arg ml_args[MAX_ARGC];
24 #define ml_doc ml_args[0].ma_prompt
25 #define ml_command ml_args[0].ma_doc
28 int (*m_entry)(struct menu *m, int argc, char **argv);
29 int (*m_exit)(struct menu *m);
32 struct menu_line m_lines[MAX_LINES];
35 /* Return codes for Do_menu */
36 /* These should also be used by functions called from Do_menu */
37 #define DM_NORMAL 0 /* Normal return */
38 #define DM_QUIT 1 /* Quit; ^C or q command received */
40 /* Macros for initializing menu lines */
43 #define SUBMENU(cmd, doc, menu) { NULLFUNC, menu, 1, { { cmd, doc } } }
44 #define SIMPLEFUNC(cmd, doc, func) { func, NULLMENU, 1, { { cmd, doc } } }
46 /* Unused words found on parsed command line */
47 extern int parsed_argc;
48 extern char **parsed_argv;
51 void Put_message(char *msg);
52 void Start_menu(Menu *m);
53 void Start_no_menu(Menu *m);
54 int Do_menu(Menu *m, int margc, char *margv[]);
55 void Cleanup_menu(void);
56 void Start_paging(void);
57 void Stop_paging(void);
58 int Prompt_input(char *prompt, char *buf, int buflen);
59 void refresh_screen(void);