[Evolution-hackers] FreeBSD7 timezone symbol incompatibility - widgets/e-timezone-dialog/e-timezone-dialog.c
- From: Roman Rybalko <evolution-hackers romanr info>
- To: evolution-hackers gnome org
- Cc: evolution-patches gnome org
- Subject: [Evolution-hackers] FreeBSD7 timezone symbol incompatibility - widgets/e-timezone-dialog/e-timezone-dialog.c
- Date: Wed, 24 Sep 2008 18:54:20 +0400
Hi All,
uname -a
FreeBSD roma.home 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24
19:59:52 UTC 2008
root logan cse buffalo edu:/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
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;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]