diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2009-05-01 18:17:59 +0000 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2009-05-01 18:17:59 +0000 |
commit | dd04911c4e6dc2e1360b5b6960f0eab9f6fc6a28 (patch) | |
tree | a507a6268e1cc69da8f1a6a70932856291f473f1 | |
parent | d11dbf092c759bd050a7d22e2c2a7171fd4ad36f (diff) | |
download | ffmpeg-dd04911c4e6dc2e1360b5b6960f0eab9f6fc6a28.tar.gz |
Make graphparser.c use av_get_token().
This also avoids the need for '\=' escaping.
Originally committed as revision 18726 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavfilter/graphparser.c | 50 |
1 files changed, 4 insertions, 46 deletions
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index a51331fb22..9e4cd4373d 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -26,6 +26,7 @@ #include "graphparser.h" #include "avfilter.h" #include "avfiltergraph.h" +#include "parseutils.h" #define WHITESPACES " \n\t" @@ -44,49 +45,6 @@ static int link_filter(AVFilterContext *src, int srcpad, } /** - * Consumes a string from *buf. - * @return a copy of the consumed string, which should be free'd after use - */ -static char *consume_string(const char **buf) -{ - char *out = av_malloc(strlen(*buf) + 1); - char *ret = out; - - *buf += strspn(*buf, WHITESPACES); - - do{ - char c = *(*buf)++; - switch (c) { - case '\\': - *out++ = *(*buf)++; - break; - case '\'': - while(**buf && **buf != '\'') - *out++ = *(*buf)++; - if(**buf) (*buf)++; - break; - case 0: - case ']': - case '[': - case '=': - case ',': - case ';': - case ' ': - case '\n': - *out++ = 0; - break; - default: - *out++ = c; - } - } while(out[-1]); - - (*buf)--; - *buf += strspn(*buf, WHITESPACES); - - return ret; -} - -/** * Parse "[linkname]" * @param name a pointer (that need to be free'd after use) to the name between * parenthesis @@ -97,7 +55,7 @@ static char *parse_link_name(const char **buf, AVClass *log_ctx) char *name; (*buf)++; - name = consume_string(buf); + name = av_get_token(buf, "]"); if(!name[0]) { av_log(log_ctx, AV_LOG_ERROR, @@ -162,12 +120,12 @@ static AVFilterContext *parse_filter(const char **buf, AVFilterGraph *graph, int index, AVClass *log_ctx) { char *opts = NULL; - char *name = consume_string(buf); + char *name = av_get_token(buf, "=,"); AVFilterContext *ret; if(**buf == '=') { (*buf)++; - opts = consume_string(buf); + opts = av_get_token(buf, "[],\n"); } ret = create_filter(graph, index, name, opts, log_ctx); |