1/***********************************************************************
2*                                                                      *
3*               This software is part of the ast package               *
4*          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5*                      and is licensed under the                       *
6*                 Eclipse Public License, Version 1.0                  *
7*                    by AT&T Intellectual Property                     *
8*                                                                      *
9*                A copy of the License is available at                 *
10*          http://www.eclipse.org/org/documents/epl-v10.html           *
11*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12*                                                                      *
13*              Information and Software Systems Research               *
14*                            AT&T Research                             *
15*                           Florham Park NJ                            *
16*                                                                      *
17*                 Glenn Fowler <gsf@research.att.com>                  *
18*                  David Korn <dgk@research.att.com>                   *
19*                   Phong Vo <kpv@research.att.com>                    *
20*                                                                      *
21***********************************************************************/
22#pragma prototyped
23
24#include <tv.h>
25#include <tm.h>
26#include <errno.h>
27
28#include "FEATURE/tvlib"
29
30int
31tvsettime(const Tv_t* tv)
32{
33
34#if _lib_clock_settime && defined(CLOCK_REALTIME)
35
36	struct timespec			s;
37
38	s.tv_sec = tv->tv_sec;
39	s.tv_nsec = tv->tv_nsec;
40	return clock_settime(CLOCK_REALTIME, &s);
41
42#else
43
44#if defined(tmsettimeofday)
45
46	struct timeval			v;
47
48	v.tv_sec = tv->tv_sec;
49	v.tv_usec = tv->tv_nsec / 1000;
50	return tmsettimeofday(&v);
51
52#else
53
54#if _lib_stime
55
56	static time_t			s;
57
58	s = tv->tv_sec + (tv->tv_nsec != 0);
59	return stime(s);
60
61#else
62
63	errno = EPERM;
64	return -1;
65
66#endif
67
68#endif
69
70#endif
71
72}
73