[Date Prev][Date Next]
Re: Y2K bugs in OpenLDAP (ITS#233)
> You are referring, I assume, to the YEAR_PEDANTIC macro.
> You'll note that this macro is not used.
True, but the YEAR_CAREFUL macro is:
#define YEAR_CAREFUL(y) ((y) < 1900 ? (y) + 1900 : (y))
#define YEAR(y) YEAR_CAREFUL(y)
The check for (y) < 1900 is mostly harmless, I suppose, but it could
be dangerously confusing. If tm_year >= 1900, you can safely assume
one of two things: either the C runtime is badly broken, or the current
year is 3800 or later.
My suggestion: just assume that tm_year really is year-1900. If you
really want to be paranoid, add an assert; if the runtime gets this
wrong, there's not much point in trying to recover.
(Why oh why isn't tm_year just the current year? I suspect this is
a classic example of why "backward compatibility" includes the word
"backward". But as long as we're stuck with it...)
Keith Thompson, San Diego Supercomputer Center firstname.lastname@example.org
<http://www.sdsc.edu/~kst/> Office: 858-822-0853 Fax: 858-534-5077
One of the great tragedies of ancient history is that Helen of Troy
lived before the invention of the champagne bottle.