GETTIMEOFDAY(2)

NAME
gettimeofday, settimeofday - get / set time

SYNOPSIS
#include <sys/types.h>
#include <unistd.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv , const struct timezone *tz);

DESCRIPTION
gettimeofday and settimeofday can set the time as well as a timezone. tv is a timeval struct, as specififed in /usr/include/sys/time.h:

struct timeval {
long	tv_sec;		/* seconds */
long	tv_usec;	/* microseconds */
};

and tz is a timezone :

struct timezone {
int	tz_minuteswest;
/* minutes west of Greenwich */
int	tz_dsttime;
/* type of dst correction */
};

With daylight savings times defined as follows :

DST_NONE /* not on dst */
DST_USA /* USA style dst */
DST_AUST /* Australian style dst */
DST_WET /* Western European dst */
DST_MET /* Middle European dst */
DST_EET /* Eastern European dst */
DST_CAN /* Canada */
DST_GB /* Great Britain and Eire */
DST_RUM /* Rumania */
DST_TUR /* Turkey */
DST_AUSTALT /* Australian style with shift in 1986 */

And the following macros are defined to operate on this :
#define FD_SET(fd,fdsetp)	(*(fdsetp) |= (1 << (fd)))
#define FD_CLR(fd,fdsetp)	(*(fdsetp) &= ~(1 << (fd)))
#define FD_ISSET(fd,fdsetp)	((*(fdsetp) >> fd) & 1)
#define FD_ZERO(fdsetp)		(*(fdsetp) = 0)
#define	timerisset(tvp)\
((tvp)->tv_sec || (tvp)->tv_usec)
#define	timercmp(tvp, uvp, cmp)\
((tvp)->tv_sec cmp (uvp)->tv_sec ||\
(tvp)->tv_sec == (uvp)->tv_sec &&\
(tvp)->tv_usec cmp (uvp)->tv_usec)
#define timerclear(tvp)
((tvp)->tv_sec = (tvp)->tv_usec = 0)

Only the super user is permitted to use settime(). If either tv or tz is null, then it is not set.

ERRORS

EPERM
    settimeofday is called by someone other than the superuser.

EINVAL
    Timezone (or something else) is invalid.

CONFORMING TO
BSD 4.3

SEE ALSO
ftime(3), time(2), date(1), ctime(3)