]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/helperfuncs.cpp
m_rmode Call Channel::GetUsers() instead of directly accessing Channel::userlist
[user/henk/code/inspircd.git] / src / helperfuncs.cpp
index bebb22007b9558f4a054e00f887c0dbb6873c0f2..71fb71cdf4f5a74694aee6f9194d670a0dc6c8e2 100644 (file)
@@ -403,14 +403,14 @@ const char* InspIRCd::Format(const char* formatString, ...)
        return ret;
 }
 
-std::string InspIRCd::TimeString(time_t curtime)
+std::string InspIRCd::TimeString(time_t curtime, const char* format, bool utc)
 {
 #ifdef _WIN32
        if (curtime < 0)
                curtime = 0;
 #endif
 
-       struct tm* timeinfo = localtime(&curtime);
+       struct tm* timeinfo = utc ? gmtime(&curtime) : localtime(&curtime);
        if (!timeinfo)
        {
                curtime = 0;
@@ -424,7 +424,15 @@ std::string InspIRCd::TimeString(time_t curtime)
        else if (timeinfo->tm_year + 1900 < 1000)
                timeinfo->tm_year = 0;
 
-       return std::string(asctime(timeinfo),24);
+       // This is the default format used by asctime without the terminating new line.
+       if (!format)
+               format = "%a %b %d %H:%M:%S %Y";
+
+       char buffer[512];
+       if (!strftime(buffer, sizeof(buffer), format, timeinfo))
+               buffer[0] = '\0';
+
+       return buffer;
 }
 
 std::string InspIRCd::GenRandomStr(int length, bool printable)
@@ -478,7 +486,7 @@ ModResult OnCheckExemptionHandler::Call(User* user, Channel* chan, const std::st
                std::string::size_type pos = current.find(':');
                if (pos == std::string::npos)
                        continue;
-               if (current.substr(0,pos) == restriction)
+               if (!current.compare(0, pos, restriction))
                        minmode = current[pos+1];
        }