xref: /freebsd/libexec/bootpd/tzone.c (revision 17ee9d00bc1ae1e598c38f25826f861e4bc6c3ce)
1 /*
2  * tzone.c - get the timezone
3  *
4  * This is shared by bootpd and bootpef
5  */
6 
7 #ifdef	SVR4
8 /* XXX - Is this really SunOS specific? -gwr */
9 /* This is in <time.h> but only visible if (__STDC__ == 1). */
10 extern long timezone;
11 #else /* SVR4 */
12 /* BSD or SunOS */
13 # include <sys/time.h>
14 # include <syslog.h>
15 #endif /* SVR4 */
16 
17 #include "bptypes.h"
18 #include "report.h"
19 #include "tzone.h"
20 
21 /* This is what other modules use. */
22 int32 secondswest;
23 
24 /*
25  * Get our timezone offset so we can give it to clients if the
26  * configuration file doesn't specify one.
27  */
28 void
29 tzone_init()
30 {
31 #ifdef	SVR4
32 	/* XXX - Is this really SunOS specific? -gwr */
33 	secondswest = timezone;
34 #else /* SVR4 */
35 	struct timezone tzp;		/* Time zone offset for clients */
36 	struct timeval tp;			/* Time (extra baggage) */
37 	if (gettimeofday(&tp, &tzp) < 0) {
38 		secondswest = 0;		/* Assume GMT for lack of anything better */
39 		report(LOG_ERR, "gettimeofday: %s", get_errmsg());
40 	} else {
41 		secondswest = 60L * tzp.tz_minuteswest;	/* Convert to seconds */
42 	}
43 #endif /* SVR4 */
44 }
45