#ifndef lint static char rcsid[] = "@(#$Id: rclinit.cpp,v 1.2 2005-11-05 14:40:50 dockes Exp $ (C) 2004 J.F.Dockes"; #endif #include #include #include "debuglog.h" #include "rclconfig.h" #include "rclinit.h" RclConfig *recollinit(void (*cleanup)(void), void (*sigcleanup)(int), string &reason) { atexit(cleanup); if (signal(SIGHUP, SIG_IGN) != SIG_IGN) signal(SIGHUP, sigcleanup); if (signal(SIGINT, SIG_IGN) != SIG_IGN) signal(SIGINT, sigcleanup); if (signal(SIGQUIT, SIG_IGN) != SIG_IGN) signal(SIGQUIT, sigcleanup); if (signal(SIGTERM, SIG_IGN) != SIG_IGN) signal(SIGTERM, sigcleanup); DebugLog::getdbl()->setloglevel(DEBDEB1); DebugLog::setfilename("stderr"); RclConfig *config = new RclConfig; if (!config || !config->ok()) { reason = "Configuration could not be built:\n"; if (config) reason += config->getReason(); else reason += "Out of memory ?"; return 0; } string logfilename, loglevel; if (config->getConfParam(string("logfilename"), logfilename)) DebugLog::setfilename(logfilename.c_str()); if (config->getConfParam(string("loglevel"), loglevel)) { int lev = atoi(loglevel.c_str()); DebugLog::getdbl()->setloglevel(lev); } return config; }