]> git.vomp.tv Git - vompclient-marten.git/commitdiff
Fix for #1233050 timezone on client. Also got log to use localtime not utc
authorChris Tallon <chris@vomp.tv>
Wed, 6 Jul 2005 19:23:41 +0000 (19:23 +0000)
committerChris Tallon <chris@vomp.tv>
Wed, 6 Jul 2005 19:23:41 +0000 (19:23 +0000)
log.cc
vdr.cc

diff --git a/log.cc b/log.cc
index 6823f75e2e3f6ceff5b7777af787c6b96d662f80..c75801b6530ed464b4b913c0fef5c2343127b49f 100644 (file)
--- a/log.cc
+++ b/log.cc
@@ -97,7 +97,7 @@ int Log::log(char *fromModule, int level, char* message, ...)
 
   struct timeval tv;
   gettimeofday(&tv, NULL);
-  struct tm* tm = gmtime(&tv.tv_sec);
+  struct tm* tm = localtime(&tv.tv_sec);
   spaceLeft -= strftime(buffer, spaceLeft, "%H:%M:%S.", tm);
   spaceLeft -= snprintf(&buffer[150-spaceLeft], spaceLeft, "%06lu ", (unsigned long)tv.tv_usec);
 
diff --git a/vdr.cc b/vdr.cc
index 66008562cd610b65a969e47cbfc87127763da3b8..ecb2e4978f82b7c36d955b7b6ed1cf22646faa9e 100644 (file)
--- a/vdr.cc
+++ b/vdr.cc
@@ -194,7 +194,10 @@ int VDR::doLogin()
   pthread_mutex_unlock(&mutex);
   if (!p) return 0;
 
-  unsigned long vdrTime = ntohl(*(unsigned long*)p);
+  int count = 0;
+
+  unsigned long vdrTime = ntohl(*(unsigned long*)&p[count]);
+  count += sizeof(unsigned long);
   Log::getInstance()->log("VDR", Log::DEBUG, "vdrtime = %lu", vdrTime);
 
   struct timespec currentTime;
@@ -204,6 +207,33 @@ int VDR::doLogin()
 
   Log::getInstance()->log("VDR", Log::DEBUG, "set clock = %u", b);
 
+  // now make a TZ variable and set it
+  signed int vdrTimeOffset = ntohl(*(signed int*)&p[count]);
+  Log::getInstance()->log("VDR", Log::DEBUG, "offset = %i", vdrTimeOffset);
+
+  char sign;
+  int hours;
+  int minutes;
+  if (vdrTimeOffset > 0) sign = '-';
+  else sign = '+';
+
+  vdrTimeOffset = abs(vdrTimeOffset);
+
+  hours = (int)vdrTimeOffset / 3600;
+  minutes = vdrTimeOffset % 3600;
+
+  Log::getInstance()->log("VDR", Log::DEBUG, "%c %i %i", sign, hours, minutes);
+
+  minutes = (int)minutes / 60;
+
+  Log::getInstance()->log("VDR", Log::DEBUG, "%c %i %i", sign, hours, minutes);
+
+  char newTZ[30];
+  sprintf(newTZ, "MVP%c%i:%i", sign, hours, minutes);
+  setenv("TZ", newTZ, 1);
+
+  Log::getInstance()->log("VDR", Log::DEBUG, "Timezone data: %s", newTZ);
+
   free(p);
   return 1;
 }