-rw-r--r-- | libopie/pim/otimezone.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libopie/pim/otimezone.cpp b/libopie/pim/otimezone.cpp index b2bd3aa..34659c3 100644 --- a/libopie/pim/otimezone.cpp +++ b/libopie/pim/otimezone.cpp | |||
@@ -7,55 +7,64 @@ | |||
7 | 7 | ||
8 | namespace { | 8 | namespace { |
9 | 9 | ||
10 | QDateTime utcTime( time_t t) { | 10 | QDateTime utcTime( time_t t) { |
11 | tm* broken = ::gmtime( &t ); | 11 | tm* broken = ::gmtime( &t ); |
12 | QDateTime ret; | 12 | QDateTime ret; |
13 | ret.setDate( QDate( broken->tm_year + 1900, broken->tm_mon +1, broken->tm_mday ) ); | 13 | ret.setDate( QDate( broken->tm_year + 1900, broken->tm_mon +1, broken->tm_mday ) ); |
14 | ret.setTime( QTime( broken->tm_hour, broken->tm_min, broken->tm_sec ) ); | 14 | ret.setTime( QTime( broken->tm_hour, broken->tm_min, broken->tm_sec ) ); |
15 | return ret; | 15 | return ret; |
16 | } | 16 | } |
17 | QDateTime utcTime( time_t t, const QString& zone) { | 17 | QDateTime utcTime( time_t t, const QString& zone) { |
18 | QCString org = ::getenv( "TZ" ); | 18 | QCString org = ::getenv( "TZ" ); |
19 | #ifndef Q_OS_MACX // Following line causes bus errors on Mac | ||
19 | ::setenv( "TZ", zone.latin1(), true ); | 20 | ::setenv( "TZ", zone.latin1(), true ); |
20 | ::tzset(); | 21 | ::tzset(); |
21 | 22 | ||
22 | tm* broken = ::localtime( &t ); | 23 | tm* broken = ::localtime( &t ); |
23 | ::setenv( "TZ", org, true ); | 24 | ::setenv( "TZ", org, true ); |
25 | #else | ||
26 | #warning "Need a replacement for MacOSX!!" | ||
27 | tm* broken = ::localtime( &t ); | ||
28 | #endif | ||
24 | 29 | ||
25 | QDateTime ret; | 30 | QDateTime ret; |
26 | ret.setDate( QDate( broken->tm_year + 1900, broken->tm_mon +1, broken->tm_mday ) ); | 31 | ret.setDate( QDate( broken->tm_year + 1900, broken->tm_mon +1, broken->tm_mday ) ); |
27 | ret.setTime( QTime( broken->tm_hour, broken->tm_min, broken->tm_sec ) ); | 32 | ret.setTime( QTime( broken->tm_hour, broken->tm_min, broken->tm_sec ) ); |
28 | 33 | ||
29 | return ret; | 34 | return ret; |
30 | } | 35 | } |
31 | time_t to_Time_t( const QDateTime& utc, const QString& str ) { | 36 | time_t to_Time_t( const QDateTime& utc, const QString& str ) { |
32 | QDate d = utc.date(); | 37 | QDate d = utc.date(); |
33 | QTime t = utc.time(); | 38 | QTime t = utc.time(); |
34 | 39 | ||
35 | tm broken; | 40 | tm broken; |
36 | broken.tm_year = d.year() - 1900; | 41 | broken.tm_year = d.year() - 1900; |
37 | broken.tm_mon = d.month() - 1; | 42 | broken.tm_mon = d.month() - 1; |
38 | broken.tm_mday = d.day(); | 43 | broken.tm_mday = d.day(); |
39 | broken.tm_hour = t.hour(); | 44 | broken.tm_hour = t.hour(); |
40 | broken.tm_min = t.minute(); | 45 | broken.tm_min = t.minute(); |
41 | broken.tm_sec = t.second(); | 46 | broken.tm_sec = t.second(); |
42 | 47 | ||
43 | QCString org = ::getenv( "TZ" ); | 48 | QCString org = ::getenv( "TZ" ); |
49 | #ifndef Q_OS_MACX // Following line causes bus errors on Mac | ||
44 | ::setenv( "TZ", str.latin1(), true ); | 50 | ::setenv( "TZ", str.latin1(), true ); |
45 | ::tzset(); | 51 | ::tzset(); |
46 | 52 | ||
47 | time_t ti = ::mktime( &broken ); | 53 | time_t ti = ::mktime( &broken ); |
48 | ::setenv( "TZ", org, true ); | 54 | ::setenv( "TZ", org, true ); |
49 | 55 | #else | |
56 | #warning "Need a replacement for MacOSX!!" | ||
57 | time_t ti = ::mktime( &broken ); | ||
58 | #endif | ||
50 | return ti; | 59 | return ti; |
51 | } | 60 | } |
52 | } | 61 | } |
53 | OTimeZone::OTimeZone( const ZoneName& zone ) | 62 | OTimeZone::OTimeZone( const ZoneName& zone ) |
54 | : m_name(zone) { | 63 | : m_name(zone) { |
55 | } | 64 | } |
56 | OTimeZone::~OTimeZone() { | 65 | OTimeZone::~OTimeZone() { |
57 | } | 66 | } |
58 | 67 | ||
59 | bool OTimeZone::isValid()const { | 68 | bool OTimeZone::isValid()const { |
60 | return !m_name.isEmpty(); | 69 | return !m_name.isEmpty(); |
61 | } | 70 | } |