From 0f996373538e1d62d914976aea15784ae045b8a7 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 30 Mar 2022 12:08:00 +0200 Subject: [PATCH] MINOR: filters: alphabetically sort the list of filter names There are very few but they're registered from constructors, hence in a random order. The scope had to be copied when retrieving the next keyword. Note that this also has the effect of listing them sorted in haproxy -vv. --- src/filters.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/filters.c b/src/filters.c index 4594098da0..12159f2b23 100644 --- a/src/filters.c +++ b/src/filters.c @@ -136,24 +136,38 @@ void flt_dump_kws(char **out) { struct flt_kw_list *kwl; + const struct flt_kw *kwp, *kw; + const char *scope = NULL; int index; if (out) *out = NULL; - list_for_each_entry(kwl, &flt_keywords.list, list) { - for (index = 0; kwl->kw[index].kw != NULL; index++) { - if (kwl->kw[index].parse || - flt_find_kw(kwl->kw[index].kw) == &kwl->kw[index]) { - if (out) - memprintf(out, "%s[%4s] %s%s\n", *out ? *out : "", - kwl->scope, - kwl->kw[index].kw, - kwl->kw[index].parse ? "" : " (not supported)"); - else - printf("%s [%s]\n", - kwl->kw[index].kw, kwl->scope); + + for (kw = kwp = NULL;; kwp = kw) { + list_for_each_entry(kwl, &flt_keywords.list, list) { + for (index = 0; kwl->kw[index].kw != NULL; index++) { + if ((kwl->kw[index].parse || + flt_find_kw(kwl->kw[index].kw) == &kwl->kw[index]) + && strordered(kwp ? kwp->kw : NULL, + kwl->kw[index].kw, + kw != kwp ? kw->kw : NULL)) { + kw = &kwl->kw[index]; + scope = kwl->scope; + } } } + + if (kw == kwp) + break; + + if (out) + memprintf(out, "%s[%4s] %s%s\n", *out ? *out : "", + scope, + kw->kw, + kw->parse ? "" : " (not supported)"); + else + printf("%s [%s]\n", + kw->kw, scope); } } -- 2.47.3