aboutsummaryrefslogtreecommitdiff
path: root/x11/mate-panel
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-01-07 00:28:09 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-01-16 19:04:46 +0000
commitca9de74ce4b13b979ea5f24c88c111a2f9b24dfa (patch)
tree992f9833e9b9223083bc8b7d210bdf93b174148b /x11/mate-panel
parent2ee331de68c3dc27d8284264a549cfa207790808 (diff)
downloadports-ca9de74ce4b13b979ea5f24c88c111a2f9b24dfa.tar.gz
ports-ca9de74ce4b13b979ea5f24c88c111a2f9b24dfa.zip
x11/mate-panel: fix build with clang 15
During an exp-run for llvm 15 (see bug 265425), it turned out that x11/mate-panel failed to build with clang 15: clock-location.c:454:22: error: incompatible pointer to integer conversion assigning to 'glong' (aka 'long') from 'char *(int, int)' [-Wint-conversion] sys_timezone = timezone; ^ ~~~~~~~~ clock-location.c:462:24: error: incompatible pointer to integer conversion assigning to 'glong' (aka 'long') from 'char *(int, int)' [-Wint-conversion] local_timezone = timezone; ^ ~~~~~~~~ This is because 'timezone' as a global external variable does not exist on FreeBSD: it is a glibc-ism. Use struct tm's tm_gmtoff field instead, which has its sign reversed from the glibc global. There is also no need to manually account for DST, as tm_gmtoff includes that. PR: 268795 Approved by: portmgr (tcberner) MFH: 2023Q1
Diffstat (limited to 'x11/mate-panel')
-rw-r--r--x11/mate-panel/files/patch-applets_clock_clock-location.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/x11/mate-panel/files/patch-applets_clock_clock-location.c b/x11/mate-panel/files/patch-applets_clock_clock-location.c
new file mode 100644
index 000000000000..5f784e380463
--- /dev/null
+++ b/x11/mate-panel/files/patch-applets_clock_clock-location.c
@@ -0,0 +1,30 @@
+--- applets/clock/clock-location.c.orig 2022-01-26 15:27:16 UTC
++++ applets/clock/clock-location.c
+@@ -451,19 +451,27 @@ clock_location_get_offset (ClockLocation *loc)
+
+ unsetenv ("TZ");
+ tm = localtime (&t);
++#ifdef __FreeBSD__
++ sys_timezone = -tm->tm_gmtoff;
++#else
+ sys_timezone = timezone;
+
+ if (tm->tm_isdst > 0) {
+ sys_timezone -= 3600;
+ }
++#endif
+
+ setenv ("TZ", priv->timezone, 1);
+ tm = localtime (&t);
++#ifdef __FreeBSD__
++ local_timezone = -tm->tm_gmtoff;
++#else
+ local_timezone = timezone;
+
+ if (tm->tm_isdst > 0) {
+ local_timezone -= 3600;
+ }
++#endif
+
+ offset = local_timezone - sys_timezone;
+