Index: fusl/src/time/__tm_to_secs.c |
diff --git a/fusl/src/time/__tm_to_secs.c b/fusl/src/time/__tm_to_secs.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c29fa985a6dd58fdffa9190e995d993b9e4c4427 |
--- /dev/null |
+++ b/fusl/src/time/__tm_to_secs.c |
@@ -0,0 +1,24 @@ |
+#include "time_impl.h" |
+ |
+long long __tm_to_secs(const struct tm *tm) |
+{ |
+ int is_leap; |
+ long long year = tm->tm_year; |
+ int month = tm->tm_mon; |
+ if (month >= 12 || month < 0) { |
+ int adj = month / 12; |
+ month %= 12; |
+ if (month < 0) { |
+ adj--; |
+ month += 12; |
+ } |
+ year += adj; |
+ } |
+ long long t = __year_to_secs(year, &is_leap); |
+ t += __month_to_secs(month, is_leap); |
+ t += 86400LL * (tm->tm_mday-1); |
+ t += 3600LL * tm->tm_hour; |
+ t += 60LL * tm->tm_min; |
+ t += tm->tm_sec; |
+ return t; |
+} |