* $Header$
*/
+/* (c) Copyright 1988 by the Massachusetts Institute of Technology. */
+/* For copying and distribution information, please see the file */
+/* <mit-copyright.h>. */
+
#ifndef lint
static char rcsid_mailmaint_c[] = "$Header$";
#endif lint
#include <varargs.h>
#include <com_err.h>
#include <ctype.h>
-#include "mit-copyright.h"
+#include <sms.h>
+#include <sms_app.h>
+#include <mit-copyright.h>
#define STARTCOL 0
#define STARTROW 3
int menu_err_hook();
typedef struct list_info {
- char *acl;
+ int active;
+ int public;
+ int hidden;
+ int maillist;
+ int group;
+ char *acl_type;
+ char *acl_name;
char *desc;
- char *expdate;
+ char *modtime;
+ char *modby;
+ char *modwith;
} List_info;
static char *ascbuff = {"0123456789"};
goto punt;
}
else {
- current_li->acl = (char *) NULL;
+ current_li->acl_type = (char *) NULL;
+ current_li->acl_name = (char *) NULL;
current_li->desc = (char *) NULL;
- current_li->expdate = (char *) NULL;
+ current_li->modtime = (char *) NULL;
+ current_li->modby = (char *) NULL;
+ current_li->modwith = (char *) NULL;
}
if ((uname = getlogin()) == NULL) {
struct passwd *getpwuid();
printf("Connecting to database for %s...please hold on.\n", uname);
- status = sms_connect();
+ status = sms_connect(SMS_SERVER);
if (status) {
(void) sprintf(buf, "\nConnection to SMS server failed");
goto punt;
}
- status = sms_auth();
+ status = sms_auth("mailmaint");
if (status) {
(void) sprintf(buf, "\nAuthorization failed.\n");
goto punt;
show_text(DISPROW, STARTCOL, "Show information about a list.\n\r");
buf = calloc((unsigned)1024, 1);
- if (Prompt("Enter List Name: ", buf, LISTSIZE) == 1) {
+ if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
Put_message("\n\r");
if (fetch_list_info(buf, current_li) == 0) {
(void) sprintf(buf, "Description: %s\n\r", current_li->desc);
else
show_text(currow, STARTCOL, buf);
currow++;
- (void) sprintf(buf, "List Administrator: %s", current_li->acl);
+ (void) sprintf(buf, "List Administrator: %s %s",
+ current_li->acl_type, current_li->acl_name);
show_text(currow, STARTCOL, buf);
currow++;
- (void) sprintf(buf, "Expiration date: %s", current_li->expdate);
+ (void) sprintf(buf, "Modified on %s by user %s with %s",
+ current_li->modtime, current_li->modby,
+ current_li->modwith);
show_text(currow, STARTCOL, buf);
currow++;
}
currow++;
mvcur(0, 0, currow, STARTCOL);
refresh();
- if (Prompt("--RETURN for more, ctl-c to exit--", buffer, 1) == 0) {
+ if (Prompt("--RETURN for more, ctl-c to exit--", buffer, 1, 0) == 0) {
Put_message("Flushing query...");
moreflg = 1;
return (0);
/****************************************************/
add_member()
{
- static char *argv[] = {
- "add_member_to_list",
- 0,
- 0,
- 0
- };
+ char *argv[3];
char *buf;
char c;
show_text(DISPROW, STARTCOL, "Add yourself to a list\n\r");
buf = calloc(LISTMAX, 1);
- if (Prompt("Enter List Name: ", buf, LISTSIZE) == 1) {
+ if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
Put_message("\r\n");
- argv[1] = strsave(buf);
- argv[2] = strsave("user");
- argv[3] = strsave(uname);
- if (status = sms_query_internal(3, argv, scream, (char *) NULL)) {
+ argv[0] = strsave(buf);
+ argv[1] = strsave("user");
+ argv[2] = strsave(uname);
+ if (status = sms_query("add_member_to_list", 3, argv,
+ scream, (char *) NULL)) {
Put_message("\r\n");
com_err(whoami, status, " found.\n");
}
/****************************************************/
delete_member()
{
- static char *argv[] = {
- "delete_member_from_list",
- 0,
- 0,
- 0
- };
+ char *argv[3];
char *buf;
char c;
show_text(DISPROW, STARTCOL, "Remove yourself from a list\n\r");
buf = calloc(LISTMAX, 1);
- if (Prompt("Enter List Name: ", buf, LISTSIZE) == 1) {
+ if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
Put_message("\r\n");
- argv[1] = strsave(buf);
- argv[2] = strsave("user");
- argv[3] = strsave(uname);
- if (status = sms_query_internal(3, argv, scream, (char *) NULL)) {
+ argv[0] = strsave(buf);
+ argv[1] = strsave("user");
+ argv[2] = strsave(uname);
+ if (status = sms_query("delete_member_from_list", 3, argv,
+ scream, (char *) NULL)) {
Put_message("\r\n");
com_err(whoami, status, " found.\n");
}
char *buf;
char c;
- nargv[1] = strsave("user");
+ nargv[1] = strsave("ruser");
nargv[2] = strsave(uname);
buf = calloc(BUFSIZ, 1);
(void) sprintf(buf, "%s is on the following lists:\r", uname);
Put_message("\r\n");
com_err(whoami, status, " in get_lists_of_member");
}
+ currow++;
show_text(currow, STARTCOL, "Press any Key to continue...");
(void) getchar();
clrwin(DISPROW);
show_text(DISPROW, STARTCOL, "This function may take a \
while... proceed? [y] ");
c = getchar();
- if (c == 'y' || c == 'Y') {
+ if (c == 'y' || c == 'Y' || c == '\n') {
move(DISPROW + 1, STARTCOL);
addstr("Processing query...please hold");
refresh();
/****************************************************/
list_all_groups()
{
-
+ char *argv[5];
+ argv[0] = argv[3] = "true";
+ argv[1] = argv[4] = "dontcare";
+ argv[2] = "false";
first_time = 1;
- if (status = sms_query("get_all_visible_maillists", 0, (char **) NULL,
+ if (status = sms_query("qualified_get_lists", 5, argv,
print_all, (char *) NULL)) {
Put_message("\r\n");
com_err(whoami, status, " in list_all_groups\n");
mvcur(0, 0, DISPROW, STARTCOL);
refresh();
buf = calloc(LISTMAX, 1);
- if (Prompt("Enter List Name: ", buf, LISTSIZE) == 1) {
+ if (Prompt("Enter List Name: ", buf, LISTSIZE, 1) == 1) {
(void) sprintf(buffer, "The members of list '%s' are:", buf);
show_text(DISPROW + 1, STARTCOL, buffer);
argv[0] = buf;
currow++;
mvcur(0, 0, currow, STARTCOL);
refresh();
- if (Prompt("--RETURN for more, ctl-c to exit--", buffer, 1) == 0) {
+ if (Prompt("--RETURN for more, ctl-c to exit--", buffer, 1, 0) == 0) {
Put_message("Flushing query...");
moreflg = 1;
return (0);
char **argv;
{
- if (current_li->acl)
- free(current_li->acl);
- current_li->acl = strsave(argv[2]);
+ if (current_li->acl_type)
+ free(current_li->acl_type);
+ current_li->acl_type = strsave(argv[7]);
+ if (current_li->acl_name)
+ free(current_li->acl_name);
+ current_li->acl_name = strsave(argv[8]);
if (current_li->desc)
free(current_li->desc);
- current_li->desc = strsave(argv[3]);
- if (current_li->expdate)
- free(current_li->expdate);
- current_li->expdate = strsave(argv[4]);
+ current_li->desc = strsave(argv[9]);
+ if (current_li->modtime)
+ free(current_li->modtime);
+ current_li->modtime = strsave(argv[10]);
+ if (current_li->modby)
+ free(current_li->modby);
+ current_li->modby = strsave(argv[11]);
+ if (current_li->modwith)
+ free(current_li->modwith);
+ current_li->modwith = strsave(argv[12]);
return (0);
}
/****************************************************/
/* Prompt the user for input */
int
-Prompt(prompt, buf, buflen)
+Prompt(prompt, buf, buflen, crok)
char *prompt;
char *buf;
int buflen;
+ int crok;
{
int c;
char *p;
return (0);
case '\n':
case '\r':
- Put_message("\r");
+ if (crok)
+ Put_message("\r");
*p = '\0';
if (strlen(buf) < 1)/* only \n or \r in buff */
return (-1);
if (p > buf) {
p--;
x--;
- Put_message("\b");
- Put_message(" ");
- Put_message("\b");
+ printf("\b \b");
}
break;
case CTL('U'):
case CTL('G'):
case CTL('['):
x = oldx;
+ while (p-- > buf)
+ printf("\b \b");
p = buf;
break;
default:
(void) putc('\0', &_strbuf);
Put_message(buf);
}
-
-
-/*
- * 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:
- */