You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
Merge commit '108f2f381acb93827fb4add0517eeae859afa3bf'
* commit '108f2f381acb93827fb4add0517eeae859afa3bf': parseutils: Extend small_strptime to be used in avformat Conflicts: libavutil/parseutils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -465,68 +465,71 @@ char *av_small_strptime(const char *p, const char *fmt, struct tm *dt)
|
|||||||
{
|
{
|
||||||
int c, val;
|
int c, val;
|
||||||
|
|
||||||
for(;;) {
|
while((c = *fmt++)) {
|
||||||
/* consume time string until a non whitespace char is found */
|
if (c != '%') {
|
||||||
while (av_isspace(*fmt)) {
|
if (av_isspace(c))
|
||||||
while (av_isspace(*p))
|
for (; *p && av_isspace(*p); p++);
|
||||||
p++;
|
else if (*p != c)
|
||||||
fmt++;
|
return NULL;
|
||||||
|
else p++;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
c = *fmt++;
|
c = *fmt++;
|
||||||
if (c == '\0') {
|
switch(c) {
|
||||||
return (char *)p;
|
case 'H':
|
||||||
} else if (c == '%') {
|
case 'J':
|
||||||
c = *fmt++;
|
val = date_get_num(&p, 0, c == 'H' ? 23 : INT_MAX, 2);
|
||||||
switch(c) {
|
|
||||||
case 'H':
|
if (val == -1)
|
||||||
case 'J':
|
|
||||||
val = date_get_num(&p, 0, c == 'H' ? 23 : INT_MAX, 2);
|
|
||||||
if (val == -1)
|
|
||||||
return NULL;
|
|
||||||
dt->tm_hour = val;
|
|
||||||
break;
|
|
||||||
case 'M':
|
|
||||||
val = date_get_num(&p, 0, 59, 2);
|
|
||||||
if (val == -1)
|
|
||||||
return NULL;
|
|
||||||
dt->tm_min = val;
|
|
||||||
break;
|
|
||||||
case 'S':
|
|
||||||
val = date_get_num(&p, 0, 59, 2);
|
|
||||||
if (val == -1)
|
|
||||||
return NULL;
|
|
||||||
dt->tm_sec = val;
|
|
||||||
break;
|
|
||||||
case 'Y':
|
|
||||||
val = date_get_num(&p, 0, 9999, 4);
|
|
||||||
if (val == -1)
|
|
||||||
return NULL;
|
|
||||||
dt->tm_year = val - 1900;
|
|
||||||
break;
|
|
||||||
case 'm':
|
|
||||||
val = date_get_num(&p, 1, 12, 2);
|
|
||||||
if (val == -1)
|
|
||||||
return NULL;
|
|
||||||
dt->tm_mon = val - 1;
|
|
||||||
break;
|
|
||||||
case 'd':
|
|
||||||
val = date_get_num(&p, 1, 31, 2);
|
|
||||||
if (val == -1)
|
|
||||||
return NULL;
|
|
||||||
dt->tm_mday = val;
|
|
||||||
break;
|
|
||||||
case '%':
|
|
||||||
goto match;
|
|
||||||
default:
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
dt->tm_hour = val;
|
||||||
} else {
|
break;
|
||||||
match:
|
case 'M':
|
||||||
if (c != *p)
|
val = date_get_num(&p, 0, 59, 2);
|
||||||
|
if (val == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
p++;
|
dt->tm_min = val;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
val = date_get_num(&p, 0, 59, 2);
|
||||||
|
if (val == -1)
|
||||||
|
return NULL;
|
||||||
|
dt->tm_sec = val;
|
||||||
|
break;
|
||||||
|
case 'Y':
|
||||||
|
val = date_get_num(&p, 0, 9999, 4);
|
||||||
|
if (val == -1)
|
||||||
|
return NULL;
|
||||||
|
dt->tm_year = val - 1900;
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
val = date_get_num(&p, 1, 12, 2);
|
||||||
|
if (val == -1)
|
||||||
|
return NULL;
|
||||||
|
dt->tm_mon = val - 1;
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
val = date_get_num(&p, 1, 31, 2);
|
||||||
|
if (val == -1)
|
||||||
|
return NULL;
|
||||||
|
dt->tm_mday = val;
|
||||||
|
break;
|
||||||
|
case 'T':
|
||||||
|
p = av_small_strptime(p, "%H:%M:%S", dt);
|
||||||
|
if (!p)
|
||||||
|
return NULL;
|
||||||
|
break;
|
||||||
|
case '%':
|
||||||
|
if (*p++ != '%')
|
||||||
|
return NULL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return (char*)p;
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t av_timegm(struct tm *tm)
|
time_t av_timegm(struct tm *tm)
|
||||||
|
Reference in New Issue
Block a user