Use util/mklink.pl instead of util/mklink.sh.
[openssl.git] / crypto / tmdiff.c
index b93799fc033e3f3eaf17966ce794406ff4b29e0d..593a21d3ef0801cb2a7fa6fc549f146975ecdea7 100644 (file)
  */
 #include <stdio.h>
 #include <stdlib.h>
+#include "cryptlib.h"
+#include <openssl/tmdiff.h>
+
+#ifdef TIMEB
+#undef WIN32
+#undef TIMES
+#endif
 
 #ifndef MSDOS
 #  ifndef WIN32
-#  define TIMES
+#    define TIMES
 #  endif
 #endif
 
@@ -82,7 +89,8 @@
                }
 #endif /* VMS */
 
-#ifdef sun
+#if defined(sun) || defined(__ultrix)
+#define _POSIX_SOURCE
 #include <limits.h>
 #include <sys/param.h>
 #endif
@@ -126,11 +134,11 @@ typedef struct ms_tm
 #endif
        } MS_TM;
 
-char *ms_time_init()
+char *ms_time_new(void)
        {
        MS_TM *ret;
 
-       ret=malloc(sizeof(MS_TM));
+       ret=(MS_TM *)Malloc(sizeof(MS_TM));
        if (ret == NULL)
                return(NULL);
        memset(ret,0,sizeof(MS_TM));
@@ -140,34 +148,31 @@ char *ms_time_init()
        return((char *)ret);
        }
 
-void ms_time_final(a)
-char *a;
+void ms_time_free(char *a)
        {
        if (a != NULL)
-               free(a);
+               Free(a);
        }
 
-void ms_time_get(a)
-char *a;
+void ms_time_get(char *a)
        {
        MS_TM *tm=(MS_TM *)a;
-    FILETIME tmpa,tmpb,tmpc;
+#ifdef WIN32
+       FILETIME tmpa,tmpb,tmpc;
+#endif
 
 #ifdef TIMES
-    printf("AAA\n");
        times(&tm->ms_tms);
 #else
 #  ifdef WIN32
        GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32));
 #  else
-    printf("CCC\n");
-       ftime(tm->ms_timeb);
+       ftime(&tm->ms_timeb);
 #  endif
 #endif
        }
 
-double ms_time_diff(ap,bp)
-char *ap,*bp;
+double ms_time_diff(char *ap, char *bp)
        {
        MS_TM *a=(MS_TM *)ap;
        MS_TM *b=(MS_TM *)bp;
@@ -177,19 +182,26 @@ char *ap,*bp;
        ret=(b->ms_tms.tms_utime-a->ms_tms.tms_utime)/HZ;
 #else
 # ifdef WIN32
-       ret =(double)(b->ms_win32.dwHighDateTime&0x000fffff)*10+
-               b->ms_win32.dwLowDateTime/1e7;
-       ret-=(double)(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7;
+       {
+       signed _int64 la,lb;
+       la=a->ms_win32.dwHighDateTime;
+       lb=b->ms_win32.dwHighDateTime;
+       la<<=32;
+       lb<<=32;
+       la+=a->ms_win32.dwLowDateTime;
+       lb+=b->ms_win32.dwLowDateTime;
+       ret=((double)(lb-la))/1e7;
+       }
 # else
-       ret=     (double)(b->time-a->time)+
-               ((double)((unsigned long)b->mullitm-(unsigned long)))/1000.0;
+       ret=     (double)(b->ms_timeb.time-a->ms_timeb.time)+
+               (((double)b->ms_timeb.millitm)-
+               ((double)a->ms_timeb.millitm))/1000.0;
 #  endif
 #endif
        return((ret < 0.0000001)?0.0000001:ret);
        }
 
-int ms_time_cmp(ap,bp)
-char *ap,*bp;
+int ms_time_cmp(char *ap, char *bp)
        {
        MS_TM *a=(MS_TM *)ap,*b=(MS_TM *)bp;
        double d;
@@ -202,8 +214,8 @@ char *ap,*bp;
        d =(b->ms_win32.dwHighDateTime&0x000fffff)*10+b->ms_win32.dwLowDateTime/1e7;
        d-=(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7;
 # else
-       d=       (double)(b->time-a->time)+
-               ((double)((unsigned long)b->mullitm-(unsigned long)))/1000.0;
+       d=       (double)(b->ms_timeb.time-a->ms_timeb.time)+
+               (((double)b->ms_timeb.millitm)-(double)a->ms_timeb.millitm)/1000.0;
 #  endif
 #endif
        if (d == 0.0)