#endif
#include "screen.h"
+/* work around solaris include files */
+#ifdef reg
+#undef reg
+#endif
+
extern char temp[];
extern char tempdir[];
extern char *axdefs[7];
int r; /* IPC response code */
if (rc_alt_semantics) {
- if (maxmsgnum == highest_msg_read == 0) {
- /* err_printf("maxmsgnum == highest_msg_read == 0\n"); */
+ if (maxmsgnum == 0 && highest_msg_read == 0) {
return;
}
r = CtdlIPCSetLastRead(ipc, (maxmsgnum > highest_msg_read) ?
maxmsgnum : highest_msg_read, buf);
} else {
- r = CtdlIPCSetLastRead(ipc, 0, buf);
+ r = CtdlIPCSetLastRead(ipc, (maxmsgnum > highest_msg_read) ?
+ maxmsgnum : highest_msg_read, buf);
+/* r = CtdlIPCSetLastRead(ipc, maxmsgnum, buf); */
+/* This is a quick-and-dirty fix to all msgs becoming new in Mail>.
+ * It will need to be rethought when messages.c is rewritten.
+ */
}
if (r / 100 != 2)
scr_printf("%s\n", buf);
}
/*
- * validate a user
+ * validate a user (returns 0 for successful validation, nonzero if quitting)
*/
-void val_user(CtdlIPC *ipc, char *user, int do_validate)
+int val_user(CtdlIPC *ipc, char *user, int do_validate)
{
int a;
char cmd[SIZ];
char buf[SIZ];
char *resp = NULL;
int ax = 0;
+ char answer[2];
int r; /* IPC response code */
+ scr_printf("\n");
r = CtdlIPCGetUserRegistration(ipc, user, &resp, cmd);
if (r / 100 == 1) {
a = 0;
if (do_validate) {
/* now set the access level */
- ax = intprompt("Access level", ax, 0, 6);
- r = CtdlIPCValidateUser(ipc, user, ax, cmd);
- if (r / 100 != 2)
- scr_printf("%s\n", cmd);
+ while(1) {
+ sprintf(answer, "%d", ax);
+ strprompt("New access level (? for help, q to quit)",
+ answer, 1);
+ if ((answer[0] >= '0') && (answer[0] <= '6')) {
+ ax = atoi(answer);
+ r = CtdlIPCValidateUser(ipc, user, ax, cmd);
+ if (r / 100 != 2)
+ scr_printf("%s\n\n", cmd);
+ return(0);
+ }
+ if (tolower(answer[0]) == 'q') {
+ scr_printf("*** Aborted.\n\n");
+ return(1);
+ }
+ if (answer[0] == '?') {
+ scr_printf("Available access levels:\n");
+ for (a=0; a<7; ++a) {
+ scr_printf("%d - %s\n",
+ a, axdefs[a]);
+ }
+ }
+ }
}
- scr_printf("\n");
+ return(0);
}
scr_printf("%s\n", cmd);
if (r / 100 == 3) {
extract(buf, cmd, 0);
- val_user(ipc, buf, 1);
+ if (val_user(ipc, buf, 1) != 0) finished = 1;
}
} while (finished == 0);
}
snprintf(sc[26], sizeof sc[26], "%d", (boolprompt(
"Allow Aides to Zap (forget) rooms",
atoi(&sc[26][0]))));
- snprintf(sc[30], sizeof sc[29], "%d", (boolprompt(
+ snprintf(sc[30], sizeof sc[30], "%d", (boolprompt(
"Allow system Aides access to user mailboxes",
atoi(&sc[30][0]))));
*/
strprompt("How often to run network jobs (in seconds)", &sc[28][0], 5);
- strprompt("SMTP server port (-1 to disable)", &sc[24][0], 5);
strprompt("POP3 server port (-1 to disable)", &sc[23][0], 5);
strprompt("IMAP server port (-1 to disable)", &sc[27][0], 5);
+ strprompt("SMTP server port (-1 to disable)", &sc[24][0], 5);
+
+ /* This logic flips the question around, because it's one of those
+ * situations where 0=yes and 1=no
+ */
+ a = atoi(sc[25]);
+ a = (a ? 0 : 1);
+ a = boolprompt("Correct forged From: lines during authenticated SMTP",
+ a);
+ a = (a ? 0 : 1);
+ snprintf(sc[25], sizeof sc[25], "%d", a);
/* Expiry settings */
strprompt("Default user purge time (days)", &sc[16][0], 5);
err_printf("Can't save config - out of memory!\n");
logoff(ipc, 1);
}
- for (i = 0; i < num_recs; i++) {
+ if (num_recs) for (i = 0; i < num_recs; i++) {
strcat(resp, recs[i]);
strcat(resp, "\n");
}