*/
#include <stdio.h>
#include <stdlib.h>
+#include "cryptlib.h"
+#include "tmdiff.h"
+
+#ifdef TIMEB
+#undef WIN32
+#undef TIMES
+#endif
#ifndef MSDOS
# ifndef WIN32
-# define TIMES
+# define TIMES
# endif
#endif
}
#endif /* VMS */
-#ifdef sun
+#if defined(sun) || defined(__ultrix)
+#define _POSIX_SOURCE
#include <limits.h>
#include <sys/param.h>
#endif
#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));
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;
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;
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)