-std::string ServerConfig::GetFullProgDir()
-{
- char buffer[PATH_MAX];
-#ifdef WINDOWS
- /* Windows has specific api calls to get the exe path that never fail.
- * For once, windows has something of use, compared to the POSIX code
- * for this, this is positively neato.
- */
- if (GetModuleFileName(NULL, buffer, MAX_PATH))
- {
- std::string fullpath = buffer;
- std::string::size_type n = fullpath.rfind("\\inspircd.exe");
- return std::string(fullpath, 0, n);
- }
-#else
- // Get the current working directory
- if (getcwd(buffer, PATH_MAX))
- {
- std::string remainder = this->argv[0];
-
- /* Does argv[0] start with /? its a full path, use it */
- if (remainder[0] == '/')
- {
- std::string::size_type n = remainder.rfind("/inspircd");
- return std::string(remainder, 0, n);
- }
-
- std::string fullpath = std::string(buffer) + "/" + remainder;
- std::string::size_type n = fullpath.rfind("/inspircd");
- return std::string(fullpath, 0, n);
- }
-#endif
- return "/";
-}
-