summaryrefslogtreecommitdiff
path: root/net/freerdp/files/patch-libfreerdp-locale-timezone.c
blob: ee8d2e4bb070a810147d02f06ac748201d729a05 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From f5dbe2c9a5fe050c1d7e014d3c1529befb8eea3b Mon Sep 17 00:00:00 2001
From: ivan-83 <rozhuk.im@gmail.com>
Date: Tue, 10 Mar 2015 04:40:47 +0300
Subject: [PATCH] * FreeBSD timezone detection patch

---
 libfreerdp/locale/timezone.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff libfreerdp/locale/timezone.c libfreerdp/locale/timezone.c
index 92b74e8..0375f9c 100644
--- libfreerdp/locale/timezone.c
+++ libfreerdp/locale/timezone.c
@@ -1521,8 +1523,11 @@ char* freerdp_get_unix_timezone_identifier()
 		return tzid;
 	}
 
+#ifdef __FreeBSD__
+	fp = fopen("/var/db/zoneinfo", "r");
+#else
 	fp = fopen("/etc/timezone", "r");
-
+#endif
 	if (fp != NULL)
 	{
 		fseek(fp, 0, SEEK_END);
@@ -1678,8 +1683,10 @@ void freerdp_time_zone_detect(TIME_ZONE_INFO* clientTimeZone)
 
 #ifdef HAVE_TM_GMTOFF
 	#if defined(__FreeBSD__)
-		/*not the best solution, but could not get the right tyepcast*/
-		clientTimeZone->bias = 0;
+		if (local_time->tm_gmtoff >= 0)
+			clientTimeZone->bias = (UINT32) (local_time->tm_gmtoff / 60);
+		else
+			clientTimeZone->bias = (UINT32) (1440 + (INT32) (local_time->tm_gmtoff / 60));
 	#else
 		clientTimeZone->bias = timezone / 60;
 	#endif
-- 
2.4.1