Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 22 Feb 2018 18:44:41 -0500
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: [PATCH] strptime: Add %F format (glibc extension).

On Thu, Feb 22, 2018 at 10:53:39PM +0100, Przemyslaw Pawelczyk wrote:
> %F is a shortcut for %Y-%m-%d, the ISO 8601 date format.
> It's already present in POSIX's strftime(), so it makes sense to support
> it in a converse function too.
> ---
> 
> I'm not subscribed to ML, so please CC me in case of replying.
> 
>  src/time/strptime.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/time/strptime.c b/src/time/strptime.c
> index c54a0d8c4c52..2c0d45574819 100644
> --- a/src/time/strptime.c
> +++ b/src/time/strptime.c
> @@ -59,6 +59,10 @@ char *strptime(const char *restrict s, const char *restrict f, struct tm *restri
>  			s = strptime(s, "%m/%d/%y", tm);
>  			if (!s) return 0;
>  			break;
> +		case 'F':
> +			s = strptime(s, "%Y-%m-%d", tm);
> +			if (!s) return 0;
> +			break;
>  		case 'H':
>  			dest = &tm->tm_hour;
>  			min = 0;

Not having looked at this function in a while, I was doubtful the
above would work, but in fact it looks like it does (analogous to the
above case). While lots of this function is underspecified, the
contract for the return value is well-designed.

The want_century logic may be incomplete for %D and now %F, though. If
so that's a separate issue from lack of %F extension and should be
fixed in a separate patch. I think %F just needs to set want_century
to 0, but %D might have more work to do.

Rich

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ