summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2009-05-01 18:17:59 +0000
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2009-05-01 18:17:59 +0000
commitdd04911c4e6dc2e1360b5b6960f0eab9f6fc6a28 (patch)
treea507a6268e1cc69da8f1a6a70932856291f473f1
parentd11dbf092c759bd050a7d22e2c2a7171fd4ad36f (diff)
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.c50
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);