Index: src/platform-linux.cc |
diff --git a/src/platform-linux.cc b/src/platform-linux.cc |
index bfcd8fba7237e1c28306e59664ce0c4d433932c4..16da02e7b73dc01d7c592d3273fc6ebfcde5c00f 100644 |
--- a/src/platform-linux.cc |
+++ b/src/platform-linux.cc |
@@ -159,6 +159,24 @@ int OS::ActivationFrameAlignment() { |
} |
+const char* OS::LocalTimezone(double time) { |
+ if (isnan(time)) return ""; |
+ time_t tv = static_cast<time_t>(floor(time/msPerSecond)); |
+ struct tm* t = localtime(&tv); |
+ if (NULL == t) return ""; |
+ return t->tm_zone; |
+} |
+ |
+ |
+double OS::LocalTimeOffset() { |
+ time_t tv = time(NULL); |
+ struct tm* t = localtime(&tv); |
+ // tm_gmtoff includes any daylight savings offset, so subtract it. |
+ return static_cast<double>(t->tm_gmtoff * msPerSecond - |
+ (t->tm_isdst > 0 ? 3600 * msPerSecond : 0)); |
+} |
+ |
+ |
// We keep the lowest and highest addresses mapped as a quick way of |
// determining that pointers are outside the heap (used mostly in assertions |
// and verification). The estimate is conservative, ie, not all addresses in |