[FFmpeg-devel] [PATCH] add locale month names to av_small_strptime
Micah Galizia
micahgalizia at gmail.com
Fri Feb 24 04:34:28 EET 2017
Hello,
Is someone able to take a look at this and accept or reject it -- its
been a few days since I submitted.
Sorry to pester -- thanks in advance.
On Mon, Feb 20, 2017 at 7:48 PM, Micah Galizia <micahgalizia at gmail.com> wrote:
> Signed-off-by: Micah Galizia <micahgalizia at gmail.com>
> ---
> libavutil/parseutils.c | 28 ++++++++++++++++++++++++++++
> libavutil/tests/parseutils.c | 7 +++++++
> tests/ref/fate/parseutils | 7 +++++++
> 3 files changed, 42 insertions(+)
>
> diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c
> index 86d3dac..7ca07b3 100644
> --- a/libavutil/parseutils.c
> +++ b/libavutil/parseutils.c
> @@ -140,6 +140,11 @@ static const VideoRateAbbr video_rate_abbrs[]= {
> { "ntsc-film", { 24000, 1001 } },
> };
>
> +static const char *months[12] = {
> + "january", "february", "march", "april", "may", "june", "july", "august",
> + "september", "october", "november", "december"
> +};
> +
> int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str)
> {
> int i;
> @@ -466,6 +471,21 @@ static int date_get_num(const char **pp,
> return val;
> }
>
> +static int date_get_month(const char **pp) {
> + int i = 0;
> + for (; i < 12; i++) {
> + if (!av_strncasecmp(*pp, months[i], 3)) {
> + const char *mo_full = months[i] + 3;
> + int len = strlen(mo_full);
> + *pp += 3;
> + if (len > 0 && !av_strncasecmp(*pp, mo_full, len))
> + *pp += len;
> + return i;
> + }
> + }
> + return -1;
> +}
> +
> char *av_small_strptime(const char *p, const char *fmt, struct tm *dt)
> {
> int c, val;
> @@ -525,6 +545,14 @@ char *av_small_strptime(const char *p, const char *fmt, struct tm *dt)
> if (!p)
> return NULL;
> break;
> + case 'b':
> + case 'B':
> + case 'h':
> + val = date_get_month(&p);
> + if (val == -1)
> + return NULL;
> + dt->tm_mon = val;
> + break;
> case '%':
> if (*p++ != '%')
> return NULL;
> diff --git a/libavutil/tests/parseutils.c b/libavutil/tests/parseutils.c
> index 682b390..180f624 100644
> --- a/libavutil/tests/parseutils.c
> +++ b/libavutil/tests/parseutils.c
> @@ -138,6 +138,13 @@ static void test_av_small_strptime(void)
> { "%Y - %m - %d", "2012-12-21" },
> { "%Y-%m-%d %H:%M:%S", "2012-12-21 20:12:21" },
> { " %Y - %m - %d %H : %M : %S", " 2012 - 12 - 21 20 : 12 : 21" },
> + { " %Y - %b - %d %H : %M : %S", " 2012 - nOV - 21 20 : 12 : 21" },
> + { " %Y - %B - %d %H : %M : %S", " 2012 - nOVemBeR - 21 20 : 12 : 21" },
> + { " %Y - %B%d %H : %M : %S", " 2012 - may21 20 : 12 : 21" },
> + { " %Y - %B%d %H : %M : %S", " 2012 - mby21 20 : 12 : 21" },
> + { " %Y - %B - %d %H : %M : %S", " 2012 - JunE - 21 20 : 12 : 21" },
> + { " %Y - %B - %d %H : %M : %S", " 2012 - Jane - 21 20 : 12 : 21" },
> + { " %Y - %B - %d %H : %M : %S", " 2012 - January - 21 20 : 12 : 21" },
> };
>
> av_log_set_level(AV_LOG_DEBUG);
> diff --git a/tests/ref/fate/parseutils b/tests/ref/fate/parseutils
> index 1aad5ec..568b6d2 100644
> --- a/tests/ref/fate/parseutils
> +++ b/tests/ref/fate/parseutils
> @@ -68,6 +68,13 @@ fmt:'%Y-%m-%d' spec:'2012-12-21' -> 2012-12-21 00:00:00
> fmt:'%Y - %m - %d' spec:'2012-12-21' -> 2012-12-21 00:00:00
> fmt:'%Y-%m-%d %H:%M:%S' spec:'2012-12-21 20:12:21' -> 2012-12-21 20:12:21
> fmt:' %Y - %m - %d %H : %M : %S' spec:' 2012 - 12 - 21 20 : 12 : 21' -> 2012-12-21 20:12:21
> +fmt:' %Y - %b - %d %H : %M : %S' spec:' 2012 - nOV - 21 20 : 12 : 21' -> 2012-11-21 20:12:21
> +fmt:' %Y - %B - %d %H : %M : %S' spec:' 2012 - nOVemBeR - 21 20 : 12 : 21' -> 2012-11-21 20:12:21
> +fmt:' %Y - %B%d %H : %M : %S' spec:' 2012 - may21 20 : 12 : 21' -> 2012-05-21 20:12:21
> +fmt:' %Y - %B%d %H : %M : %S' spec:' 2012 - mby21 20 : 12 : 21' -> error
> +fmt:' %Y - %B - %d %H : %M : %S' spec:' 2012 - JunE - 21 20 : 12 : 21' -> 2012-06-21 20:12:21
> +fmt:' %Y - %B - %d %H : %M : %S' spec:' 2012 - Jane - 21 20 : 12 : 21' -> error
> +fmt:' %Y - %B - %d %H : %M : %S' spec:' 2012 - January - 21 20 : 12 : 21' -> 2012-01-21 20:12:21
>
> Testing av_parse_time()
> (now is 2012-03-17 09:14:13.2 +0100, local time is UTC+1)
> --
> 2.9.3
>
--
"The mark of an immature man is that he wants to die nobly for a
cause, while the mark of the mature man is that he wants to live
humbly for one." --W. Stekel
More information about the ffmpeg-devel
mailing list