diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-02-16 09:52:38 +0100 |
---|---|---|
committer | Janne Grunau <janne-ffmpeg@jannau.net> | 2011-02-17 15:35:18 +0100 |
commit | ab0287fcbdebc8ff416214535d7ee8424406990e (patch) | |
tree | 48491346ba91fc472e3dc9dbef4b72a94fbef068 /libavutil | |
parent | 979395bbbb9381b522b44c3448c24aef9c819ffc (diff) | |
download | ffmpeg-streaming-ab0287fcbdebc8ff416214535d7ee8424406990e.zip ffmpeg-streaming-ab0287fcbdebc8ff416214535d7ee8424406990e.tar.gz |
Move find_info_tag to lavu and add av_ prefix to it
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
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 8e09dad..d67d31b 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 517f125..c3986af 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 */ |