aboutsummaryrefslogblamecommitdiffstats
path: root/timespec2timeval.c
blob: 282f7942767545d09600ca2f9a5b8f1a047aab59 (plain) (tree)
1
2
3
4
5
6




                                                         
                                                                                                           
















                                                      
/* See LICENSE file for copyright and license details. */
#include "libsimple.h"


int
libsimple_timespec2timeval(struct timeval *restrict tv, const struct timespec *restrict ts) /* TODO test */
{
        tv->tv_sec = ts->tv_sec;
        tv->tv_usec = ts->tv_nsec / 1000L;
        if ((ts->tv_nsec % 1000L) >= 500L) {
                if (++(tv->tv_usec) == 1000000L) {
                        tv->tv_usec = 0;
                        if (tv->tv_sec == TIME_MAX) {
                                tv->tv_usec = 999999L;
                                errno = EOVERFLOW;
                                return -1;
                        } else {
                                tv->tv_sec += 1;
                        }
                }
        }
        return 0;
}