From: Assaf Gordon <assafgordon@gmail.com>
To: Karel Zak <kzak@redhat.com>
Cc: J William Piggott <elseifthen@gmx.com>, util-linux@vger.kernel.org
Subject: Re: [V2 0/4] hwclock: remove date(1)
Date: Tue, 28 Feb 2017 17:01:23 +0000 [thread overview]
Message-ID: <20170228170122.GA18228@gmail.com> (raw)
In-Reply-To: <20170228161000.ijlouecku6a37quk@ws.net.home>
Hello,
On Tue, Feb 28, 2017 at 05:10:00PM +0100, Karel Zak wrote:
>On Tue, Feb 28, 2017 at 10:23:39AM -0500, J William Piggott wrote:
>> My impression is that the original parse_datetime() is stable. It seems
>> like most of the changes now involve parse_datetime2() to expand
>> capabilities.
More specifically: parse_datetime was made it re-entrant (removed
global timezone variables) and was added debugging code.
I don't think the parser itself has changed in a long while.
>Fortunately, this stuff is easy to test, so we can create regression
>tests for all the possible formats to be sure we do not introduce any
>regression.
A description of all types of accepted inputs for gnu date
(and techincally: gnulib's parse_datetime) is here:
https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html
>> > I guess it will be possible to move it to lib/parse-datetime.c and use
>> > it on another places in util-linux (instead of our minimalistic
>> > parse_datetime()), right?
>>
>> Sure, I think a name change to avoid confusion with gnulib would be
>> good. Maybe just parse_date.c?
If you copy the gnulib's parser and adjust it,
I might suggest doing away first with relative times,
then perhaps with timezones.
There are some confusing combinations, especially with
relative times (e.g. "20170228 + 2 days" vs "20:45:45 + 2 days", the
latter parsed as "8:45:45pm+02:00TZ + 1 day"),
and then with all sorts of things that are taken as timezones (like
"2017A" which is parsed as '8:17pm in timezone -01:00'.
If you don't want to meddle with the parser (which is understandable),
as a fallback you might want to add a minor piece of code
that ensures any timezone/relative parts were not encountered during the
parsing.
To do that, I'd add a small check at the end of 'parse_datetime2',
and look at the fields of 'struct parse_control':
http://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/parse-datetime.y#n172
something like:
if (pc.dsts_seen==0 && pc.rels_seen==0 && pc.zones_seen==0 etc.)
Then the parser didn't encounter these parts.
I'm happy to help with testing if needed.
regards,
- assaf
P.S.
In fact, I wonder if it'll be easier to add such a flag to gnulib's
parse_datetime2 , something like 'PARSE_DATETIME_NO_RELATIVE'
and 'PARSE_DATETIME_NO_ZONE' which will reject such input.
next prev parent reply other threads:[~2017-02-28 17:01 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-25 18:25 [V2 0/4] hwclock: remove date(1) J William Piggott
2017-02-25 18:28 ` [V2 1/4] hwclock: use parse_datetime function J William Piggott
2017-02-25 18:30 ` [V2 2/4] build-system: add hwclock-date J William Piggott
2017-02-25 18:32 ` [V2 3/4] hwclock: add hwclock-date files J William Piggott
2017-02-25 18:33 ` [V2 4/4] hwclock: add sys-utils/hwclock-date.c J William Piggott
2017-02-28 13:37 ` [V2 0/4] hwclock: remove date(1) Karel Zak
2017-02-28 15:23 ` J William Piggott
2017-02-28 16:10 ` Karel Zak
2017-02-28 17:01 ` Assaf Gordon [this message]
2017-03-04 21:57 ` J William Piggott
2017-03-02 11:43 ` [PATCH] lib: add parse-date.y 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=20170228170122.GA18228@gmail.com \
--to=assafgordon@gmail.com \
--cc=elseifthen@gmx.com \
--cc=kzak@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox