strtok_r is not needed any more, so remove it from configure.
---
Still somewhat puzzled that av_get_token modifies the input string into
TOKEN+STRING instead of just STRING.
Anyway, here is the strtok_r free version.
Vittorio

 configure               |  6 ++----
 libavfilter/vf_frei0r.c | 19 +++++++++++++------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/configure b/configure
index 2f2a0f7..bf8044d 100755
--- a/configure
+++ b/configure
@@ -1411,7 +1411,6 @@ HAVE_LIST="
     soundcard_h
     strerror_r
     strptime
-    strtok_r
     struct_addrinfo
     struct_group_source_req
     struct_ip_mreq_source
@@ -2019,9 +2018,9 @@ boxblur_filter_deps="gpl"
 cropdetect_filter_deps="gpl"
 delogo_filter_deps="gpl"
 drawtext_filter_deps="libfreetype"
-frei0r_filter_deps="frei0r dlopen strtok_r"
+frei0r_filter_deps="frei0r dlopen"
 frei0r_filter_extralibs='$ldl'
-frei0r_src_filter_deps="frei0r dlopen strtok_r"
+frei0r_src_filter_deps="frei0r dlopen"
 frei0r_src_filter_extralibs='$ldl'
 hqdn3d_filter_deps="gpl"
 interlace_filter_deps="gpl"
@@ -3857,7 +3856,6 @@ check_func_headers malloc.h _aligned_malloc     && enable 
aligned_malloc
 check_func  setrlimit
 check_func  strerror_r
 check_func  strptime
-check_func  strtok_r
 check_func  sched_getaffinity
 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; 
__sync_val_compare_and_swap(ptr, oldval, newval)"
 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c
index 31d28cd..b576286 100644
--- a/libavfilter/vf_frei0r.c
+++ b/libavfilter/vf_frei0r.c
@@ -235,12 +235,19 @@ static av_cold int frei0r_init(AVFilterContext *ctx,
     }
 
     /* see: 
http://piksel.org/frei0r/1.2/spec/1.2/spec/group__pluglocations.html */
-    if ((path = av_strdup(getenv("FREI0R_PATH")))) {
-        char *p, *ptr = NULL;
-        for (p = path; p = strtok_r(p, ":", &ptr); p = NULL)
-            if (s->dl_handle = load_path(ctx, p, dl_name))
-                break;
-        av_free(path);
+    if ((path = getenv("FREI0R_PATH"))) {
+        char *ptr = NULL;
+        do {
+            ptr = av_get_token((const char **)&path, ":");
+            if (!ptr)
+                return AVERROR(ENOMEM);
+            s->dl_handle = load_path(ctx, ptr, dl_name);
+            av_freep(&ptr);
+            if (s->dl_handle)
+                break;              // found
+            if (strlen(path) > 0)   // there could be something to parse still
+                path = &path[1];    // remove the ":" left by av_get_token()
+        } while(strlen(path) > 0);
     }
     if (!s->dl_handle && (path = getenv("HOME"))) {
         char prefix[1024];
-- 
1.8.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to