Blob Blame History Raw
#include <stdio.h>
#include <sys/time.h>

double elapse( struct timeval *t )
{
    static struct timeval last;
    struct timeval now, elapse;

    if ( t )
    {
        last=*t;
        gettimeofday( &last, NULL );

        return 0.0;
    }
    else
    {
        gettimeofday( &now, NULL );

        elapse.tv_sec=now.tv_sec-last.tv_sec;
        if ( last.tv_usec>now.tv_usec )
        {
            elapse.tv_usec=last.tv_usec-now.tv_usec;
            elapse.tv_sec--;
        }
        else
            elapse.tv_usec=now.tv_usec-last.tv_usec;

        last=now;

        return elapse.tv_sec+elapse.tv_usec/1000000.0;
    }
}