X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fserver_main.c;h=bdcdac46ed264fdeaf3b1f4bd31733560492235c;hb=dc3e3bac8c552a1dd0a371b8f68d011e3c20e5c4;hp=66093245cb933332acf6f1a2c30c67a9ec41960c;hpb=84f1a0f0ac232d9b6b9b785dd515701245a95acd;p=citadel.git diff --git a/citadel/server_main.c b/citadel/server_main.c index 66093245c..bdcdac46e 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" @@ -99,6 +115,13 @@ int main(int argc, char **argv) eCrashParameters params; // eCrashSymbolTable symbol_table; #endif + +#ifdef HAVE_GC + GC_INIT(); + GC_find_leak = 1; +#endif + + /* initialise semaphores here. Patch by Matt and davew * its called here as they are needed by CtdlLogPrintf for thread safety */ @@ -142,7 +165,14 @@ 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); + } } else if (!strncmp(argv[a], "-D", 2)) { @@ -207,7 +237,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"); @@ -238,8 +268,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)); }