about summary refs log tree commit diff
path: root/compat/time32/gettimeofday_time32.c
blob: 1f3ce68e3e66535f2f92654d85007b709501a87a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "time32.h"
#include <sys/time.h>
#include <errno.h>
#include <stdint.h>

int __gettimeofday_time32(struct timeval32 *tv32, void *tz)
{
	struct timeval tv;
	if (!tv32) return 0;
	int r = gettimeofday(&tv, 0);
	if (r) return r;
	if (tv.tv_sec < INT32_MIN || tv.tv_sec > INT32_MAX) {
		errno = EOVERFLOW;
		return -1;
	}
	tv32->tv_sec = tv.tv_sec;
	tv32->tv_usec = tv.tv_usec;
	return 0;
}