Robert Elz wrote, on 04 Dec 2022: > > Date: Mon, 28 Nov 2022 09:35:25 +0000 > From: "Geoff Clare via austin-group-l at The Open Group" > <austin-group-l@opengroup.org> >
This entire email is underhanded and dishonest. You have completely ignored my earlier email (austin-group-l:archive/latest/35115) where I stated that for TZ values beginning with a colon, the timezone information used by mktime() is implementation-defined and therefore this creates the same loophole that exists in the C standard, and then you have tried to refute the arguments I made, which were (with that earlier email as context) intended only to apply to TZ values not beginning with colon as if I was saying them about TZ values that do begin with a colon. As a result, most of it made no sense at all in context, and I have only replied to the parts that could have made some sort of sense in the context of TZ values that do not begin with a colon. > | When the standard is silent about something, requirements that > | *are* stated still apply. > > Sure, but only for requirements that are actually stated. Here the > things you believe to be stated requirements, don't seem to be nearly > as obvious to me ... but it is hard to tell, as you almost never bother > quoting the words from the standard that you claim say what you believe > to be stated. That makes it hard to refute, as I have no idea what > I am expected to argue is different - just some random "the standard > says" without any clue what part of it you mean. This has been a lengthy thread and I have been assuming that if I quoted something from the standard earlier in the thread I don't need to quote it again. > | In this case, it is clear from the use of "any" in "corrected for > | timezone and any seasonal time adjustments" that either a seasonal > | adjustment is made or the value resulting from the timezone adjustment > | is used without making a seasonal adjustment. > > This is better - we know which words you're relying upon here, and how > you have managed to mangle what the standard actually says to fit with > your preconceived view of what it should mean. > > The text you quoted there is from (in Issue 8 D 2.1) on page 1311, lines 43862 > to 43863 (in XSH 3 / mktime()). (The same thing is in earlier versions, > this just happens to be the version I picked to reference today, perhaps I > should have used C181, but too late now...) > > Now lets analyse what that actually says: > > "corrected for timezone" > > which you ignored, but seem to be treating as if it said "modified by the > offset from UTC of the timezone", which it does not, if it had meant to > say that it could have said that. It has to be worded in general terms because of the implementation-defined nature of TZ values beginning with colon. For TZ values that do not begin with colon, the description of TZ in XBD 8.3 gives precise rules for the adjustments: std offset dst offset, rule [...] offset Indicates the value added to the local time to arrive at Coordinated Universal Time [...] The offset following std shall be required. If no offset follows dst, the alternative time is assumed to be one hour ahead of standard time. [...] rule Indicates when to change to and back from the alternative time. > OK, next from your quote: > > "and any seasonal time adjustments" > > which you then paraphrased as: > > "either a seasonal adjustment is made or the value resulting > from the timezone adjustment is used without making a seasonal > adjustment." > > Don't you see just how myopic that is? In your mindset, you see a nice > regular timezone which has a nice fixed offset from UTC, and perhaps at > some point a once a year alteration of that offset slightly, and then, > also once a year, an adjustment back again. Exactly as specified in the TZ rules for values not beginning with colon. > Before I end, there's one more section from the standard that you seem to > be (not in this message, but in others) to be misinterpreting as well: > > Lines 43855 to 43858, page 1311, in XSH 3 - mktime(): > > A positive or 0 value for tm_isdst shall cause mktime( ) to presume > initially that Daylight Saving Time, respectively, is or is not in > effect for the specified time. A negative value for tm_isdst shall > cause mktime( ) to attempt to determine whether Daylight Saving Time > is in effect for the specified time. This wording is taken from the C standard, where it is necessarily vague because of the implementation-defined nature of local time and DST there. We should replace it with more precise wording in POSIX (particularly for TZ values not beginning with colon). -- Geoff Clare <g.cl...@opengroup.org> The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England