FreeBSD7 timezone symbol incompatibility - widgets/e-timezone-dialog/e-timezone-dialog.c
Roman Rybalko <[email protected]> Wed, 24 Sep 2008 18:54:20 +0400
| Newsgroups | gmane.comp.gnome.evolution.patches,gmane.comp.gnome.evolution.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi All, uname -a FreeBSD roma.home 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008 [email protected]:/usr/obj/usr/src/sys/GENERIC i386 I can't compile the subj because I have another "timezone" symbol: char * timezone(int zone, int dst); but in widgets/e-timezone-dialog/e-timezone-dialog.c is such code: #ifndef G_OS_WIN32 /* Declared properly in time.h already */ extern char *tzname[2]; extern long timezone; extern int daylight; #endif I see this is defined correctly on Linux but it is not on FreeBSD. I've attached my patch. Though there is probably need something to do with win32, because I don't know whether there is localtime_r and gmtime_r -- WBR, Roman Rybalko _______________________________________________ Evolution-patches mailing list [email protected] http://mail.gnome.org/mailman/listinfo/evolution-patches
timezone-freebsd7-fix.patch
(text/x-patch, 1 KB)
Index: widgets/e-timezone-dialog/e-timezone-dialog.c
===================================================================
--- widgets/e-timezone-dialog/e-timezone-dialog.c (revision 36416)
+++ widgets/e-timezone-dialog/e-timezone-dialog.c (working copy)
@@ -77,8 +77,6 @@
#ifndef G_OS_WIN32 /* Declared properly in time.h already */
extern char *tzname[2];
-extern long timezone;
-extern int daylight;
#endif
static void e_timezone_dialog_class_init (ETimezoneDialogClass *class);
@@ -351,9 +349,16 @@
get_local_timezone(void)
{
icaltimezone *zone;
+
+ long tzoffset;
+ time_t cur = 0; // imagine now is January the 1st 1970
+ struct tm local, gm;
+
+ localtime_r(&cur, &local); // calls tzset()
+ gmtime_r(&cur, &gm);
+ tzoffset = (local.tm_hour - gm.tm_hour) * 3600 + (local.tm_min - gm.tm_min) * 60 + (local.tm_sec - gm.tm_sec);
- tzset();
- zone = icaltimezone_get_builtin_timezone_from_offset (-timezone, tzname[0]);
+ zone = icaltimezone_get_builtin_timezone_from_offset (tzoffset, tzname[0]);
return zone;
}