Re: [PATCH v1 04/25] lib/vsprintf: Print time and date in human readable format via %pt

From: Joe Perches
Date: Thu Jun 08 2017 - 19:09:33 EST


On Thu, 2017-06-08 at 21:02 +0300, Andy Shevchenko wrote:
> On Thu, Jun 8, 2017 at 6:33 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> > On Thu, Jun 8, 2017 at 4:55 PM, Andy Shevchenko
> > <andy.shevchenko@xxxxxxxxx> wrote:
> > > On Thu, Jun 8, 2017 at 5:49 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> > > > On Thu, Jun 8, 2017 at 3:47 PM, Andy Shevchenko
> > > > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
> > > > I really like the idea, and the implementation seems fine for this use case, but
> > > > before we reserve %pt for rtc_time, could we discuss whether we want
> > > > that for printing struct tm, struct timespec64, time64_t or ktime_t instead?
> > >
> > > How many users?
> >
> > It's hard to predict, I would assume we get more users once there is an
> > easy way to print the time.
>
> So, at least for now we can guess using existing users, right?
>
> I don't check yet how to calculate those cases of time64_t,
> timespec64, ktime_t and alike if they are about pretty ptintong time
> and date.
> I'm speculating that there are (almost) none.
>
> > > For struct tm it's somelike 4 (which want to print its content).
> >
> > Good point. I notice that they all convert from time64_t or time_t into
> > struct tm immediately before printing it, so we can scratch that one
> > as long as there is a way to pretty-print a time64_t. We also don't
> > need to print a time_t as we want to kill that one off anyway.
> >
> > If we only care about printing time64_t and rtc_time, we can easily
> > use %pT for one and %pt for the other, but there may still be good
> > reasons to print a timespec64 or ktime_t.
>
> No need, we may still use 3rd/4th letter in the format for that.
>
> %pt(t/d) time/date + whatever modifications, like raw, validate, timespec, etc.
>
> 's' for timespec64, for example.

My preference would be for %pt[type]<output style>
where <type> is mandatory and could be:

r for struct rtc_time
6 for time64_t
k for ktime_t
T for struct timespec64
etc

and <output style> has an unspecified default of
YYYY-MM-DD:hh:mm:ss

Perhaps use the "date" formats without the leading
% uses for <output style> for additional styles.