- GetDefaultVALCHAR(c_initax, 4);
-
- GetDefaultVALSTR(c_moreprompt, "<more>");
- GetDefaultVALSTR(c_twitroom, "Trashcan");
- GetDefaultVALSTR(c_baseroom, BASEROOM);
- GetDefaultVALSTR(c_aideroom, "Aide");
- GetDefaultVALINT(c_port_number, 504);
-
- GetDefaultVALINT(c_sleeping, 900);
-
- if (config.c_ctdluid == 0) {
- pw = getpwnam("citadel");
- if (pw != NULL) {
- config.c_ctdluid = pw->pw_uid;
- }
- }
- if (config.c_ctdluid == 0) {
- pw = getpwnam("bbs");
- if (pw != NULL) {
- config.c_ctdluid = pw->pw_uid;
- }
- }
- if (config.c_ctdluid == 0) {
- pw = getpwnam("guest");
- if (pw != NULL) {
- config.c_ctdluid = pw->pw_uid;
- }
- }
- if (config.c_createax == 0) {
- config.c_createax = 3;
- }
- /*
- * Negative values for maxsessions are not allowed.
- */
- if (config.c_maxsessions < 0) {
- config.c_maxsessions = 0;
- }
- /* We need a system default message expiry policy, because this is
- * the top level and there's no 'higher' policy to fall back on.
- * By default, do not expire messages at all.
- */
- if (config.c_ep.expire_mode == 0) {
- config.c_ep.expire_mode = EXPIRE_MANUAL;
- config.c_ep.expire_value = 0;
- }
-
- /*
- * Default port numbers for various services
- */
- GetDefaultVALINT(c_smtp_port, 25);
- GetDefaultVALINT(c_pop3_port, 110);
- GetDefaultVALINT(c_imap_port, 143);
- GetDefaultVALINT(c_msa_port, 587);
- GetDefaultVALINT(c_smtps_port, 465);
- GetDefaultVALINT(c_pop3s_port, 995);
- GetDefaultVALINT(c_imaps_port, 993);
- GetDefaultVALINT(c_pftcpdict_port, -1);
- GetDefaultVALINT(c_managesieve_port, 2020);
- GetDefaultVALINT(c_xmpp_c2s_port, 5222);
- GetDefaultVALINT(c_xmpp_s2s_port, 5269);
-}
-
-
-void get_config (void)
-{
- int a;
- int rv;
- FILE *fp;
-
- /*
- * What we're going to try to do here is append a whole bunch of
- * nulls to the citadel.config file, so we can keep the old config
- * values if they exist, but if the file is missing or from an
- * earlier version with a shorter config structure, when setup tries
- * to read the old config parameters, they'll all come up zero.
- * The length of the config file will be set to what it's supposed
- * to be when we rewrite it, because we replace the old file with a
- * completely new copy.
- */
- if ((a = open(file_citadel_config, O_WRONLY | O_CREAT | O_APPEND,
- S_IRUSR | S_IWUSR)) == -1) {
- display_error("%s citadel.config [%s][%s]\n", _("setup: cannot append"), file_citadel_config, strerror(errno));
- cleanup(errno);
- }
- fp = fdopen(a, "ab");
- if (fp == NULL) {
- display_error("%s citadel.config [%s][%s]\n", _("setup: cannot append"), file_citadel_config, strerror(errno));
- cleanup(errno);
- }
- for (a = 0; a < sizeof(struct config); ++a) {
- putc(0, fp);
- }
- fclose(fp);
-
- /* now we re-open it, and read the old or blank configuration */
- fp = fopen(file_citadel_config, "rb");
- if (fp == NULL) {
- display_error("%s citadel.config [%s][%s]\n", _("setup: cannot open"), file_citadel_config, strerror(errno));
- cleanup(errno);
- }
- rv = fread((char *) &config, sizeof(struct config), 1, fp);
- fclose(fp);
-
-}