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

int __timespec_get_time32(struct timespec32 *ts32, int base)
{
	struct timespec ts;
	int r = timespec_get(&ts, base);
	if (!r) return r;
	if (ts.tv_sec < INT32_MIN || ts.tv_sec > INT32_MAX) {
		errno = EOVERFLOW;
		return 0;
	}
	ts32->tv_sec = ts.tv_sec;
	ts32->tv_nsec = ts.tv_nsec;
	return r;
}