]>
Commit | Line | Data |
---|---|---|
e2fc40b4 VZ |
1 | |
2 | #include <Preferences.h> // Core/System/ | |
3 | #include <DateTime.h> //Core/System/, DateToAscii() etc. | |
4 | #include <TimeMgr.h> //Core/System/, TimGetTicks() | |
5 | ||
6 | #include "wx/defs.h" | |
7 | ||
8 | #if __WXPALMOS6__ | |
9 | void | |
10 | exit (int exitno) | |
11 | { | |
12 | } | |
13 | ||
14 | #else | |
15 | ||
16 | #define SEC_1904_1970 2082844800LU//0x7C25B080 // 0x7C25B080 == 2082844800LU | |
17 | ||
18 | time_t | |
19 | time (time_t *T) | |
20 | { | |
21 | UInt32 sec; | |
22 | // UInt32 TimGetSeconds(void); // seconds since 1/1/1904 | |
23 | // void TimSetSeconds (UInt32 seconds); // seconds since 1/1/1904 | |
24 | // UInt32 TimGetTicks(void); // ticks since power on | |
25 | sec = TimGetSeconds (); | |
26 | if (T) { | |
27 | *T = sec - SEC_1904_1970; | |
28 | } | |
29 | return (sec - SEC_1904_1970); | |
30 | } | |
31 | ||
32 | static struct tm * | |
33 | palmtimet2unixtm (const time_t t, struct tm *ptm) | |
34 | { | |
35 | DateTimeType dt; | |
36 | memset (&dt, 0, sizeof (dt)); | |
37 | memset (ptm, 0, sizeof (*ptm)); | |
38 | TimSecondsToDateTime (t, &dt); | |
39 | ptm->tm_sec = dt.second; | |
40 | ptm->tm_min = dt.minute; | |
41 | ptm->tm_hour = dt.hour; | |
42 | ptm->tm_mday = dt.day; | |
43 | ptm->tm_mon = dt.month; | |
44 | ptm->tm_year = dt.year; | |
45 | ptm->tm_wday = dt.weekDay; | |
46 | ||
47 | //ptm->tm_wday = DayOfWeek (dt.month, dt.day, dt.year); | |
48 | //ptm->tm_mday = DayOfMonth (dt.month, dt.day, dt.year); | |
49 | return ptm; | |
50 | } | |
51 | ||
52 | struct tm * | |
53 | gmtime_r (const time_t *pt, struct tm *ptm) | |
54 | { | |
55 | UInt32 utcTime; | |
56 | Int16 timeZone = PrefGetPreference(prefTimeZone); | |
57 | Int16 daylightSavingAdjustment = PrefGetPreference(prefDaylightSavingAdjustment); | |
58 | ||
59 | if ((NULL == pt) || (NULL == ptm)) { | |
60 | return NULL; | |
61 | } | |
62 | utcTime = TimTimeZoneToUTC (*pt + SEC_1904_1970, timeZone, daylightSavingAdjustment); | |
63 | palmtimet2unixtm (utcTime, ptm); | |
64 | return ptm; | |
65 | } | |
66 | ||
67 | struct tm * | |
68 | localtime_r (const time_t *pt, struct tm *ptm) | |
69 | { | |
70 | UInt32 utcTime; | |
71 | Int16 timeZone = PrefGetPreference(prefTimeZone); | |
72 | Int16 daylightSavingAdjustment = PrefGetPreference(prefDaylightSavingAdjustment); | |
73 | if ((NULL == pt) || (NULL == ptm)) { | |
74 | return NULL; | |
75 | } | |
76 | utcTime = TimUTCToTimeZone (*pt + SEC_1904_1970, timeZone, daylightSavingAdjustment); | |
77 | palmtimet2unixtm (utcTime, ptm); | |
78 | return ptm; | |
79 | } | |
80 | /* | |
81 | static struct tm g_gmtime_info; | |
82 | ||
83 | struct tm * | |
84 | gmtime (const time_t *CLOCK) | |
85 | { | |
86 | if (NULL == CLOCK) { | |
87 | return NULL; | |
88 | } | |
89 | if (NULL == gmtime_r (CLOCK, &g_gmtime_info)) { | |
90 | return NULL; | |
91 | } | |
92 | return &g_gmtime_info; | |
93 | } | |
94 | */ | |
95 | static struct tm g_localtime_info; | |
96 | ||
97 | struct tm * | |
98 | localtime (const time_t *CLOCK) | |
99 | { | |
100 | if (NULL == CLOCK) { | |
101 | return NULL; | |
102 | } | |
103 | if (NULL == localtime_r (CLOCK, &g_localtime_info)) { | |
104 | return NULL; | |
105 | } | |
106 | return &g_localtime_info; | |
107 | } | |
108 | ||
109 | static char * g_strftime_wdayconv[][2] = { | |
110 | {"Sun", "Sunday"}, | |
111 | {"Mon", "Monday"}, | |
112 | {"Tue", "Tuesday"}, | |
113 | {"Wed", "Wednesday"}, | |
114 | {"Thu", "Thursday"}, | |
115 | {"Fri", "Friday"}, | |
116 | {"Sat", "Saturday"}, | |
117 | }; | |
118 | ||
119 | static char * g_strftime_monconv[][2] = { | |
120 | {"Jan", "January"}, | |
121 | {"Feb", "Febuary"}, | |
122 | {"Mar", "March"}, | |
123 | {"Apr", "April"}, | |
124 | {"May", "May"}, | |
125 | {"Jun", "June"}, | |
126 | {"Jul", "July"}, | |
127 | {"Aug", "August"}, | |
128 | {"Sep", "September"}, | |
129 | {"Oct", "October"}, | |
130 | {"Nov", "November"}, | |
131 | {"Dec", "December"}, | |
132 | }; | |
133 | #define SFCONV_ABBR 0 | |
134 | #define SFCONV_FULL 1 | |
135 | ||
136 | size_t | |
137 | strftime (char *buf, size_t sz_buf, const char *fmt, const struct tm *ptm) | |
138 | { | |
139 | char *p; | |
140 | char *pret; | |
141 | if ((timeStringLength > sz_buf) || (strlen (fmt) < 1)) { | |
142 | return 0; | |
143 | } | |
144 | memset (buf, 0, sz_buf); | |
145 | p = fmt; | |
146 | pret = buf; | |
147 | for (; *p != '\0';) { | |
148 | if ('%' == *p) { | |
149 | p ++; | |
150 | if (*p == '\0') { | |
151 | break; | |
152 | } | |
153 |