lavu/parseutils: add av_small_strptime()
Make internal small_strptime() function public, and use it in place of strptime(). This allows to avoid a dependency on strptime() on systems which do not support it. In particular, fix trac ticket #992.
This commit is contained in:
parent
79dcd58d83
commit
29e972f67c
7 changed files with 40 additions and 27 deletions
2
configure
vendored
2
configure
vendored
|
@ -1359,7 +1359,6 @@ HAVE_LIST="
|
||||||
socklen_t
|
socklen_t
|
||||||
soundcard_h
|
soundcard_h
|
||||||
strerror_r
|
strerror_r
|
||||||
strptime
|
|
||||||
struct_addrinfo
|
struct_addrinfo
|
||||||
struct_group_source_req
|
struct_group_source_req
|
||||||
struct_ip_mreq_source
|
struct_ip_mreq_source
|
||||||
|
@ -3423,7 +3422,6 @@ check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
|
||||||
check_func setrlimit
|
check_func setrlimit
|
||||||
check_func snprintf
|
check_func snprintf
|
||||||
check_func strerror_r
|
check_func strerror_r
|
||||||
check_func strptime
|
|
||||||
check_func sched_getaffinity
|
check_func sched_getaffinity
|
||||||
check_func sysconf
|
check_func sysconf
|
||||||
check_func sysctl
|
check_func sysctl
|
||||||
|
|
|
@ -15,6 +15,12 @@ libavutil: 2011-04-18
|
||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2012-09-01 - xxxxxxx - lavu 51.72.100 - parseutils.h
|
||||||
|
Add av_small_strptime() time parsing function.
|
||||||
|
|
||||||
|
Can be used as a stripped-down replacement for strptime(), on
|
||||||
|
systems which do not support it.
|
||||||
|
|
||||||
2012-08-13 - xxxxxxx - lavfi 3.8.100 - avfilter.h
|
2012-08-13 - xxxxxxx - lavfi 3.8.100 - avfilter.h
|
||||||
Add avfilter_get_class() function, and priv_class field to AVFilter
|
Add avfilter_get_class() function, and priv_class field to AVFilter
|
||||||
struct.
|
struct.
|
||||||
|
|
|
@ -4478,20 +4478,14 @@ void ff_make_absolute_url(char *buf, int size, const char *base,
|
||||||
|
|
||||||
int64_t ff_iso8601_to_unix_time(const char *datestr)
|
int64_t ff_iso8601_to_unix_time(const char *datestr)
|
||||||
{
|
{
|
||||||
#if HAVE_STRPTIME
|
|
||||||
struct tm time1 = {0}, time2 = {0};
|
struct tm time1 = {0}, time2 = {0};
|
||||||
char *ret1, *ret2;
|
char *ret1, *ret2;
|
||||||
ret1 = strptime(datestr, "%Y - %m - %d %T", &time1);
|
ret1 = av_small_strptime(datestr, "%Y - %m - %d %H:%M:%S", &time1);
|
||||||
ret2 = strptime(datestr, "%Y - %m - %dT%T", &time2);
|
ret2 = av_small_strptime(datestr, "%Y - %m - %dT%H:%M:%S", &time2);
|
||||||
if (ret2 && !ret1)
|
if (ret2 && !ret1)
|
||||||
return av_timegm(&time2);
|
return av_timegm(&time2);
|
||||||
else
|
else
|
||||||
return av_timegm(&time1);
|
return av_timegm(&time1);
|
||||||
#else
|
|
||||||
av_log(NULL, AV_LOG_WARNING, "strptime() unavailable on this system, cannot convert "
|
|
||||||
"the date string.\n");
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int avformat_query_codec(AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance)
|
int avformat_query_codec(AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance)
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 54
|
#define LIBAVFORMAT_VERSION_MAJOR 54
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 25
|
#define LIBAVFORMAT_VERSION_MINOR 25
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 104
|
#define LIBAVFORMAT_VERSION_MICRO 105
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
LIBAVFORMAT_VERSION_MINOR, \
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
|
|
@ -438,17 +438,7 @@ static int date_get_num(const char **pp,
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
char *av_small_strptime(const char *p, const char *fmt, struct tm *dt)
|
||||||
* Parse the input string p according to the format string fmt and
|
|
||||||
* store its results in the structure dt.
|
|
||||||
* This implementation supports only a subset of the formats supported
|
|
||||||
* by the standard strptime().
|
|
||||||
*
|
|
||||||
* @return a pointer to the first character not processed in this
|
|
||||||
* function call, or NULL in case the function fails to match all of
|
|
||||||
* the fmt string and therefore an error occurred
|
|
||||||
*/
|
|
||||||
static char *small_strptime(const char *p, const char *fmt, struct tm *dt)
|
|
||||||
{
|
{
|
||||||
int c, val;
|
int c, val;
|
||||||
|
|
||||||
|
@ -558,7 +548,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||||
|
|
||||||
/* parse the year-month-day part */
|
/* parse the year-month-day part */
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(date_fmt); i++) {
|
for (i = 0; i < FF_ARRAY_ELEMS(date_fmt); i++) {
|
||||||
q = small_strptime(p, date_fmt[i], &dt);
|
q = av_small_strptime(p, date_fmt[i], &dt);
|
||||||
if (q)
|
if (q)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -576,7 +566,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||||
|
|
||||||
/* parse the hour-minute-second part */
|
/* parse the hour-minute-second part */
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(time_fmt); i++) {
|
for (i = 0; i < FF_ARRAY_ELEMS(time_fmt); i++) {
|
||||||
q = small_strptime(p, time_fmt[i], &dt);
|
q = av_small_strptime(p, time_fmt[i], &dt);
|
||||||
if (q)
|
if (q)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -587,7 +577,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
|
||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
/* parse timestr as HH:MM:SS */
|
/* parse timestr as HH:MM:SS */
|
||||||
q = small_strptime(p, time_fmt[0], &dt);
|
q = av_small_strptime(p, time_fmt[0], &dt);
|
||||||
if (!q) {
|
if (!q) {
|
||||||
/* parse timestr as S+ */
|
/* parse timestr as S+ */
|
||||||
dt.tm_sec = strtol(p, (void *)&q, 10);
|
dt.tm_sec = strtol(p, (void *)&q, 10);
|
||||||
|
|
|
@ -132,6 +132,31 @@ int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
|
||||||
*/
|
*/
|
||||||
int av_parse_time(int64_t *timeval, const char *timestr, int duration);
|
int av_parse_time(int64_t *timeval, const char *timestr, int duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the input string p according to the format string fmt and
|
||||||
|
* store its results in the structure dt.
|
||||||
|
* This implementation supports only a subset of the formats supported
|
||||||
|
* by the standard strptime().
|
||||||
|
*
|
||||||
|
* In particular it actually supports the parameters:
|
||||||
|
* - %H: the hour as a decimal number, using a 24-hour clock, in the
|
||||||
|
* range '00' through '23'
|
||||||
|
* - %M: the minute as a decimal number, using a 24-hour clock, in the
|
||||||
|
* range '00' through '59'
|
||||||
|
* - %S: the second as a decimal number, using a 24-hour clock, in the
|
||||||
|
* range '00' through '59'
|
||||||
|
* - %Y: the year as a decimal number, using the Gregorian calendar
|
||||||
|
* - %m: the month as a decimal number, in the range '1' through '12'
|
||||||
|
* - %d: the day of the month as a decimal number, in the range '1'
|
||||||
|
* through '31'
|
||||||
|
* - %%: a literal '%'
|
||||||
|
*
|
||||||
|
* @return a pointer to the first character not processed in this
|
||||||
|
* function call, or NULL in case the function fails to match all of
|
||||||
|
* the fmt string and therefore an error occurred
|
||||||
|
*/
|
||||||
|
char *av_small_strptime(const char *p, const char *fmt, struct tm *dt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to find a specific tag in a URL.
|
* Attempt to find a specific tag in a URL.
|
||||||
*
|
*
|
||||||
|
|
|
@ -39,8 +39,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 51
|
#define LIBAVUTIL_VERSION_MAJOR 51
|
||||||
#define LIBAVUTIL_VERSION_MINOR 71
|
#define LIBAVUTIL_VERSION_MINOR 72
|
||||||
#define LIBAVUTIL_VERSION_MICRO 101
|
#define LIBAVUTIL_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
LIBAVUTIL_VERSION_MINOR, \
|
LIBAVUTIL_VERSION_MINOR, \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue