William A. Rowe, Jr. wrote:
#define apr_time_usec(time) ((apr_int32_t)((time) % APR_USEC_PER_SEC))
which will take the big number's modulos before truncating to 32 bits.
Thanks. Speaking of the time_macros, I've only converted about half of the instances of "time / APR_USEC_PER_SEC" in httpd-2.0 and APR to use to the macros. The other half are operations on apr_interval_time_t, rather than apr_time_t.
If we change apr_time_t to use binary microseconds, we'll have to decide whether to do the same for apr_interval_time_t.
I see strong points both for and against changing apr_interval_time_t:
- Interval times often are added to absolute times, so they should use the same format as absolute times so the additions won't produce unexpected errors.
- On the other hand, interval times often are used as arguments to things like select calls, so they should use decimal microseconds to prevent unexpected errors when a programmer says something like, "I need my poll to block for 5 seconds at most, so I'll pass it a timeout of 5,000,000."
Does anyone else have a strong opinion on whether interval times should always use the same representation as apr_time_t?
Thanks, --Brian