diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-02-16 09:52:38 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-02-18 19:52:33 +0100 |
commit | 1b98107c8d49005b84f5d656af85c1fccbd1f238 (patch) | |
tree | 6614cfd64aa8228f8197a984f3c4b9005291cb3e /libavutil | |
parent | 9c9912b995bed00ae2a4717b9d680e30f388117c (diff) | |
download | ffmpeg-1b98107c8d49005b84f5d656af85c1fccbd1f238.tar.gz |
Move find_info_tag to lavu and add av_ prefix to it
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit ab0287fcbdebc8ff416214535d7ee8424406990e)
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/parseutils.c | 39 | ||||
-rw-r--r-- | libavutil/parseutils.h | 8 |
2 files changed, 47 insertions, 0 deletions
diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c index 8e09dade62..d67d31bffe 100644 --- a/libavutil/parseutils.c +++ b/libavutil/parseutils.c @@ -608,6 +608,45 @@ int av_parse_time(int64_t *timeval, const char *datestr, int duration) return 0; } +int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info) +{ + const char *p; + char tag[128], *q; + + p = info; + if (*p == '?') + p++; + for(;;) { + q = tag; + while (*p != '\0' && *p != '=' && *p != '&') { + if ((q - tag) < sizeof(tag) - 1) + *q++ = *p; + p++; + } + *q = '\0'; + q = arg; + if (*p == '=') { + p++; + while (*p != '&' && *p != '\0') { + if ((q - arg) < arg_size - 1) { + if (*p == '+') + *q++ = ' '; + else + *q++ = *p; + } + p++; + } + } + *q = '\0'; + if (!strcmp(tag, tag1)) + return 1; + if (*p != '&') + break; + p++; + } + return 0; +} + #ifdef TEST #undef printf diff --git a/libavutil/parseutils.h b/libavutil/parseutils.h index 517f125a63..c3986af20c 100644 --- a/libavutil/parseutils.h +++ b/libavutil/parseutils.h @@ -106,4 +106,12 @@ 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); +/** + * Attempt to find a specific tag in a URL. + * + * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. + * Return 1 if found. + */ +int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); + #endif /* AVUTIL_PARSEUTILS_H */ |