diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-12 17:55:47 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-12 17:55:47 +0000 |
commit | cbefea57e9b68df8a272e9041e079b647f627554 (patch) | |
tree | 31eeb5e1da6da06365690044d1b72b4bde16080a | |
parent | 27e2941ec9a9a7609749b7310a787548ddf716a5 (diff) |
Fixes for default log. It is now called ~/.inspircd/startup.log unless overridden by -logfile commandline param. The name of the log is more indicative of what it stores, and the location is more sane and fits in with standards.
If the home directory cant be found from either HOME or USERPROFILE env vars, then the startup.log is dumped to the current directory.
Removed -nolog from ./inspircd debug, antique setting.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9472 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | .inspircd.inc | 2 | ||||
-rw-r--r-- | src/helperfuncs.cpp | 53 |
2 files changed, 53 insertions, 2 deletions
diff --git a/.inspircd.inc b/.inspircd.inc index 183c11c71..0ba1f88de 100644 --- a/.inspircd.inc +++ b/.inspircd.inc @@ -115,7 +115,7 @@ sub debug { checkgdb(); # If we are still alive here.. Try starting the IRCd.. - system("gdb --command=$basepath/.gdbargs --args $binpath/$executable -nofork -debug -nolog"); + system("gdb --command=$basepath/.gdbargs --args $binpath/$executable -nofork -debug"); } sub screendebug diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index d2fbca6f6..3ff94e4f6 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -6,7 +6,7 @@ * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see - * the file COPYING for details. + * the file COPYING for details. * * --------------------------------------------------- */ @@ -287,6 +287,57 @@ bool InspIRCd::OpenLog(char**, int) this->Logs->SetupNoFork(); } Config->MyDir = Config->GetFullProgDir(); + + /* Attempt to find home directory, portable to windows */ + const char* home = getenv("HOME"); + if (!home) + { + /* No $HOME, log to %USERPROFILE% */ + home = getenv("USERPROFILE"); + if (!home) + { + /* Nothing could be found at all, log to current dir */ + Config->logpath = "./startup.log"; + } + } + + if (!Config->writelog) return true; // Skip opening default log if -nolog + + if (!*this->LogFileName) + { + if (Config->logpath.empty()) + { + std::string path = std::string(home) + "/.inspircd"; + if (!mkdir(path.c_str(), 0700)) + { + /* Log to ~/.inspircd/ircd.log */ + Config->logpath = path + "/startup.log"; + } + else + { + /* Couldn't make ~/.inspircd directory, log to current dir */ + Config->logpath = "./startup.log"; + printf("\nWARNING: Unable to create directory: %s (%s)\n", path.c_str(), strerror(errno)); + } + } + + Config->log_file = fopen(Config->logpath.c_str(),"a+"); + } + else + { + Config->log_file = fopen(this->LogFileName,"a+"); + } + + if (!Config->log_file) + { + return false; + } + + FileWriter* fw = new FileWriter(this, Config->log_file); + FileLogStream *f = new FileLogStream(this, (Config->forcedebug ? DEBUG : DEFAULT), fw); + + this->Logs->AddLogType("*", f, true); + return true; } |