diff options
Diffstat (limited to 'usr.sbin/bootpd/tzone.c')
-rw-r--r-- | usr.sbin/bootpd/tzone.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/usr.sbin/bootpd/tzone.c b/usr.sbin/bootpd/tzone.c new file mode 100644 index 000000000000..4adc4ae25c63 --- /dev/null +++ b/usr.sbin/bootpd/tzone.c @@ -0,0 +1,44 @@ +/* + * tzone.c - get the timezone + * + * This is shared by bootpd and bootpef + */ + +#ifdef SVR4 +/* XXX - Is this really SunOS specific? -gwr */ +/* This is in <time.h> but only visible if (__STDC__ == 1). */ +extern long timezone; +#else /* SVR4 */ +/* BSD or SunOS */ +# include <sys/time.h> +# include <syslog.h> +#endif /* SVR4 */ + +#include "bptypes.h" +#include "report.h" +#include "tzone.h" + +/* This is what other modules use. */ +int32 secondswest; + +/* + * Get our timezone offset so we can give it to clients if the + * configuration file doesn't specify one. + */ +void +tzone_init() +{ +#ifdef SVR4 + /* XXX - Is this really SunOS specific? -gwr */ + secondswest = timezone; +#else /* SVR4 */ + struct timezone tzp; /* Time zone offset for clients */ + struct timeval tp; /* Time (extra baggage) */ + if (gettimeofday(&tp, &tzp) < 0) { + secondswest = 0; /* Assume GMT for lack of anything better */ + report(LOG_ERR, "gettimeofday: %s", get_errmsg()); + } else { + secondswest = 60L * tzp.tz_minuteswest; /* Convert to seconds */ + } +#endif /* SVR4 */ +} |