14e4196cbSGregory Neil Shapiro /* 25dd76dd0SGregory Neil Shapiro * Copyright (c) 2005 Proofpoint, Inc. and its suppliers. 34e4196cbSGregory Neil Shapiro * All rights reserved. 44e4196cbSGregory Neil Shapiro * 54e4196cbSGregory Neil Shapiro * By using this file, you agree to the terms and conditions set 64e4196cbSGregory Neil Shapiro * forth in the LICENSE file which can be found at the top level of 74e4196cbSGregory Neil Shapiro * the sendmail distribution. 84e4196cbSGregory Neil Shapiro * 9*4313cc83SGregory Neil Shapiro * $Id: time.h,v 1.2 2013-11-22 20:51:32 ca Exp $ 104e4196cbSGregory Neil Shapiro */ 114e4196cbSGregory Neil Shapiro 124e4196cbSGregory Neil Shapiro #ifndef SM_TIME_H 134e4196cbSGregory Neil Shapiro # define SM_TIME_H 1 144e4196cbSGregory Neil Shapiro 154e4196cbSGregory Neil Shapiro # include <sm/config.h> 164e4196cbSGregory Neil Shapiro # include <sys/time.h> 174e4196cbSGregory Neil Shapiro 184e4196cbSGregory Neil Shapiro /* should be defined in sys/time.h */ 194e4196cbSGregory Neil Shapiro #ifndef timersub 204e4196cbSGregory Neil Shapiro # define timersub(tvp, uvp, vvp) \ 214e4196cbSGregory Neil Shapiro do \ 224e4196cbSGregory Neil Shapiro { \ 234e4196cbSGregory Neil Shapiro (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ 244e4196cbSGregory Neil Shapiro (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ 254e4196cbSGregory Neil Shapiro if ((vvp)->tv_usec < 0) \ 264e4196cbSGregory Neil Shapiro { \ 274e4196cbSGregory Neil Shapiro (vvp)->tv_sec--; \ 284e4196cbSGregory Neil Shapiro (vvp)->tv_usec += 1000000; \ 294e4196cbSGregory Neil Shapiro } \ 304e4196cbSGregory Neil Shapiro } while (0) 314e4196cbSGregory Neil Shapiro #endif /* !timersub */ 324e4196cbSGregory Neil Shapiro 334e4196cbSGregory Neil Shapiro #ifndef timeradd 344e4196cbSGregory Neil Shapiro # define timeradd(tvp, uvp, vvp) \ 354e4196cbSGregory Neil Shapiro do \ 364e4196cbSGregory Neil Shapiro { \ 374e4196cbSGregory Neil Shapiro (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ 384e4196cbSGregory Neil Shapiro (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \ 394e4196cbSGregory Neil Shapiro if ((vvp)->tv_usec >= 1000000) \ 404e4196cbSGregory Neil Shapiro { \ 414e4196cbSGregory Neil Shapiro (vvp)->tv_sec++; \ 424e4196cbSGregory Neil Shapiro (vvp)->tv_usec -= 1000000; \ 434e4196cbSGregory Neil Shapiro } \ 444e4196cbSGregory Neil Shapiro } while (0) 454e4196cbSGregory Neil Shapiro #endif /* !timeradd */ 464e4196cbSGregory Neil Shapiro 474e4196cbSGregory Neil Shapiro #ifndef timercmp 484e4196cbSGregory Neil Shapiro # define timercmp(tvp, uvp, cmp) \ 494e4196cbSGregory Neil Shapiro (((tvp)->tv_sec == (uvp)->tv_sec) ? \ 504e4196cbSGregory Neil Shapiro ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ 514e4196cbSGregory Neil Shapiro ((tvp)->tv_sec cmp (uvp)->tv_sec)) 524e4196cbSGregory Neil Shapiro #endif /* !timercmp */ 534e4196cbSGregory Neil Shapiro 544e4196cbSGregory Neil Shapiro #endif /* ! SM_TIME_H */ 55