__tm_to_secs.c raw

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