[tz] [PROPOSED] Remove old Y2K code

Ian Abbott abbotti at mev.co.uk
Wed Jun 14 10:11:07 UTC 2017


On 13/06/17 20:47, Paul.Koning at dell.com wrote:
>
>> On Jun 13, 2017, at 2:17 PM, Jonathan Lennox <lennox at cs.columbia.edu> wrote:
>>
>> On Monday, June 12 2017, "Paul Eggert" wrote to "Brian.Inglis at SystematicSw.ab.ca, Time zone mailing list" saying:
>>
>>> Perhaps you're right, I was too hasty. I brought back that code under
>>> the name you suggested, by installing the attached.
>>
>>
>>> +    Y2K runtime checks are no longer enabled by default.  Add
>>> +    -DDEPRECATE_TWO_DIGIT_YEARS to CFLAGS to enable them, instead of
>>> +    adding -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU
>>> +    to disable them.  (New name suggested by Brian Inglis.)
>>> +
>>
>> Since DEPRECATE_TWO_DIGIT_YEARS is used in an if statement, shouldn't this
>> be -DDEPRECATE_TWO_DIGIT_YEARS=true ?  Otherwise it expands to
>>    if ( && warn != IN_NONE ...
>>
>> which obviously won't compile.
>
> Not so, because -DFOO is equivalent to -DFOO=1 .

Yes, although technically this is compiler (or precompiler) behavior, 
not part of any C standard (since it only concerns the language).

The comments for the '-D' options in Makefile mostly seem to follow the 
style of omitting the default '=1' (as it assumes POSIX style C compiler 
options are being used), except for the cases where '=1' is one of two 
or more documented values (for example, in the comments for 'HAVE_TZNAME').

Perhaps a note could be added to the comments in the Makefile to make it 
clear that it is assuming that '-DFOO' is equivalent to '-DFOO=1', and 
that '-DFOO=bar' defines a macro with the given replacement, although I 
guess anyone porting the Makefile and compiler options ought to have a 
passing acquaintance with POSIX conventions.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti at mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-


More information about the tz mailing list