Imported Debian patch 1.6.8p9-2
[debian/sudo] / gettime.c
1 /*
2  * Copyright (c) 2004 Todd C. Miller <Todd.Miller@courtesan.com>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #include <sys/types.h>
18 #include <sys/time.h>
19 #include <time.h>
20 #include <stdio.h>
21
22 #include "config.h"
23 #include <compat.h>
24
25 #ifndef lint
26 static const char rcsid[] = "$Sudo: gettime.c,v 1.1 2004/09/08 15:47:09 millert Exp $";
27 #endif /* lint */
28
29 /*
30  * Get the current time via gettimeofday() for systems with
31  * timespecs in struct stat or, otherwise, using time().
32  * XXX - configure check for gettimeofday() - XXX
33  */
34 int
35 gettime(ts)
36     struct timespec *ts;
37 {
38     int rval;
39 #if defined(HAVE_GETTIMEOFDAY) && (defined(HAVE_ST_MTIM) || defined(HAVE_ST_MTIMESPEC))
40     struct timeval tv;
41
42     rval = gettimeofday(&tv, NULL);
43     ts->tv_sec = tv.tv_sec;
44     ts->tv_nsec = tv.tv_usec * 1000;
45 #else
46     rval = (int)time(&ts->tv_sec);
47     ts->tv_nsec = 0;
48 #endif
49     return (rval);
50 }