[master] 80c0b3dad param: Extract boolean parsing in its own function

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Mon Jun 27 13:38:06 UTC 2022


commit 80c0b3dadae280b2252ad0c532b0b7528e6447c6
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Tue May 31 08:06:15 2022 +0200

    param: Extract boolean parsing in its own function

diff --git a/bin/varnishd/mgt/mgt_param_tweak.c b/bin/varnishd/mgt/mgt_param_tweak.c
index cba614415..342f3c0e9 100644
--- a/bin/varnishd/mgt/mgt_param_tweak.c
+++ b/bin/varnishd/mgt/mgt_param_tweak.c
@@ -152,33 +152,43 @@ tweak_double(struct vsb *vsb, const struct parspec *par, const char *arg)
 
 /*--------------------------------------------------------------------*/
 
+static int
+parse_boolean(struct vsb *vsb, const char *arg)
+{
+
+	if (!strcasecmp(arg, "off"))
+		return (0);
+	if (!strcasecmp(arg, "disable"))
+		return (0);
+	if (!strcasecmp(arg, "no"))
+		return (0);
+	if (!strcasecmp(arg, "false"))
+		return (0);
+	if (!strcasecmp(arg, "on"))
+		return (1);
+	if (!strcasecmp(arg, "enable"))
+		return (1);
+	if (!strcasecmp(arg, "yes"))
+		return (1);
+	if (!strcasecmp(arg, "true"))
+		return (1);
+
+	VSB_cat(vsb, "use \"on\" or \"off\"\n");
+	return (-1);
+}
+
 int v_matchproto_(tweak_t)
 tweak_boolean(struct vsb *vsb, const struct parspec *par, const char *arg)
 {
 	volatile unsigned *dest;
+	int val;
 
 	dest = par->priv;
 	if (arg != NULL && arg != JSON_FMT) {
-		if (!strcasecmp(arg, "off"))
-			*dest = 0;
-		else if (!strcasecmp(arg, "disable"))
-			*dest = 0;
-		else if (!strcasecmp(arg, "no"))
-			*dest = 0;
-		else if (!strcasecmp(arg, "false"))
-			*dest = 0;
-		else if (!strcasecmp(arg, "on"))
-			*dest = 1;
-		else if (!strcasecmp(arg, "enable"))
-			*dest = 1;
-		else if (!strcasecmp(arg, "yes"))
-			*dest = 1;
-		else if (!strcasecmp(arg, "true"))
-			*dest = 1;
-		else {
-			VSB_cat(vsb, "use \"on\" or \"off\"\n");
+		val = parse_boolean(vsb, arg);
+		if (val < 0)
 			return (-1);
-		}
+		*dest = val;
 	} else if (arg == JSON_FMT) {
 		VSB_printf(vsb, "%s", *dest ? "true" : "false");
 	} else {


More information about the varnish-commit mailing list