/*
* citserver's main() function lives here.
*
- * Copyright (c) 1987-2019 by the citadel.org team
+ * Copyright (c) 1987-2021 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
InitializeMasterTSD();
/* parse command-line arguments */
- while ((a=getopt(argc, argv, "l:dh:x:t:B:Dru:s:")) != EOF) switch(a) {
+ while ((a=getopt(argc, argv, "cl:dh:x:t:B:Dru:s:")) != EOF) switch(a) {
+ // test this binary for compatibility and exit
+ case 'c':
+ fprintf(stderr, "%s: binary compatibility confirmed\n", argv[0]);
+ exit(0);
+ break;
+
+ // identify the desired syslog facility
case 'l':
safestrncpy(facility, optarg, sizeof(facility));
syslog_facility = SyslogFacility(facility);
break;
- /* run in the background if -d was specified */
+ // run in the background if -d was specified
case 'd':
running_as_daemon = 1;
break;
+ // specify the data directory
case 'h':
relh = optarg[0] != '/';
if (!relh) {
home=1;
break;
+ // identify the desired logging severity level
case 'x':
max_log_level = atoi(optarg);
break;
- case 't': /* deprecated */
+ // deprecated
+ case 't':
break;
- case 'B': /* Basesize */
+
+ // basesize (what is this?)
+ case 'B':
basesize = atoi(optarg);
break;
dbg = 1;
break;
- /* -r tells the server not to drop root permissions.
- * Don't use this unless you know what you're doing.
- */
+ // -r tells the server not to drop root permissions.
+ // Don't use this unless you know what you're doing.
case 'r':
drop_root_perms = 0;
break;
- /* -u tells the server what uid to run under... */
+ // -u tells the server what uid to run under...
case 'u':
u = atoi(optarg);
if (u > 0) {
}
break;
- /* -s tells the server to behave differently during sanity checks */
+ // -s tells the server to behave differently during sanity checks
case 's':
sanity_diag_mode = atoi(optarg);
break;
+ // any other parameter makes it crash and burn
default:
- /* any other parameter makes it crash and burn */
fprintf(stderr, "citserver: usage: "
"citserver "
"[-l LogFacility] "
syslog(LOG_INFO, " ");
syslog(LOG_INFO, "*** Citadel server engine ***\n");
syslog(LOG_INFO, "Version %d (build %s) ***", REV_LEVEL, svn_revision());
- syslog(LOG_INFO, "Copyright (C) 1987-2019 by the Citadel development team.");
+ syslog(LOG_INFO, "Copyright (C) 1987-2021 by the Citadel development team.");
syslog(LOG_INFO, " ");
syslog(LOG_INFO, "This program is open source software: you can redistribute it and/or");
syslog(LOG_INFO, "modify it under the terms of the GNU General Public License, version 3.");
ctdl_lockfile(1);
init_sysdep(); // Initialize...
master_startup(); // Do non system dependent startup functions
- check_control(); // Check, sanitize, initialize the control record
+ check_control(); // Check/sanitize/initialize control record, fix user indexes
syslog(LOG_INFO, "main: upgrading modules"); // Run any upgrade entry points
upgrade_modules();
int exit_code = master_cleanup(exit_signal);
ctdl_lockfile(0);
if (restart_server) {
+ syslog(LOG_INFO, "main: *** CITADEL SERVER IS RESTARTING ***");
execv(argv[0], argv);
}
return(exit_code);