X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=psis%2Ftime.psi;fp=psis%2Ftime.psi;h=e49118545a9fae248e10e3b15d54b1729cfa884a;hb=6a8a77b52b636041de54d1022016b4f2aa510c05;hp=0000000000000000000000000000000000000000;hpb=596f215b67dd267284df4fe0e11f0ca4d197bfc1;p=m6w6%2Fext-psi diff --git a/psis/time.psi b/psis/time.psi new file mode 100644 index 0000000..e491185 --- /dev/null +++ b/psis/time.psi @@ -0,0 +1,81 @@ +extern int gettimeofday(struct timeval *tv, struct timezone *tz); +function psi\gettimeofday(array &$tv = NULL, array &$tz = NULL) : int { + let tv = calloc(1, struct timeval); + let tz = calloc(1, struct timezone); + return to_int(gettimeofday); + set $tv = to_array(*tv, + to_int(tv_sec), + to_int(tv_usec)); + set $tz = to_array(*tz, + to_int(tz_minuteswest), + to_int(tz_dsttime)); +} + +extern char *asctime(struct tm *tm); +function psi\asctime(array $tm = NULL) : string { + let tm = arrval($tm); + return to_string(asctime); +} + +extern char *asctime_r(struct tm *tm, char *buf); +function psi\asctime_r(array $tm = NULL) : string { + let tm = arrval($tm); + let buf = calloc(32, char); + return to_string(asctime_r); +} + +extern struct tm *gmtime(time_t *tp); +function psi\gmtime(int $ts) : array { + let tp = &intval($ts); + return to_array(*gmtime, + to_int(tm_sec), + to_int(tm_min), + to_int(tm_hour), + to_int(tm_mday), + to_int(tm_mon), + to_int(tm_year), + to_int(tm_wday), + to_int(tm_yday), + to_int(tm_isdst) + ); +} + +extern struct tm *gmtime_r(time_t *tp, struct tm *buf); +function psi\gmtime_r(int $ts) : array { + let tp = &intval($ts); + let buf = calloc(1, struct tm); + return to_array(*gmtime_r, + to_int(tm_sec), + to_int(tm_min), + to_int(tm_hour), + to_int(tm_mday), + to_int(tm_mon), + to_int(tm_year), + to_int(tm_wday), + to_int(tm_yday), + to_int(tm_isdst) + ); +} + +extern int nanosleep(struct timespec *rqtp, struct timespec *rmtp); +function psi\nanosleep(array $rq = NULL, array &$rm = NULL) : int { + let rqtp = arrval($rq); + let rmtp = calloc(1, struct timespec); + return to_int(nanosleep); + set $rm = to_array(*rmtp, + to_int(tv_sec), + to_int(tv_nsec) + ); +} + +extern clock_t times(struct tms *buf); +function psi\times(array &$tms = NULL) : int { + let buf = calloc(1, struct tms); + return to_int(times); + set $tms = to_array(*buf, + to_int(tms_utime), + to_int(tms_stime), + to_int(tms_cutime), + to_int(tms_cstime) + ); +}