1#include "time_impl.h"
2
3long long __tm_to_secs(const struct tm* tm) {
4    int is_leap;
5    long long year = tm->tm_year;
6    int month = tm->tm_mon;
7    if (month >= 12 || month < 0) {
8        int adj = month / 12;
9        month %= 12;
10        if (month < 0) {
11            adj--;
12            month += 12;
13        }
14        year += adj;
15    }
16    long long t = __year_to_secs(year, &is_leap);
17    t += __month_to_secs(month, is_leap);
18    t += 86400LL * (tm->tm_mday - 1);
19    t += 3600LL * tm->tm_hour;
20    t += 60LL * tm->tm_min;
21    t += tm->tm_sec;
22    return t;
23}
24