#include "database.h"
#include "user_ops.h"
#include "housekeeping.h"
+#include "svn_revision.h"
#include "citadel_dirs.c"
#include "modules_init.h"
const char *CitadelServiceTCP="citadel-TCP";
-void go_threading(void);
+extern struct CitContext masterCC;
+
+void go_threading(void);
/*
* Here's where it all begins.
CtdlLogPrintf(CTDL_NOTICE, "\n");
CtdlLogPrintf(CTDL_NOTICE, "\n");
CtdlLogPrintf(CTDL_NOTICE,
- "*** Citadel server engine v%d.%02d ***\n",
- (REV_LEVEL/100), (REV_LEVEL%100));
- CtdlLogPrintf(CTDL_NOTICE,
- "Copyright (C) 1987-2008 by the Citadel development team.\n");
- CtdlLogPrintf(CTDL_NOTICE,
- "This program is distributed under the terms of the GNU "
- "General Public License.\n");
+ "*** Citadel server engine v%d.%02d (build %s) ***\n",
+ (REV_LEVEL/100), (REV_LEVEL%100), svn_revision());
+ CtdlLogPrintf(CTDL_NOTICE, "Copyright (C) 1987-2008 by the Citadel development team.\n");
+ CtdlLogPrintf(CTDL_NOTICE, "This program is distributed under the terms of the GNU "
+ "General Public License.\n");
CtdlLogPrintf(CTDL_NOTICE, "\n");
CtdlLogPrintf(CTDL_DEBUG, "Called as: %s\n", argv[0]);
CtdlLogPrintf(CTDL_INFO, "%s\n", libcitadel_version_string());
CtdlLogPrintf(CTDL_INFO, "Loading citadel.config\n");
get_config();
config.c_ipgm_secret = rand();
+
+ /* get_control() MUST MUST MUST be called BEFORE the databases are opened!! */
+ CtdlLogPrintf(CTDL_INFO, "Acquiring control record\n");
+ get_control();
+
put_config();
#ifdef HAVE_RUN_DIR
*/
master_startup();
- CtdlLogPrintf(CTDL_INFO, "Acquiring control record\n");
- get_control();
-
+ /*
+ * Run any upgrade entry points
+ */
+ CtdlLogPrintf(CTDL_INFO, "Upgrading modules.\n");
+ upgrade_modules();
+
+/**
+ * Load the user for the masterCC or create them if they don't exist
+ */
+ if (getuser(&masterCC.user, "SYS_Citadel"))
+ {
+ /** User doesn't exist. We can't use create user here as the user number needs to be 0 */
+ strcpy (masterCC.user.fullname, "SYS_Citadel") ;
+ putuser(&masterCC.user);
+ getuser(&masterCC.user, "SYS_Citadel"); /** Just to be safe */
+ }
+
/*
* Bind the server to a Unix-domain socket.
*/
CitadelServiceTCP);
- /*
- * Run any upgrade entry points
- */
- CtdlLogPrintf(CTDL_INFO, "Upgrading modules.\n");
- upgrade_modules();
/*