X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fserver_main.c;h=b44cd09966e41e6070976ca6e360dad7e2a55844;hb=ff86eb6d533d2357d366530825ba67f5e0a3b4a3;hp=62a06ccd118f0941f4a7235148310de6af69b998;hpb=12a091b625c28d94e895901c900f4fdbd0776f7f;p=citadel.git diff --git a/citadel/server_main.c b/citadel/server_main.c index 62a06ccd1..b44cd0996 100644 --- a/citadel/server_main.c +++ b/citadel/server_main.c @@ -1,7 +1,23 @@ /* + * $Id$ + * * citserver's main() function lives here. + * + * Copyright (c) 1987-2010 by the citadel.org team * - * $Id$ + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdep.h" @@ -90,6 +106,8 @@ int main(int argc, char **argv) int relh=0; int home=0; int dbg=0; + int have_log=0; + int have_minus_x=0; char relhome[PATH_MAX]=""; char ctdldir[PATH_MAX]=CTDLDIR; #ifdef HAVE_RUN_DIR @@ -136,6 +154,7 @@ int main(int argc, char **argv) /* -x specifies the desired logging level */ else if (!strncmp(argv[a], "-x", 2)) { verbosity = atoi(&argv[a][2]); + have_minus_x = 1; } else if (!strncmp(argv[a], "-h", 2)) { @@ -149,7 +168,15 @@ int main(int argc, char **argv) } else if (!strncmp(argv[a], "-t", 2)) { - freopen(&argv[a][2], "w", stderr); + if (freopen(&argv[a][2], "w", stderr) != stderr) + { + CtdlLogPrintf(CTDL_EMERG, + "unable to open your trace log [%s]: %s", + &argv[a][2], + strerror(errno)); + exit(1); + } + have_log = 1; } else if (!strncmp(argv[a], "-D", 2)) { @@ -175,6 +202,9 @@ int main(int argc, char **argv) } + if (have_minus_x && running_as_daemon && have_log) + print_to_logfile = 1; + calc_dirs_n_files(relh, home, relhome, ctdldir, dbg); /* daemonize, if we were asked to */ if (running_as_daemon) { @@ -214,7 +244,7 @@ int main(int argc, char **argv) CtdlLogPrintf(CTDL_NOTICE, "*** 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, "Copyright (C) 1987-2010 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"); @@ -245,8 +275,16 @@ int main(int argc, char **argv) #else // HAVE_GETPWUID_R pwp = NULL; #endif // HAVE_GETPWUID_R - mkdir(ctdl_run_dir, 0755); - chown(ctdl_run_dir, config.c_ctdluid, (pwp==NULL)?-1:pw.pw_gid); + + if ((mkdir(ctdl_run_dir, 0755) != 0) && (errno != EEXIST)) + CtdlLogPrintf(CTDL_EMERG, + "unable to create run directory [%s]: %s", + ctdl_run_dir, strerror(errno)); + + if (chown(ctdl_run_dir, config.c_ctdluid, (pwp==NULL)?-1:pw.pw_gid) != 0) + CtdlLogPrintf(CTDL_EMERG, + "unable to set the access rights for [%s]: %s", + ctdl_run_dir, strerror(errno)); }