Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: >> Eh, sorry, but why? > > The thing is: I want to prevent invalid dates in gc.pruneExpire from going > unnoticed, _especially_ since they would default to "now". IOW if you > said something like "one.weak.ago", it would actually have the same effect > as "now" and offer _no_ grace period. > > But like you said, comparing the difference of two unsigned longs to >= 0 > might be quite stupid. Instead, I compare them _directly_. > > Since I compare the value to "now" first, and only if it is not, compare > the approxidate() of the value to the current time stamp, I can verify > that no invalid date was specified. > > Unfortunately, this check includes future dates. Fortunately, they do not > make sense at all. > > To make my reasoning clear, how about this comment above that if() clause? > > /* > * In case of an invalid date, approxidate() returns the > * same as approxidate("now"). Since the millisecond > * boundary could have been crossed between the two calls > * to approxidate(), we compare not only for equality, > * but also if the former is greater than the latter. > * > * Note: this assumes that future dates are invalid, which > * makes sense, really. > */ > > Hmm? Ah,... But C language rules haven't changed in such a way that it guarantees B to be evaluated before A when you write "A >= B", have it? So at least I think you would need something like this if you go that route: if (strcmp(value, "now")) { unsigned long now = approxidate("now"); if (approxidate(value) >= now) return error("Invalid %s: '%s'", var, value); ... } Also the resolution of approxidate() is in seconds so millisecond boundary does not matter, but that issue is, eh, secondary ;-). I have to wonder if approxidate_with_error() function that takes a pointer to receive an error condition may be a better way to solve this cleanly. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html