[PATCH] sysklogd: add -Z option to adjust message timezones

Shiz hi at shiz.me
Wed Aug 2 15:09:22 UTC 2017


Ping.

- Shiz

> On 9 May 2017, at 15:13, Shiz <hi at shiz.me> wrote:
> 
> 
>> On 9 May 2017, at 09:35, walter harms <wharms at bfs.de> wrote:
>> 
>> Since this is a musl (only ?) feature i would suggest
>> to make that selectable.
>> 
>> re,
>> wh
> 
> I wouldn’t peg this as a musl-only feature — in fact, their argument
> seems to be that this is the only way a POSIX-conformant syslog() can
> behave, as it would otherwise modify global state (through settz()
> through localtime_r()) that it would not be permitted to modify.
> 
> Given the very modest code increase I do not particularly see the point
> of it being configurable at build time, but if others concur I’ll change it.
> 
>>> 
>>> @@ -815,17 +820,23 @@ static void timestamp_and_log(int pri, char *msg, int len)
>>> {
>>> 	char *timestamp;
>>> 	time_t now;
>>> +	struct tm nowtm = { .tm_isdst = 0 };
>> why ? is there a bug ?
> 
> strptime() may not set the tm_isdst field, as a result of which it would have
> an undefined value if the struct is not explicitly initialised, which messes
> with the calculation in mktime().
> 
>>> 
>>> 	/* Jan 18 00:11:22 msg... */
>>> 	/* 01234567890123456 */
>>> 	if (len < 16 || msg[3] != ' ' || msg[6] != ' '
>>> 	 || msg[9] != ':' || msg[12] != ':' || msg[15] != ' '
>>> 	) {
>>> -		time(&now);
>>> +		now = time(NULL);
>> 
>> is the same
> 
> I just figured it’s nicer if the code paths look similar.
> 
>>> 		timestamp = ctime(&now) + 4; /* skip day of week */
>>> 	} else {
>>> -		now = 0;
>>> -		timestamp = msg;
>>> +		if (G.adjustTimezone && strptime(msg, "%b %e %T", &nowtm)) {
>>> +			now = mktime(&nowtm) - timezone;
>>> +			timestamp = ctime(&now) + 4; /* skip day of week */
>>> +		} else {
>>> +			now = 0;
>>> +			timestamp = msg;
>>> +		}
>> 
>> It is more easy to disable the feature if you do
>> 		now = 0;
>> 		timestamp = msg;
>> 		if (G.adjustTimezone && strptime(msg, "%b %e %T", &nowtm)) {
>> 			now = mktime(&nowtm) - timezone;
>> 			timestamp = ctime(&now) + 4; /* skip day of week */
>> 		}
> 
> Right, I’ll change that as well if the consensus is that it being selectable
> is better.
> 
> Thanks for the feedback!
> 
> - Shiz

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20170802/ddcbcc2c/attachment.asc>


More information about the busybox mailing list