diff options
Diffstat (limited to 'src/lib/des425/unix_time.c')
-rw-r--r-- | src/lib/des425/unix_time.c | 96 |
1 files changed, 2 insertions, 94 deletions
diff --git a/src/lib/des425/unix_time.c b/src/lib/des425/unix_time.c index ae7aee4..53ce03b 100644 --- a/src/lib/des425/unix_time.c +++ b/src/lib/des425/unix_time.c @@ -12,7 +12,7 @@ #include "k5-int.h" -#if !defined(_MSDOS) && !defined(_WIN32) +#if !defined(_WIN32) #include <sys/time.h> krb5_ui_4 @@ -27,7 +27,7 @@ unix_time_gmt_unixsec (usecptr) return now.tv_sec; } -#endif /* !_MSDOS && !_WIN32 */ +#endif /* !_WIN32 */ #ifdef _WIN32 #include <time.h> @@ -44,95 +44,3 @@ unix_time_gmt_unixsec (usecptr) return gmt; } #endif /* _WIN32 */ - -#ifdef MSDOS -/* - * Originally written by John Gilmore, Cygnus Support, May '94. - * Public Domain. - */ - -#include <time.h> -#include <sys/timeb.h> -#include <dos.h> -#include <string.h> - -/* - * Due to the fact that DOS time can be unreliable we have reverted - * to using the AT hardware clock and converting it to Unix time. - */ -static long win_time_get_epoch(void); - -krb5_ui_4 -unix_time_gmt_unixsec (usecptr) - krb5_ui_4 *usecptr; -{ - struct tm tm; - union _REGS inregs; /* For calling BIOS */ - union _REGS outregs; - struct _timeb now; - time_t time; - long convert; /* MSC 7.00 bug work around */ - krb5_ui_4 retval; /* What we return */ - - _ftime(&now); /* Daylight savings time */ - - /* Get time from AT hardware clock INT 0x1A, AH=2 */ - memset(&inregs, 0, sizeof(inregs)); - inregs.h.ah = 2; - _int86(0x1a, &inregs, &outregs); - - /* 0x13 = decimal 13, hence the decoding below */ - tm.tm_sec = 10 * ((outregs.h.dh & 0xF0) >> 4) + (outregs.h.dh & 0x0F); - tm.tm_min = 10 * ((outregs.h.cl & 0xF0) >> 4) + (outregs.h.cl & 0x0F); - tm.tm_hour = 10 * ((outregs.h.ch & 0xF0) >> 4) + (outregs.h.ch & 0x0F); - - /* Get date from AT hardware clock INT 0x1A, AH=4 */ - memset(&inregs, 0, sizeof(inregs)); - inregs.h.ah = 4; - _int86(0x1a, &inregs, &outregs); - - tm.tm_mday = 10 * ((outregs.h.dl & 0xF0) >> 4) + (outregs.h.dl & 0x0F); - tm.tm_mon = 10 * ((outregs.h.dh & 0xF0) >> 4) + (outregs.h.dh & 0x0F) - 1; - tm.tm_year = 10 * ((outregs.h.cl & 0xF0) >> 4) + (outregs.h.cl & 0x0F); - tm.tm_year += 100 * ((10 * (outregs.h.ch & 0xF0) >> 4) - + (outregs.h.ch & 0x0F) - 19); - - tm.tm_wday = 0; - tm.tm_yday = 0; - tm.tm_isdst = now.dstflag; - - time = mktime(&tm); - - convert = win_time_get_epoch(); - retval = time + convert; - - if (usecptr) - *usecptr = retval; - - return retval; -} -/* - * This routine figures out the current time epoch and returns the - * conversion factor. It exists because - * Microloss screwed the pooch on the time() and _ftime() calls in - * its release 7.0 libraries. They changed the epoch to Dec 31, 1899! - * Idiots... We try to cope. - */ - -static struct tm jan_1_70 = {0, 0, 0, 1, 0, 70}; -static long epoch = 0; -static int epoch_set = 0; - -static long -win_time_get_epoch() -{ - - if (!epoch_set) { - epoch = 0 - mktime (&jan_1_70); /* Seconds til 1970 localtime */ - epoch += _timezone; /* Seconds til 1970 GMT */ - epoch_set = 1; - } - return epoch; -} - -#endif |