From ab0287fcbdebc8ff416214535d7ee8424406990e Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 16 Feb 2011 09:52:38 +0100 Subject: Move find_info_tag to lavu and add av_ prefix to it Signed-off-by: Janne Grunau --- libavutil/parseutils.c | 39 +++++++++++++++++++++++++++++++++++++++ libavutil/parseutils.h | 8 ++++++++ 2 files changed, 47 insertions(+) (limited to 'libavutil') 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 */ -- cgit v1.2.3