Lines Matching refs:tm
30 static const char *imap_parse_date_internal(const char *str, struct tm *tm)
37 i_zero(tm);
51 tm->tm_mday = (str[0]-'0');
55 tm->tm_mday = (tm->tm_mday * 10) + (str[1]-'0');
62 tm->tm_mon = i;
75 tm->tm_year = (str[0]-'0') * 1000 + (str[1]-'0') * 100 +
82 static bool imap_mktime(struct tm *tm, time_t *time_r)
84 *time_r = utc_mktime(tm);
91 if (tm->tm_year <= 100) {
110 struct tm tm;
112 str = imap_parse_date_internal(str, &tm);
116 tm.tm_isdst = -1;
117 (void)imap_mktime(&tm, timestamp_r);
124 struct tm tm;
126 str = imap_parse_date_internal(str, &tm);
137 tm.tm_hour = (str[0]-'0') * 10 + (str[1]-'0');
143 tm.tm_min = (str[0]-'0') * 10 + (str[1]-'0');
149 tm.tm_sec = (str[0]-'0') * 10 + (str[1]-'0');
155 tm.tm_isdst = -1;
156 if (imap_mktime(&tm, timestamp_r))
161 static void imap_to_date_tm(char buf[11], const struct tm *tm)
166 buf[0] = (tm->tm_mday / 10) + '0';
167 buf[1] = (tm->tm_mday % 10) + '0';
169 memcpy(buf+3, month_names[tm->tm_mon], 3);
173 year = tm->tm_year + 1900;
181 imap_to_datetime_tm(const struct tm *tm, int timezone_offset)
187 imap_to_date_tm(buf, tm);
191 buf[12] = (tm->tm_hour / 10) + '0';
192 buf[13] = (tm->tm_hour % 10) + '0';
194 buf[15] = (tm->tm_min / 10) + '0';
195 buf[16] = (tm->tm_min % 10) + '0';
197 buf[18] = (tm->tm_sec / 10) + '0';
198 buf[19] = (tm->tm_sec % 10) + '0';
219 struct tm *tm;
222 tm = localtime(×tamp);
223 timezone_offset = utc_offset(tm, timestamp);
224 return imap_to_datetime_tm(tm, timezone_offset);
229 const struct tm *tm;
232 tm = gmtime(&adjusted);
233 return imap_to_datetime_tm(tm, timezone_offset);
238 const struct tm *tm;
241 tm = localtime(×tamp);
244 imap_to_date_tm(buf, tm);
246 return tm->tm_hour == 0 && tm->tm_min == 0 && tm->tm_sec == 0;