#include #include #include /* Compile this into a shared object: gcc -maix64 -shared -Wl,-b64,-brtl,-G datetots.c -o datetots.so cc -q64 -qmkshrobj -Wl,-b64,-brtl,-G datetots.c -o datetots.so */ /* Parameters: datetots( date, time ) date = yyyymmdd time = hhmm Returns timestamp as a long */ long datetots( char *cdate, char *ctime ) { struct tm *dt; int curr_isdst; int date_isdst; time_t ts; /* What's the ISDST at the moment? */ ts = time( NULL ); dt = localtime( &ts ); curr_isdst = dt->tm_isdst; long sdate = atol(cdate); long stime = atol(ctime); /* Set values in tm struct */ dt->tm_year = (sdate / 10000) - 1900; sdate = sdate % 10000; dt->tm_mon = (sdate / 100) - 1; dt->tm_mday = sdate % 100; dt->tm_hour = stime / 10000; stime = stime % 10000; dt->tm_min = stime / 100; dt->tm_sec = stime % 100; ts = mktime(dt); /* Now compensate for whatever has happened to ISDST */ date_isdst = dt->tm_isdst; ts = ts + ((date_isdst - curr_isdst) * 3600); return ( ts ); }