1*c9945492SAndroid Build Coastguard Worker #include "time32.h" 2*c9945492SAndroid Build Coastguard Worker #include <sys/timeb.h> 3*c9945492SAndroid Build Coastguard Worker #include <errno.h> 4*c9945492SAndroid Build Coastguard Worker #include <stdint.h> 5*c9945492SAndroid Build Coastguard Worker 6*c9945492SAndroid Build Coastguard Worker struct timeb32 { 7*c9945492SAndroid Build Coastguard Worker int32_t time; 8*c9945492SAndroid Build Coastguard Worker unsigned short millitm; 9*c9945492SAndroid Build Coastguard Worker short timezone, dstflag; 10*c9945492SAndroid Build Coastguard Worker }; 11*c9945492SAndroid Build Coastguard Worker __ftime32(struct timeb32 * tp)12*c9945492SAndroid Build Coastguard Workerint __ftime32(struct timeb32 *tp) 13*c9945492SAndroid Build Coastguard Worker { 14*c9945492SAndroid Build Coastguard Worker struct timeb tb; 15*c9945492SAndroid Build Coastguard Worker if (ftime(&tb) < 0) return -1; 16*c9945492SAndroid Build Coastguard Worker if (tb.time < INT32_MIN || tb.time > INT32_MAX) { 17*c9945492SAndroid Build Coastguard Worker errno = EOVERFLOW; 18*c9945492SAndroid Build Coastguard Worker return -1; 19*c9945492SAndroid Build Coastguard Worker } 20*c9945492SAndroid Build Coastguard Worker tp->time = tb.time; 21*c9945492SAndroid Build Coastguard Worker tp->millitm = tb.millitm; 22*c9945492SAndroid Build Coastguard Worker tp->timezone = tb.timezone; 23*c9945492SAndroid Build Coastguard Worker tp->dstflag = tb.dstflag; 24*c9945492SAndroid Build Coastguard Worker return 0; 25*c9945492SAndroid Build Coastguard Worker } 26