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);
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;
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;
}