summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2010-09-27 16:23:43 +0000
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2010-09-27 16:23:43 +0000
commit372e2884089e6a17be6d0028386ea2099dd86268 (patch)
treed65753e450b0613788dde3e5f23a116a157cd1c7
parent4a94cfea02f4c3da43d2f2ed25f14ee461a1a315 (diff)
Move av_get_token() from libavfilter to libavutil.
Originally committed as revision 25225 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavfilter/avfilter.h2
-rw-r--r--libavfilter/graphparser.c1
-rw-r--r--libavfilter/parseutils.c71
-rw-r--r--libavfilter/parseutils.h15
-rw-r--r--libavfilter/vf_frei0r.c1
-rw-r--r--libavutil/avstring.c88
-rw-r--r--libavutil/avstring.h16
-rw-r--r--libavutil/avutil.h2
8 files changed, 108 insertions, 88 deletions
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 05ef354521..99a3d8c6d7 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -26,7 +26,7 @@
#define LIBAVFILTER_VERSION_MAJOR 1
#define LIBAVFILTER_VERSION_MINOR 46
-#define LIBAVFILTER_VERSION_MICRO 0
+#define LIBAVFILTER_VERSION_MICRO 1
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c
index c4f621b87e..fab0423698 100644
--- a/libavfilter/graphparser.c
+++ b/libavfilter/graphparser.c
@@ -23,6 +23,7 @@
#include <ctype.h>
#include <string.h>
+#include "libavutil/avstring.h"
#include "graphparser.h"
#include "avfilter.h"
#include "avfiltergraph.h"
diff --git a/libavfilter/parseutils.c b/libavfilter/parseutils.c
index 669ec9d298..b7b8d13b94 100644
--- a/libavfilter/parseutils.c
+++ b/libavfilter/parseutils.c
@@ -28,42 +28,6 @@
#include "libavutil/random_seed.h"
#include "parseutils.h"
-#define WHITESPACES " \n\t"
-
-char *av_get_token(const char **buf, const char *term)
-{
- char *out = av_malloc(strlen(*buf) + 1);
- char *ret= out, *end= out;
- const char *p = *buf;
- if (!out) return NULL;
- p += strspn(p, WHITESPACES);
-
- while(*p && !strspn(p, term)) {
- char c = *p++;
- if(c == '\\' && *p){
- *out++ = *p++;
- end= out;
- }else if(c == '\''){
- while(*p && *p != '\'')
- *out++ = *p++;
- if(*p){
- p++;
- end= out;
- }
- }else{
- *out++ = c;
- }
- }
-
- do{
- *out-- = 0;
- }while(out >= end && strspn(out, WHITESPACES));
-
- *buf = p;
-
- return ret;
-}
-
typedef struct {
const char *name; ///< a string representing the name of the color
uint8_t rgb_color[3]; ///< RGB values for the color
@@ -395,41 +359,6 @@ int main(void)
{
int i;
- const char *strings[] = {
- "''",
- "",
- ":",
- "\\",
- "'",
- " '' :",
- " '' '' :",
- "foo '' :",
- "'foo'",
- "foo ",
- "foo\\",
- "foo': blah:blah",
- "foo\\: blah:blah",
- "foo\'",
- "'foo : ' :blahblah",
- "\\ :blah",
- " foo",
- " foo ",
- " foo \\ ",
- "foo ':blah",
- " foo bar : blahblah",
- "\\f\\o\\o",
- "'foo : \\ \\ ' : blahblah",
- "'\\fo\\o:': blahblah",
- "\\'fo\\o\\:': foo ' :blahblah"
- };
-
- for (i=0; i < FF_ARRAY_ELEMS(strings); i++) {
- const char *p= strings[i];
- printf("|%s|", p);
- printf(" -> |%s|", av_get_token(&p, ":"));
- printf(" + |%s|\n", p);
- }
-
printf("\nTesting av_parse_color()\n");
{
uint8_t rgba[4];
diff --git a/libavfilter/parseutils.h b/libavfilter/parseutils.h
index a139c952ab..59c52627a9 100644
--- a/libavfilter/parseutils.h
+++ b/libavfilter/parseutils.h
@@ -28,21 +28,6 @@
#include "libavutil/opt.h"
/**
- * Unescape the given string until a non escaped terminating char,
- * and return the token corresponding to the unescaped string.
- *
- * The normal \ and ' escaping is supported. Leading and trailing
- * whitespaces are removed.
- *
- * @param buf the buffer to parse, buf will be updated to point to the
- * terminating char
- * @param term a 0-terminated list of terminating chars
- * @return the malloced unescaped string, which must be av_freed by
- * the user, NULL in case of allocation failure
- */
-char *av_get_token(const char **buf, const char *term);
-
-/**
* Put the RGBA values that correspond to color_string in rgba_color.
*
* @param color_string a string specifying a color. It can be the name of
diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c
index 4ad7125875..1303b03c87 100644
--- a/libavfilter/vf_frei0r.c
+++ b/libavfilter/vf_frei0r.c
@@ -26,6 +26,7 @@
#include <dlfcn.h>
#include <frei0r.h>
+#include "libavutil/avstring.h"
#include "avfilter.h"
#include "parseutils.h"
diff --git a/libavutil/avstring.c b/libavutil/avstring.c
index 4844e28db2..b573dd6761 100644
--- a/libavutil/avstring.c
+++ b/libavutil/avstring.c
@@ -97,3 +97,91 @@ char *av_d2str(double d)
if(str) snprintf(str, 16, "%f", d);
return str;
}
+
+#define WHITESPACES " \n\t"
+
+char *av_get_token(const char **buf, const char *term)
+{
+ char *out = av_malloc(strlen(*buf) + 1);
+ char *ret= out, *end= out;
+ const char *p = *buf;
+ if (!out) return NULL;
+ p += strspn(p, WHITESPACES);
+
+ while(*p && !strspn(p, term)) {
+ char c = *p++;
+ if(c == '\\' && *p){
+ *out++ = *p++;
+ end= out;
+ }else if(c == '\''){
+ while(*p && *p != '\'')
+ *out++ = *p++;
+ if(*p){
+ p++;
+ end= out;
+ }
+ }else{
+ *out++ = c;
+ }
+ }
+
+ do{
+ *out-- = 0;
+ }while(out >= end && strspn(out, WHITESPACES));
+
+ *buf = p;
+
+ return ret;
+}
+
+#ifdef TEST
+
+#undef printf
+
+int main(void)
+{
+ int i;
+
+ printf("Testing av_get_token()\n");
+ {
+ const char *strings[] = {
+ "''",
+ "",
+ ":",
+ "\\",
+ "'",
+ " '' :",
+ " '' '' :",
+ "foo '' :",
+ "'foo'",
+ "foo ",
+ " ' foo ' ",
+ "foo\\",
+ "foo': blah:blah",
+ "foo\\: blah:blah",
+ "foo\'",
+ "'foo : ' :blahblah",
+ "\\ :blah",
+ " foo",
+ " foo ",
+ " foo \\ ",
+ "foo ':blah",
+ " foo bar : blahblah",
+ "\\f\\o\\o",
+ "'foo : \\ \\ ' : blahblah",
+ "'\\fo\\o:': blahblah",
+ "\\'fo\\o\\:': foo ' :blahblah"
+ };
+
+ for (i=0; i < FF_ARRAY_ELEMS(strings); i++) {
+ const char *p= strings[i];
+ printf("|%s|", p);
+ printf(" -> |%s|", av_get_token(&p, ":"));
+ printf(" + |%s|\n", p);
+ }
+ }
+
+ return 0;
+}
+
+#endif /* TEST */
diff --git a/libavutil/avstring.h b/libavutil/avstring.h
index 01c2391b5f..04d1197386 100644
--- a/libavutil/avstring.h
+++ b/libavutil/avstring.h
@@ -114,4 +114,20 @@ size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...);
*/
char *av_d2str(double d);
+/**
+ * Unescape the given string until a non escaped terminating char,
+ * and return the token corresponding to the unescaped string.
+ *
+ * The normal \ and ' escaping is supported. Leading and trailing
+ * whitespaces are removed, unless they are escaped with '\' or are
+ * enclosed between ''.
+ *
+ * @param buf the buffer to parse, buf will be updated to point to the
+ * terminating char
+ * @param term a 0-terminated list of terminating chars
+ * @return the malloced unescaped string, which must be av_freed by
+ * the user, NULL in case of allocation failure
+ */
+char *av_get_token(const char **buf, const char *term);
+
#endif /* AVUTIL_AVSTRING_H */
diff --git a/libavutil/avutil.h b/libavutil/avutil.h
index 470d30e765..c441023c4b 100644
--- a/libavutil/avutil.h
+++ b/libavutil/avutil.h
@@ -40,7 +40,7 @@
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
#define LIBAVUTIL_VERSION_MAJOR 50
-#define LIBAVUTIL_VERSION_MINOR 29
+#define LIBAVUTIL_VERSION_MINOR 30
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \