Signed-off-by: Micah Galizia <micahgalizia@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>tags/n3.3
@@ -140,6 +140,11 @@ static const VideoRateAbbr video_rate_abbrs[]= { | |||||
{ "ntsc-film", { 24000, 1001 } }, | { "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 av_parse_video_size(int *width_ptr, int *height_ptr, const char *str) | ||||
{ | { | ||||
int i; | int i; | ||||
@@ -466,6 +471,21 @@ static int date_get_num(const char **pp, | |||||
return val; | 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) | char *av_small_strptime(const char *p, const char *fmt, struct tm *dt) | ||||
{ | { | ||||
int c, val; | int c, val; | ||||
@@ -525,6 +545,14 @@ char *av_small_strptime(const char *p, const char *fmt, struct tm *dt) | |||||
if (!p) | if (!p) | ||||
return NULL; | return NULL; | ||||
break; | break; | ||||
case 'b': | |||||
case 'B': | |||||
case 'h': | |||||
val = date_get_month(&p); | |||||
if (val == -1) | |||||
return NULL; | |||||
dt->tm_mon = val; | |||||
break; | |||||
case '%': | case '%': | ||||
if (*p++ != '%') | if (*p++ != '%') | ||||
return NULL; | return NULL; | ||||
@@ -138,6 +138,13 @@ static void test_av_small_strptime(void) | |||||
{ "%Y - %m - %d", "2012-12-21" }, | { "%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 - %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); | av_log_set_level(AV_LOG_DEBUG); | ||||
@@ -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' 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 - %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() | Testing av_parse_time() | ||||
(now is 2012-03-17 09:14:13.2 +0100, local time is UTC+1) | (now is 2012-03-17 09:14:13.2 +0100, local time is UTC+1) | ||||