add locale month names to av_small_strptime

Signed-off-by: Micah Galizia <micahgalizia@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Micah Galizia 2017-02-21 20:37:25 -05:00 committed by Michael Niedermayer
parent 3a003cc381
commit 489c09ad4b
3 changed files with 42 additions and 0 deletions

View file

@ -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;