]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: filters: extend flt_dump_kws() to dump to stdout
authorWilly Tarreau <w@1wt.eu>
Tue, 29 Mar 2022 13:03:09 +0000 (15:03 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 29 Mar 2022 16:01:37 +0000 (18:01 +0200)
When passing a NULL output buffer the function will now dump to stdout
with a more compact format that is more suitable for machine processing.

An entry was added to dump_registered_keyword() to call it when the
keyword class "flt" is requested.

src/filters.c
src/haproxy.c

index 06ae788b9df6ae51314ac68be232bec8c2efc0a1..4594098da023b6aed97eb62a0e97a06078421ef4 100644 (file)
@@ -130,6 +130,7 @@ flt_find_kw(const char *kw)
 /*
  * Dumps all registered "filter" keywords to the <out> string pointer. The
  * unsupported keywords are only dumped if their supported form was not found.
+ * If <out> is NULL, the output is emitted using a more compact format on stdout.
  */
 void
 flt_dump_kws(char **out)
@@ -137,18 +138,20 @@ flt_dump_kws(char **out)
        struct flt_kw_list *kwl;
        int index;
 
-       if (!out)
-               return;
-
-       *out = NULL;
+       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]) {
-                               memprintf(out, "%s[%4s] %s%s\n", *out ? *out : "",
-                                         kwl->scope,
-                                         kwl->kw[index].kw,
-                                         kwl->kw[index].parse ? "" : " (not supported)");
+                               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);
                        }
                }
        }
index b5f368d1eb61d8f179448758937eb98be13f5b3b..6d28c52cdc69f1319109be46c47c7322011a32d5 100644 (file)
@@ -1826,6 +1826,7 @@ static void dump_registered_keywords(void)
                        printf("# List of supported keyword classes:\n");
                        printf("all: list all keywords\n");
                        printf("cfg: configuration keywords\n");
+                       printf("flt: filter names\n");
                        continue;
                }
                else if (strcmp(kwd_dump, "all") == 0) {
@@ -1836,6 +1837,11 @@ static void dump_registered_keywords(void)
                        printf("# List of registered configuration keywords:\n");
                        cfg_dump_registered_keywords();
                }
+
+               if (all || strcmp(kwd_dump, "flt") == 0) {
+                       printf("# List of registered filter names:\n");
+                       flt_dump_kws(NULL);
+               }
        }
 }