X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fserver_main.c;h=ece0e3cb85e2db1df6e249ed514f1b3b73d9adb2;hb=f614f64351a5df98ebc837c973772cebb8171bd4;hp=9bd9be89e8ebfd21468f6bc1a95b2ad5f6a61604;hpb=d424d048b75f6ad6ddb3c92d8d1cf868d63e303f;p=citadel.git diff --git a/citadel/server_main.c b/citadel/server_main.c index 9bd9be89e..ece0e3cb8 100644 --- a/citadel/server_main.c +++ b/citadel/server_main.c @@ -1,7 +1,7 @@ /* * 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. @@ -93,18 +93,26 @@ int main(int argc, char **argv) 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) { @@ -116,13 +124,17 @@ int main(int argc, char **argv) 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; @@ -130,14 +142,13 @@ int main(int argc, char **argv) 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) { @@ -154,13 +165,13 @@ int main(int argc, char **argv) } 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] " @@ -213,7 +224,7 @@ int main(int argc, char **argv) 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."); @@ -225,34 +236,18 @@ int main(int argc, char **argv) syslog(LOG_INFO, " "); syslog(LOG_INFO, "%s", libcitadel_version_string()); -#ifdef HAVE_RUN_DIR - /* on some dists rundir gets purged on startup. so we need to recreate it. */ - - if (stat(ctdl_run_dir, &filestats) == -1) { -#ifdef HAVE_GETPWUID_R -#ifdef SOLARIS_GETPWUID - pwp = getpwuid_r(ctdluid, &pw, pwbuf, sizeof(pwbuf)); -#else // SOLARIS_GETPWUID - getpwuid_r(ctdluid, &pw, pwbuf, sizeof(pwbuf), &pwp); -#endif // SOLARIS_GETPWUID -#else // HAVE_GETPWUID_R - pwp = NULL; -#endif // HAVE_GETPWUID_R - - if ((mkdir(ctdl_run_dir, 0755) != 0) && (errno != EEXIST)) { - syslog(LOG_ERR, "main: unable to create run directory [%s]: %m", ctdl_run_dir); - } + if ((mkdir(ctdl_run_dir, 0755) != 0) && (errno != EEXIST)) { + syslog(LOG_ERR, "main: unable to create run directory [%s]: %m", ctdl_run_dir); + } - if (chown(ctdl_run_dir, ctdluid, (pwp==NULL)?-1:pw.pw_gid) != 0) { - syslog(LOG_ERR, "main: unable to set the access rights for [%s]: %m", ctdl_run_dir); - } + if (chown(ctdl_run_dir, ctdluid, (pwp==NULL)?-1:pw.pw_gid) != 0) { + syslog(LOG_ERR, "main: unable to set the access rights for [%s]: %m", ctdl_run_dir); } -#endif 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(); @@ -359,6 +354,7 @@ int main(int argc, char **argv) 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);