Blame src/lib/libast/tm/tvsettime.c
|
Packit |
992a25 |
/***********************************************************************
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* This software is part of the ast package *
|
|
Packit |
992a25 |
* Copyright (c) 1985-2011 AT&T Intellectual Property *
|
|
Packit |
992a25 |
* and is licensed under the *
|
|
Packit |
992a25 |
* Eclipse Public License, Version 1.0 *
|
|
Packit |
992a25 |
* by AT&T Intellectual Property *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* A copy of the License is available at *
|
|
Packit |
992a25 |
* http://www.eclipse.org/org/documents/epl-v10.html *
|
|
Packit |
992a25 |
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Information and Software Systems Research *
|
|
Packit |
992a25 |
* AT&T Research *
|
|
Packit |
992a25 |
* Florham Park NJ *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Glenn Fowler <gsf@research.att.com> *
|
|
Packit |
992a25 |
* David Korn <dgk@research.att.com> *
|
|
Packit |
992a25 |
* Phong Vo <kpv@research.att.com> *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
***********************************************************************/
|
|
Packit |
992a25 |
#pragma prototyped
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#include <tv.h>
|
|
Packit |
992a25 |
#include <tm.h>
|
|
Packit |
992a25 |
#include <errno.h>
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#include "FEATURE/tvlib"
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
tvsettime(const Tv_t* tv)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if _lib_clock_settime && defined(CLOCK_REALTIME)
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
struct timespec s;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
s.tv_sec = tv->tv_sec;
|
|
Packit |
992a25 |
s.tv_nsec = tv->tv_nsec;
|
|
Packit |
992a25 |
return clock_settime(CLOCK_REALTIME, &s);
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if defined(tmsettimeofday)
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
struct timeval v;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
v.tv_sec = tv->tv_sec;
|
|
Packit |
992a25 |
v.tv_usec = tv->tv_nsec / 1000;
|
|
Packit |
992a25 |
return tmsettimeofday(&v);
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if _lib_stime
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
static time_t s;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
s = tv->tv_sec + (tv->tv_nsec != 0);
|
|
Packit |
992a25 |
return stime(s);
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
errno = EPERM;
|
|
Packit |
992a25 |
return -1;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
}
|