Missing #endif
[openssl.git] / crypto / tmdiff.c
index b93799fc033e3f3eaf17966ce794406ff4b29e0d..7ebf2b202a08096ad7d221b7c1ef5a321fae5241 100644 (file)
  */
 #include <stdio.h>
 #include <stdlib.h>
+#include "cryptlib.h"
+#include <openssl/tmdiff.h>
 
-#ifndef MSDOS
-#  ifndef WIN32
-#  define TIMES
-#  endif
+#ifdef TIMEB
+#undef OPENSSL_SYS_WIN32
+#undef TIMES
 #endif
 
-#ifndef VMS
-#  ifndef _IRIX
-#   include <time.h>
-#  endif
-#  ifdef TIMES
-#    include <sys/types.h>
-#    include <sys/times.h>
-#  endif
-#else /* VMS */
-#  include <types.h>
-       struct tms {
-               time_t tms_utime;
-               time_t tms_stime;
-               time_t tms_uchild;      /* I dunno...  */
-               time_t tms_uchildsys;   /* so these names are a guess :-) */
-               }
-#endif /* VMS */
-
-#ifdef sun
+#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_VMS) || defined(__DECC) && !defined(OPENSSL_SYS_MACOSX) && !defined(OPENSSL_SYS_VXWORKS)
+# define TIMES
+#endif
+
+#ifndef _IRIX
+#  include <time.h>
+#endif
+#ifdef TIMES
+#  include <sys/types.h>
+#  include <sys/times.h>
+#endif
+
+/* Depending on the VMS version, the tms structure is perhaps defined.
+   The __TMS macro will show if it was.  If it wasn't defined, we should
+   undefine TIMES, since that tells the rest of the program how things
+   should be handled.                          -- Richard Levitte */
+#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
+#undef TIMES
+#endif
+
+#if defined(sun) || defined(__ultrix)
+#define _POSIX_SOURCE
 #include <limits.h>
 #include <sys/param.h>
 #endif
 
-#ifndef TIMES
+#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS)
 #include <sys/timeb.h>
 #endif
 
-#ifdef WIN32
+#ifdef OPENSSL_SYS_WIN32
 #include <windows.h>
 #endif
 
 #ifndef HZ
 # ifndef CLK_TCK
 #  ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
-#   ifndef VMS
-#    define HZ  100.0
-#   else /* VMS */
-#    define HZ  100.0
-#   endif
+#   define HZ  100.0
 #  else /* _BSD_CLK_TCK_ */
 #   define HZ ((double)_BSD_CLK_TCK_)
 #  endif
@@ -117,57 +117,62 @@ typedef struct ms_tm
 #ifdef TIMES
        struct tms ms_tms;
 #else
-#  ifdef WIN32
+#  ifdef OPENSSL_SYS_WIN32
        HANDLE thread_id;
        FILETIME ms_win32;
 #  else
+#    ifdef OPENSSL_SYS_VSWORKS
+          unsigned long ticks;
+#    else
        struct timeb ms_timeb;
+#    endif
 #  endif
 #endif
        } MS_TM;
 
-char *ms_time_init()
+char *ms_time_new(void)
        {
        MS_TM *ret;
 
-       ret=malloc(sizeof(MS_TM));
+       ret=(MS_TM *)OPENSSL_malloc(sizeof(MS_TM));
        if (ret == NULL)
                return(NULL);
        memset(ret,0,sizeof(MS_TM));
-#ifdef WIN32
+#ifdef OPENSSL_SYS_WIN32
        ret->thread_id=GetCurrentThread();
 #endif
        return((char *)ret);
        }
 
-void ms_time_final(a)
-char *a;
+void ms_time_free(char *a)
        {
        if (a != NULL)
-               free(a);
+               OPENSSL_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 OPENSSL_SYS_WIN32
+       FILETIME tmpa,tmpb,tmpc;
+#endif
 
 #ifdef TIMES
-    printf("AAA\n");
        times(&tm->ms_tms);
 #else
-#  ifdef WIN32
+#  ifdef OPENSSL_SYS_WIN32
        GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32));
 #  else
-    printf("CCC\n");
-       ftime(tm->ms_timeb);
+#    ifdef OPENSSL_SYS_VSWORKS
+        tm->ticks = tickGet();
+#    else
+       ftime(&tm->ms_timeb);
+#    endif
 #  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;
@@ -176,20 +181,35 @@ char *ap,*bp;
 #ifdef TIMES
        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;
+# ifdef OPENSSL_SYS_WIN32
+       {
+#ifdef __GNUC__
+       signed long long la,lb;
+#else
+       signed _int64 la,lb;
+#endif
+       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;
+#  ifdef OPENSSL_SYS_VSWORKS
+        ret = (double)(b->ticks - a->ticks) / (double)sysClkRateGet();
+#  else
+       ret=     (double)(b->ms_timeb.time-a->ms_timeb.time)+
+               (((double)b->ms_timeb.millitm)-
+               ((double)a->ms_timeb.millitm))/1000.0;
 #  endif
+# 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;
@@ -198,13 +218,17 @@ char *ap,*bp;
 #ifdef TIMES
        d=(b->ms_tms.tms_utime-a->ms_tms.tms_utime)/HZ;
 #else
-# ifdef WIN32
+# ifdef OPENSSL_SYS_WIN32
        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;
+#  ifdef OPENSSL_SYS_VSWORKS
+        d = (b->ticks - a->ticks);
+#  else
+       d=       (double)(b->ms_timeb.time-a->ms_timeb.time)+
+               (((double)b->ms_timeb.millitm)-(double)a->ms_timeb.millitm)/1000.0;
 #  endif
+# endif
 #endif
        if (d == 0.0)
                ret=0;