From: J William Piggott <elseifthen@gmx.com>
To: Karel Zak <kzak@redhat.com>
Cc: util-linux@vger.kernel.org,
Ruediger Meier <ruediger.meier@ga-group.nl>,
Sami Kerola <kerolasa@iki.fi>
Subject: Re: [PATCH 1/1] hwclock.c, hwclock.8.in: new --show format
Date: Tue, 16 Feb 2016 21:02:39 -0500 [thread overview]
Message-ID: <56C3D4BF.5030608@gmx.com> (raw)
In-Reply-To: <20160216102941.r2ttlt6y2kv4pnem@ws.net.home>
On 02/16/2016 05:29 AM, Karel Zak wrote:
> On Thu, Feb 11, 2016 at 07:48:40PM -0500, J William Piggott wrote:
>> - lt = localtime(&hwctime.tv_sec);
>> - strftime(ctime_now, sizeof(ctime_now), format, lt);
>> - printf(_("%s and %06d microseconds\n"), ctime_now, (int)hwctime.tv_usec);
>> + struct tm lt;
>> + int zhour, zmin;
>> +
>> + lt = *localtime(&hwctime.tv_sec);
>> + zhour = - timezone / 60 / 60;
>> + zmin = abs(timezone / 60 % 60);
>> + printf(_("%4d-%.2d-%.2d %02d:%02d:%02d.%06d%+02d:%02d\n"),
>> + lt.tm_year + 1900, lt.tm_mon + 1, lt.tm_mday, lt.tm_hour,
>> + lt.tm_min, lt.tm_sec, (int)hwctime.tv_usec, zhour, zmin);
>
> Some notes:
>
> * what's wrong with strftime?
Why use resources on strftime when 8601 prints directly?
While it can do other formatting, I see strftime's main purpose as
converting tm numbers into strings like: January, Monday, etc.
>
> * We already use ISO time in util-linux and we use time designator 'T' (separator
> between date and time).
I chose to use the optional space as a compromise between machine
friendly and human friendly, this is commonly done I think.
>
> * tv_usec is "long"
Fixed: I followed the example from the recent commit c211401 (for code
consistency, which is why I originally used the int cast), and cast it
to long; although I do not understand why as it is already long. All
that needed to be done was to change the conversion length modifier and
drop the cast.
PULL:
git@github.com:jwpi/util-linux.git 020716
for you to fetch changes up to e05ac5aae00913e7a999c96a7bb731dc1d09cc5c:
>
> * fraction separator is decimal mark, either a comma or a dot, but
> with a preference for a comma according to ISO 8601:2004
> (wikipedia).
>
> -- we already use comma in util-linux, exception is logger where I
> see dot :-(
I actually modeled the format after:
date --rfc-3339=ns
2016-02-16 20:13:25.601508440-05:00
3339 is a subset of 8601 that requires using a period for the radix
point. As I said previously, I chose this as a compromise between
machine and human readability. As it is output to tty by default, I
thought doing so might mitigate any push back against the format change.
I am not strongly opposed to using 'T' as the date-time delimiter or comma
as the radix point. I just think 'space' and 'period' are a commonly
used compromise.
>
>
> Anyway, it would be really nice to have a function for this purpose in
> lib/timeutils.c to avoid duplication and creativity :-) Something like:
>
>
> strtime_iso_8601(char buf, size_t bufsz, struct tm tm, struct timeval frac, int flags);
>
> where flags are
>
> enum {
> ISO_8601_TIMEZONE = (1 << 1)
> ISO_8601_USEC = (1 << 2)
> ...
> };
>
> then we can use this function in lslogins, dmesg, hwclock, last,
> logger, ... etc. I can also imagine:
>
> strtime_short_ctime()
> strtime_ctime() (ctime without \n)
>
> Comments?
Also, perhaps all the above only using something similar to coreutil's
fprintftime, so it prints directly using less resources.
>
> Karel
>
next prev parent reply other threads:[~2016-02-17 2:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-12 0:42 [PATCH 0/1] hwclock --show format J William Piggott
2016-02-12 0:48 ` [PATCH 1/1] hwclock.c, hwclock.8.in: new " J William Piggott
2016-02-16 10:29 ` Karel Zak
2016-02-16 13:54 ` Sami Kerola
2016-02-16 20:13 ` Ruediger Meier
2016-02-17 2:02 ` J William Piggott [this message]
2016-02-17 2:20 ` Ruediger Meier
2016-02-17 10:54 ` Karel Zak
2016-02-17 11:05 ` Karel Zak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56C3D4BF.5030608@gmx.com \
--to=elseifthen@gmx.com \
--cc=kerolasa@iki.fi \
--cc=kzak@redhat.com \
--cc=ruediger.meier@ga-group.nl \
--cc=util-linux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.