[dovecot-cvs] dovecot/src/master settings.c,1.37,1.38 settings.h,1.19,1.20

cras at procontrol.fi cras at procontrol.fi
Sun Dec 29 21:25:51 EET 2002


Update of /home/cvs/dovecot/src/master
In directory danu:/tmp/cvs-serv16769/src/master

Modified Files:
	settings.c settings.h 
Log Message:
Added base_dir setting, so the configure time --localstatedir can be
overridden.



Index: settings.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/settings.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- settings.c	22 Dec 2002 08:18:29 -0000	1.37
+++ settings.c	29 Dec 2002 19:25:48 -0000	1.38
@@ -86,6 +86,7 @@
 };
 
 /* common */
+char *set_base_dir = PKG_RUNDIR;
 char *set_log_path = NULL;
 char *set_info_log_path = NULL;
 char *set_log_timestamp = DEFAULT_FAILURE_STAMP_FORMAT;
@@ -99,7 +100,7 @@
 int set_ssl_disable = FALSE;
 char *set_ssl_cert_file = SSLDIR"/certs/imapd.pem";
 char *set_ssl_key_file = SSLDIR"/private/imapd.pem";
-char *set_ssl_parameters_file = PKG_RUNDIR"/ssl-parameters.dat";
+char *set_ssl_parameters_file = "ssl-parameters.dat";
 unsigned int set_ssl_parameters_regenerate = 24;
 int set_disable_plaintext_auth = FALSE;
 
@@ -107,7 +108,7 @@
 char *set_login_executable = PKG_LIBEXECDIR"/imap-login";
 unsigned int set_login_process_size = 16;
 char *set_login_user = "imapd";
-char *set_login_dir = PKG_RUNDIR"/login";
+char *set_login_dir = "login";
 
 int set_login_chroot = TRUE;
 int set_login_process_per_connection = TRUE;
@@ -146,6 +147,17 @@
 /* auth */
 AuthConfig *auth_processes_config = NULL;
 
+static void fix_base_path(char **str)
+{
+	char *fullpath;
+
+	if (*str != NULL && **str != '\0' && **str != '/') {
+		fullpath = i_strconcat(set_base_dir, "/", *str, NULL);
+		i_free(*str);
+		*str = i_strdup(fullpath);
+	}
+}
+
 static void get_login_uid(void)
 {
 	struct passwd *pw;
@@ -166,6 +178,8 @@
 			i_fatal("Can't use auth executable %s: %m",
 				auth->executable);
 		}
+
+		fix_base_path(&auth->chroot);
 		if (auth->chroot != NULL && access(auth->chroot, X_OK) < 0) {
 			i_fatal("Can't access auth chroot directory %s: %m",
 				auth->chroot);
@@ -231,9 +245,13 @@
 	}
 #endif
 
+	/* fix relative paths */
+	fix_base_path(&set_ssl_parameters_file);
+	fix_base_path(&set_login_dir);
+
 	/* since they're under /var/run by default, they may have been
 	   deleted. */
-	if (safe_mkdir(PKG_RUNDIR, 0700, geteuid(), getegid()) == 0) {
+	if (safe_mkdir(set_base_dir, 0700, geteuid(), getegid()) == 0) {
 		i_warning("Corrected permissions for base directory %s",
 			  PKG_RUNDIR);
 	}

Index: settings.h
===================================================================
RCS file: /home/cvs/dovecot/src/master/settings.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- settings.h	22 Dec 2002 08:48:49 -0000	1.19
+++ settings.h	29 Dec 2002 19:25:48 -0000	1.20
@@ -2,6 +2,7 @@
 #define __SETTINGS_H
 
 /* common */
+extern char *set_base_dir;
 extern char *set_log_path;
 extern char *set_info_log_path;
 extern char *set_log_timestamp;




More information about the dovecot-cvs mailing list