Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Sep 2021 19:56:42 +0100
From:      Edward Napierala <trasz@freebsd.org>
To:        Bryan Drewery <bdrewery@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: ddedf2a11eb2 - main - tzcode: Implement timezone change detection
Message-ID:  <DC7DD08C-DEE2-44DE-BD40-B4A64CA56CF7@freebsd.org>
In-Reply-To: <59a39614-45d2-d9b0-a84a-476e52a81c76@FreeBSD.org>
References:  <202109131442.18DEgDIn043709@gitrepo.freebsd.org> <59a39614-45d2-d9b0-a84a-476e52a81c76@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

> On 14 Sep 2021, at 17:39, Bryan Drewery <bdrewery@freebsd.org> wrote:
>=20
> On 9/13/2021 7:42 AM, Edward Tomasz Napierala wrote:
>> +#else /* !DETECT_TZ_CHANGES */
>> +#define	change_in_tz(X)	0
>=20
> WITHOUT_DETECT_TZ_CHANGES: change_in_tz() =3D=3D 0
>=20
>> +#endif /* !DETECT_TZ_CHANGES */
>> +
>> static int
>> differ_by_repeat(const time_t t1, const time_t t0)
>> {
>> @@ -379,6 +418,7 @@ register const int	doextend;
>> 	int		stored;
>> 	int		nread;
>> 	int		res;
>> +	int		ret;
>> 	union {
>> 		struct tzhead	tzhead;
>> 		char		buf[2 * sizeof(struct tzhead) +
>> @@ -427,6 +467,22 @@ register const int	doextend;
>> 			(void) strcat(fullname, name);
>> 			name =3D fullname;
>> 		}
>> +		if (doextend =3D=3D TRUE) {
>> +			/*
>> +			 * Detect if the timezone file has changed.  =
Check
>> +			 * 'doextend' to ignore TZDEFRULES; the =
change_in_tz()
>> +			 * function can only keep state for a single =
file.
>> +			 */
>> +			ret =3D change_in_tz(name);
>> +			if (ret <=3D 0) {
>=20
> WITHOUT_DETECT_TZ_CHANGES: Always returns a false-positive "done" but
> short-circuits the rest of tzload().
>=20
>> +				/*
>> +				 * Returns -1 if there was an error,
>> +				 * and 0 if the timezone had not =
changed.
>> +				 */
>> +				free(fullname);
>> +				return ret;
>> +			}
>> +		}

Thanks!  No idea how I could miss this.  Does =
https://reviews.freebsd.org/D31961
look reasonable?




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DC7DD08C-DEE2-44DE-BD40-B4A64CA56CF7>