[FFmpeg-cvslog] r18726 - trunk/libavfilter/graphparser.c

stefano subversion
Fri May 1 20:18:00 CEST 2009


Author: stefano
Date: Fri May  1 20:17:59 2009
New Revision: 18726

Log:
Make graphparser.c use av_get_token().
This also avoids the need for '\=' escaping.

Modified:
   trunk/libavfilter/graphparser.c

Modified: trunk/libavfilter/graphparser.c
==============================================================================
--- trunk/libavfilter/graphparser.c	Fri May  1 16:38:07 2009	(r18725)
+++ trunk/libavfilter/graphparser.c	Fri May  1 20:17:59 2009	(r18726)
@@ -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 *
 }
 
 /**
- * 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 
     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(con
                                      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);



More information about the ffmpeg-cvslog mailing list