]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/helperfuncs.cpp
Switch <stdint.h> test to use a test file too.
[user/henk/code/inspircd.git] / src / helperfuncs.cpp
index 668cb95ec2ac469fe9667da6dc086ffc2b4ecef2..439320c1e00d85334c29d3da845357b246d11cfa 100644 (file)
@@ -339,8 +339,8 @@ bool IsNickHandler::Call(const char* n, size_t max)
                return false;
        }
 
-       /* too long? or not -- pointer arithmetic rocks */
-       return (p < max);
+       /* too long? or not */
+       return (p <= max);
 }
 
 /* return true for good ident, false else */
@@ -495,7 +495,26 @@ bool InspIRCd::SilentULine(const std::string& sserver)
 
 std::string InspIRCd::TimeString(time_t curtime)
 {
-       return std::string(ctime(&curtime),24);
+#ifdef _WIN32
+       if (curtime < 0)
+               curtime = 0;
+#endif
+
+       struct tm* timeinfo = localtime(&curtime);
+       if (!timeinfo)
+       {
+               curtime = 0;
+               timeinfo = localtime(&curtime);
+       }
+
+       // If the calculated year exceeds four digits or is less than the year 1000,
+       // the behavior of asctime() is undefined
+       if (timeinfo->tm_year + 1900 > 9999)
+               timeinfo->tm_year = 9999 - 1900;
+       else if (timeinfo->tm_year + 1900 < 1000)
+               timeinfo->tm_year = 0;
+
+       return std::string(asctime(timeinfo),24);
 }
 
 // You should only pass a single character to this.