Add handy functions for timeval manipulations. Obtained from FreeBSD.
This commit is contained in:
parent
63f725f8c9
commit
04e243c85c
40
utils.c
40
utils.c
@ -531,3 +531,43 @@ valid_media_types(const char *path)
|
|||||||
|
|
||||||
return ALL_MEDIA;
|
return ALL_MEDIA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add and subtract routines for timevals.
|
||||||
|
* N.B.: subtract routine doesn't deal with
|
||||||
|
* results which are before the beginning,
|
||||||
|
* it just gets very confused in this case.
|
||||||
|
* Caveat emptor.
|
||||||
|
*/
|
||||||
|
static void timevalfix(struct timeval *);
|
||||||
|
void
|
||||||
|
timevaladd(struct timeval *t1, const struct timeval *t2)
|
||||||
|
{
|
||||||
|
|
||||||
|
t1->tv_sec += t2->tv_sec;
|
||||||
|
t1->tv_usec += t2->tv_usec;
|
||||||
|
timevalfix(t1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
timevalsub(struct timeval *t1, const struct timeval *t2)
|
||||||
|
{
|
||||||
|
|
||||||
|
t1->tv_sec -= t2->tv_sec;
|
||||||
|
t1->tv_usec -= t2->tv_usec;
|
||||||
|
timevalfix(t1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
timevalfix(struct timeval *t1)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (t1->tv_usec < 0) {
|
||||||
|
t1->tv_sec--;
|
||||||
|
t1->tv_usec += 1000000;
|
||||||
|
}
|
||||||
|
if (t1->tv_usec >= 1000000) {
|
||||||
|
t1->tv_sec++;
|
||||||
|
t1->tv_usec -= 1000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
8
utils.h
8
utils.h
@ -101,4 +101,12 @@ const char *mime_to_ext(const char * mime);
|
|||||||
int make_dir(char * path, mode_t mode);
|
int make_dir(char * path, mode_t mode);
|
||||||
unsigned int DJBHash(uint8_t *data, int len);
|
unsigned int DJBHash(uint8_t *data, int len);
|
||||||
|
|
||||||
|
/* Timeval manipulations */
|
||||||
|
void timevaladd(struct timeval *t1, const struct timeval *t2);
|
||||||
|
void timevalsub(struct timeval *t1, const struct timeval *t2);
|
||||||
|
#define timevalcmp(tvp, uvp, cmp) \
|
||||||
|
(((tvp)->tv_sec == (uvp)->tv_sec) ? \
|
||||||
|
((tvp)->tv_usec cmp (uvp)->tv_usec) : \
|
||||||
|
((tvp)->tv_sec cmp (uvp)->tv_sec))
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user