Signed-off-by: Michael Niedermayer <michae...@gmx.at> --- doc/APIchanges | 3 +++ libavformat/format.c | 20 +++----------------- libavutil/avstring.c | 21 +++++++++++++++++++++ libavutil/avstring.h | 7 +++++++ 4 files changed, 34 insertions(+), 17 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges index 7fadab3..7b2f484 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2014-08-09 API changes, most recent first: +2014-10-xx - xxxxxxx - lavu - avstring.h + Add av_match_list() + 2014-09-24 - xxxxxxx - libpostproc 53.1.100 Add visualization support diff --git a/libavformat/format.c b/libavformat/format.c index 1026c8f..2d56e6d 100644 --- a/libavformat/format.c +++ b/libavformat/format.c @@ -80,28 +80,14 @@ void av_register_output_format(AVOutputFormat *format) int av_match_ext(const char *filename, const char *extensions) { - const char *ext, *p; - char ext1[32], *q; + const char *ext; if (!filename) return 0; ext = strrchr(filename, '.'); - if (ext) { - ext++; - p = extensions; - for (;;) { - q = ext1; - while (*p != '\0' && *p != ',' && q - ext1 < sizeof(ext1) - 1) - *q++ = *p++; - *q = '\0'; - if (!av_strcasecmp(ext1, ext)) - return 1; - if (*p == '\0') - break; - p++; - } - } + if (ext) + return av_match_list(ext + 1, extensions, ','); return 0; } diff --git a/libavutil/avstring.c b/libavutil/avstring.c index fd010e4..fe5958b 100644 --- a/libavutil/avstring.c +++ b/libavutil/avstring.c @@ -402,6 +402,27 @@ end: return ret; } +int av_match_list(const char *name, const char *list, char seperator) +{ + const char *p; + char ext1[128], *q; + int i; + + p = list; + for (i = 1;; i++) { + q = ext1; + while (*p != '\0' && *p != seperator && q - ext1 < sizeof(ext1) - 1) + *q++ = *p++; + *q = '\0'; + if (!av_strcasecmp(ext1, name)) + return i; + if (*p == '\0') + break; + p++; + } + return 0; +} + #ifdef TEST int main(void) diff --git a/libavutil/avstring.h b/libavutil/avstring.h index 616c066..b33b82e 100644 --- a/libavutil/avstring.h +++ b/libavutil/avstring.h @@ -358,6 +358,13 @@ int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end, unsigned int flags); /** + * Check if a name is in a list. + * @returns 0 if not found, or the 1 based index where it has been found in the + * list. + */ +int av_match_list(const char *name, const char *list, char seperator); + +/** * @} */ -- 1.7.9.5 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel