#include <strings.h>
#include <curses.h>
#include <sys/types.h>
+#include <varargs.h>
+#include <com_err.h>
#include <ctype.h>
#include "mit-copyright.h"
static int status;
static void scream();
extern char *strsave();
+int menu_err_hook();
typedef struct list_info {
char *acl;
char *argv[];
{
-
+ int (*old_hook)();
int use_menu = 1;
char buf[BUFSIZ];
}
raw();
noecho();
+ old_hook = set_com_err_hook(menu_err_hook);
position[0] = oldpos[0] = 1;
level = 0;
pack_main_menu();
get_main_input();
cls();
endwin();
+ set_com_err_hook(old_hook);
}
exit(0);
currow++;
}
else {
- show_text(currow, STARTCOL, "madm: No such list found.");
+ show_text(currow, STARTCOL, "mailmaint: No such list found.");
currow++;
}
show_text(currow, STARTCOL, "Press any Key to continue...");
if (!found_some) {
show_text(currow, STARTCOL, "List is empty (no members).");
currow++;
+ show_text(currow, STARTCOL, "Press any key to continue...");
+ getchar();
+ clrwin(DISPROW);
+ return;
}
end_display();
return(0);
help_menu->num_items = 5;
help_menu->items = (char **) malloc((unsigned) sizeof(char *) * help_menu->num_items);
- help_menu->title = strsave("madm is designed as a basic mail list administration program.");
+ help_menu->title = strsave("mailmaint is designed as a basic mail list administration program.");
help_menu->items[0] = strsave("if you need to perform more advanced list manipulation like");
help_menu->items[1] = strsave("adding lists, or changing list characteristics, refer to the");
help_menu->items[2] = strsave("program listmaint.");
char *argv[1];
argv[0] = list;
- if ((status = sms_query("get_list_info", 1, argv,
- get_list_info, (char *) NULL)) == 0) {
- return status;
- }
- else {
- com_err(whoami, status, " found.\n");
- return status;
- }
+ return sms_query("get_list_info", 1, argv, get_list_info, (char *) NULL);
}
/* ARGSUSED */
return(0);
}
+
+/*
+ * Hook function to cause error messages to be printed through
+ * curses instead of around it.
+ */
+
+int
+menu_err_hook(who, code, fmt, args)
+ char *who;
+ int code;
+ char *fmt;
+ va_list args;
+{
+ char buf[BUFSIZ], *cp;
+
+ FILE _strbuf;
+
+ (void) strcpy(buf, who);
+ for (cp = buf; *cp; cp++);
+ *cp++ = ':';
+ *cp++ = ' ';
+ if (code) {
+ (void) strcpy(cp, error_message(code));
+ while (*cp)
+ cp++;
+ }
+ _strbuf._flag = _IOWRT + _IOSTRG;
+ _strbuf._ptr = cp;
+ _strbuf._cnt = BUFSIZ - (cp - buf);
+ _doprnt(fmt, args, &_strbuf);
+ (void) putc('\0', &_strbuf);
+ Put_message(buf);
+}
+
+
/*
* Local Variables:
* mode: c