]> code.citadel.org Git - citadel.git/blobdiff - citadel/control.c
centralized filename calculation
[citadel.git] / citadel / control.c
index e497f3dbc650c39b2fb192e3dc9ad3a1b177230c..2260fa5617e716aec948d95edee1c1b509566206 100644 (file)
@@ -5,10 +5,6 @@
  *
  */
 
-#ifdef DLL_EXPORT
-#define IN_LIBCIT
-#endif
-
 #include "sysdep.h"
 #include <stdlib.h>
 #include <unistd.h>
@@ -64,13 +60,13 @@ void get_control(void)
         */
        memset(&CitControl, 0, sizeof(struct CitControl));
        if (control_fp == NULL) {
-               control_fp = fopen("citadel.control", "rb+");
+               control_fp = fopen(file_citadel_control, "rb+");
                if (control_fp != NULL) {
                        fchown(fileno(control_fp), config.c_ctdluid, -1);
                }
        }
        if (control_fp == NULL) {
-               control_fp = fopen("citadel.control", "wb+");
+               control_fp = fopen(file_citadel_control, "wb+");
                if (control_fp != NULL) {
                        fchown(fileno(control_fp), config.c_ctdluid, -1);
                        memset(&CitControl, 0, sizeof(struct CitControl));
@@ -80,8 +76,9 @@ void get_control(void)
                }
        }
        if (control_fp == NULL) {
-               lprintf(CTDL_ALERT, "ERROR opening citadel.control: %s\n",
-                       strerror(errno));
+               lprintf(CTDL_ALERT, "ERROR opening %s: %s\n",
+                               file_citadel_control,
+                               strerror(errno));
                return;
        }
 
@@ -109,12 +106,13 @@ void put_control(void)
  */
 long get_new_message_number(void)
 {
+       long retval = 0L;
        begin_critical_section(S_CONTROL);
        get_control();
-       ++CitControl.MMhighest;
+       retval = ++CitControl.MMhighest;
        put_control();
        end_critical_section(S_CONTROL);
-       return (CitControl.MMhighest);
+       return(retval);
 }
 
 
@@ -123,12 +121,13 @@ long get_new_message_number(void)
  */
 long get_new_user_number(void)
 {
+       long retval = 0L;
        begin_critical_section(S_CONTROL);
        get_control();
-       ++CitControl.MMnextuser;
+       retval = ++CitControl.MMnextuser;
        put_control();
        end_critical_section(S_CONTROL);
-       return (CitControl.MMnextuser);
+       return(retval);
 }
 
 
@@ -138,12 +137,13 @@ long get_new_user_number(void)
  */
 long get_new_room_number(void)
 {
+       long retval = 0L;
        begin_critical_section(S_CONTROL);
        get_control();
-       ++CitControl.MMnextroom;
+       retval = ++CitControl.MMnextroom;
        put_control();
        end_critical_section(S_CONTROL);
-       return (CitControl.MMnextroom);
+       return(retval);
 }
 
 
@@ -194,7 +194,7 @@ void cmd_conf(char *argbuf)
                cprintf("%d\n", config.c_imap_port);
                cprintf("%ld\n", config.c_net_freq);
                cprintf("%d\n", config.c_disable_newu);
-               cprintf("%d\n", config.c_enable_fulltext);
+               cprintf("1\n"); /* niu */
                cprintf("%d\n", config.c_purge_hour);
 #ifdef HAVE_LDAP
                cprintf("%s\n", config.c_ldap_host);
@@ -214,6 +214,13 @@ void cmd_conf(char *argbuf)
                cprintf("%d\n", config.c_imaps_port);
                cprintf("%d\n", config.c_pop3s_port);
                cprintf("%d\n", config.c_smtps_port);
+               cprintf("%d\n", config.c_enable_fulltext);
+               cprintf("%d\n", config.c_auto_cull);
+               cprintf("%d\n", config.c_instant_expunge);
+               cprintf("%d\n", config.c_allow_spoofing);
+               cprintf("%d\n", config.c_journal_email);
+               cprintf("%d\n", config.c_journal_pubmsgs);
+               cprintf("%s\n", config.c_journal_dest);
                cprintf("000\n");
        }
 
@@ -344,7 +351,7 @@ void cmd_conf(char *argbuf)
                                        config.c_disable_newu = 1;
                                break;
                        case 30:
-                               config.c_enable_fulltext = atoi(buf);
+                               /* niu */
                                break;
                        case 31:
                                if ((config.c_purge_hour >= 0)
@@ -388,17 +395,46 @@ void cmd_conf(char *argbuf)
                        case 41:
                                config.c_smtps_port = atoi(buf);
                                break;
+                       case 42:
+                               config.c_enable_fulltext = atoi(buf);
+                               break;
+                       case 43:
+                               config.c_auto_cull = atoi(buf);
+                               break;
+                       case 44:
+                               config.c_instant_expunge = atoi(buf);
+                               break;
+                       case 45:
+                               config.c_allow_spoofing = atoi(buf);
+                               break;
+                       case 46:
+                               config.c_journal_email = atoi(buf);
+                               break;
+                       case 47:
+                               config.c_journal_pubmsgs = atoi(buf);
+                               break;
+                       case 48:
+                               safestrncpy(config.c_journal_dest, buf,
+                                               sizeof config.c_journal_dest);
                        }
                        ++a;
                }
                put_config();
                snprintf(buf, sizeof buf,
-                        "Global system configuration edited by %s\n",
+                        "The global system configuration has been edited by %s.\n",
                         CC->curr_user);
                aide_message(buf);
 
                if (strlen(config.c_logpages) > 0)
                        create_room(config.c_logpages, 3, "", 0, 1, 1, VIEW_BBS);
+
+               /* If full text indexing has been disabled, invalidate the
+                * index so it doesn't try to use it later.
+                */
+               if (!config.c_enable_fulltext == 0) {
+                       CitControl.fulltext_wordbreaker = 0;
+                       put_control();
+               }
        }
 
        else if (!strcasecmp(cmd, "GETSYS")) {