]> code.citadel.org Git - citadel.git/blobdiff - citadel/routines2.c
Patches submitted by matt:
[citadel.git] / citadel / routines2.c
index 731586bef25638a291b7dd80219910cb6c168478..07012ab1a6f16a306415aa744100ad12bf9525d3 100644 (file)
@@ -592,7 +592,7 @@ void list_bio(CtdlIPC *ipc)
                pprintf("%s\n", buf);
                return;
        }
-       while (strlen(resp)) {
+       while (resp && strlen(resp)) {
                extract_token(buf, resp, 0, '\n', sizeof buf);
                remove_token(resp, 0, '\n');
                if ((pos + strlen(buf) + 5) > screenwidth) {
@@ -644,7 +644,7 @@ void read_bio(CtdlIPC *ipc)
 void do_system_configuration(CtdlIPC *ipc)
 {
 
-#define NUM_CONFIGS 46
+#define NUM_CONFIGS 52
 
        char buf[SIZ];
        char sc[NUM_CONFIGS][256];
@@ -682,7 +682,7 @@ void do_system_configuration(CtdlIPC *ipc)
        strprompt("Node name", &sc[0][0], 15);
        strprompt("Fully qualified domain name", &sc[1][0], 63);
        strprompt("Human readable node name", &sc[2][0], 20);
-       strprompt("Modem dialup number", &sc[3][0], 15);
+       strprompt("Telephone number", &sc[3][0], 15);
        strprompt("Geographic location of this system", &sc[12][0], 31);
        strprompt("Name of system administrator", &sc[13][0], 25);
        strprompt("Paginator prompt", &sc[10][0], 79);
@@ -743,6 +743,8 @@ void do_system_configuration(CtdlIPC *ipc)
        strprompt("SMTP MTA server port (-1 to disable)", &sc[24][0], 5);
        strprompt("SMTP MSA server port (-1 to disable)", &sc[38][0], 5);
        strprompt("SMTPS server port (-1 to disable)", &sc[41][0], 5);
+       strprompt("Postfix TCP Dictionary Port server port (-1 to disable)", &sc[50][0], 5);
+       strprompt("ManageSieve server port (-1 to disable)", &sc[51][0], 5);
 
        /* This logic flips the question around, because it's one of those
         * situations where 0=yes and 1=no
@@ -842,6 +844,17 @@ void do_system_configuration(CtdlIPC *ipc)
                "Enable full text search index (warning: resource intensive)",
                atoi(&sc[42][0]))));
 
+       snprintf(sc[46], sizeof sc[46], "%d", (boolprompt(
+               "Perform journaling of email messages",
+               atoi(&sc[46][0]))));
+       snprintf(sc[47], sizeof sc[47], "%d", (boolprompt(
+               "Perform journaling of non-email messages",
+               atoi(&sc[47][0]))));
+       if ( (atoi(&sc[46][0])) || (atoi(&sc[47][0])) ) {
+               strprompt("Email destination of journalized messages",
+                       &sc[48][0], 127);
+       }
+
        /* Save it */
        scr_printf("Save this configuration? ");
        if (yesno()) {
@@ -1046,8 +1059,8 @@ void network_config_management(CtdlIPC *ipc, char *entrytype, char *comment)
                return;
        }
 
-       snprintf(filename, sizeof filename, "%s.listedit", tmpnam(NULL));
-       snprintf(changefile, sizeof changefile, "%s.listedit", tmpnam(NULL));
+       CtdlMakeTempFileName(filename, sizeof filename);
+       CtdlMakeTempFileName(changefile, sizeof changefile);
 
        tempfp = fopen(filename, "w");
        if (tempfp == NULL) {
@@ -1107,19 +1120,20 @@ void network_config_management(CtdlIPC *ipc, char *entrytype, char *comment)
        }
 
        if (file_checksum(filename) == cksum) {
-               err_printf("*** Not saving changes.\n");
+               err_printf("*** No changes to save.\n");
                e_ex_code = 1;
        }
 
        if (e_ex_code == 0) {           /* Save changes */
                changefp = fopen(changefile, "w");
+               /* This appears completely unnecessary; why was it here? -IO
                r = CtdlIPCGetRoomNetworkConfig(ipc, &listing, buf);
                if (r / 100 == 1) {
                        while(listing && strlen(listing)) {
                                extract_token(buf, listing, 0, '\n', sizeof buf);
                                remove_token(listing, 0, '\n');
                                extract_token(instr, buf, 0, '|', sizeof instr);
-                               if (strcasecmp(instr, entrytype)) {
+                               if (!strcasecmp(instr, entrytype)) {
                                        fprintf(changefp, "%s\n", buf);
                                }
                        }
@@ -1128,6 +1142,7 @@ void network_config_management(CtdlIPC *ipc, char *entrytype, char *comment)
                        free(listing);
                        listing = NULL;
                }
+               */
                tempfp = fopen(filename, "r");
                while (fgets(buf, sizeof buf, tempfp) != NULL) {
                        for (i=0; i<strlen(buf); ++i) {