From 9f33bf7fc83cffccae96eb622bf39e8f4838b809 Mon Sep 17 00:00:00 2001 From: brain Date: Tue, 13 May 2008 17:16:26 +0000 Subject: Check for windows drive letters on the start of paths and treat them the same as paths that start with /, this makes insp more friendly for windows filesystems git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9724 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/configreader.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/configreader.cpp') diff --git a/src/configreader.cpp b/src/configreader.cpp index 5b582b713..3f99a52e2 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -1649,6 +1649,11 @@ bool ServerConfig::DoPipe(ConfigDataHash &target, const std::string &file, std:: return ret; } +bool ServerConfig::StartsWithWindowsDriveLetter(const std::string &path) +{ + return (path.length() > 2 && isalpha(path[0]) && path[1] == ':'); +} + bool ServerConfig::DoInclude(ConfigDataHash &target, const std::string &file, std::ostringstream &errorstream) { std::string confpath; @@ -1661,7 +1666,7 @@ bool ServerConfig::DoInclude(ConfigDataHash &target, const std::string &file, st std::replace(newfile.begin(),newfile.end(),'\\','/'); std::replace(confpath.begin(),confpath.end(),'\\','/'); - if ((newfile[0] != '/') && (newfile.find("://") == std::string::npos)) + if ((newfile[0] != '/') && (!StartsWithWindowsDriveLetter(newfile))) { if((pos = confpath.rfind("/")) != std::string::npos) { @@ -1883,7 +1888,7 @@ bool ServerConfig::ReadFile(file_cache &F, const char* fname) F.clear(); - if ((*fname != '/') && (*fname != '\\')) + if ((*fname != '/') && (*fname != '\\') && (!StartsWithWindowsDriveLetter(fname))) { std::string::size_type pos; std::string confpath = ServerInstance->ConfigFileName; -- cgit v1.2.3