#include "db_config.h"
#include "db_int.h"
struct tm *
localtime(tod)
const time_t *tod;
{
JulianType jt;
boolean is_ds;
time_t tt;
int increment;
is_ds = 0;
tt = *tod - BREW_EPOCH_OFFSET + LOCALTIMEOFFSET(&is_ds);
GETJULIANDATE(tt, &jt);
DB_GLOBAL(ltm).tm_sec = jt.wSecond;
DB_GLOBAL(ltm).tm_min = jt.wMinute;
DB_GLOBAL(ltm).tm_hour = jt.wHour;
DB_GLOBAL(ltm).tm_mday = jt.wDay;
DB_GLOBAL(ltm).tm_mon = jt.wMonth - 1;
DB_GLOBAL(ltm).tm_year = jt.wYear - 1900;
DB_GLOBAL(ltm).tm_wday = (jt.wWeekDay + 1) % 7;
switch (DB_GLOBAL(ltm).tm_mon) {
default:
case 0: increment = 0; break;
case 1: increment = 31; break;
case 2: increment = 59; break;
case 3: increment = 90; break;
case 4: increment = 120; break;
case 5: increment = 151; break;
case 6: increment = 181; break;
case 7: increment = 212; break;
case 8: increment = 243; break;
case 9: increment = 273; break;
case 10: increment = 304; break;
case 11: increment = 334; break;
}
DB_GLOBAL(ltm).tm_yday = increment + DB_GLOBAL(ltm).tm_mday - 1;
if (DB_GLOBAL(ltm).tm_mon > 1 &&
jt.wYear % 4 == 0 && (jt.wYear % 100 != 0 || jt.wYear % 400 == 0))
DB_GLOBAL(ltm).tm_yday += 1;
DB_GLOBAL(ltm).tm_isdst = is_ds;
return (&DB_GLOBAL(ltm));
}