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