[dm-devel] [PATCH 6/9] libmultipath: make snprint_pctable indent a variable amount

Benjamin Marzinski bmarzins at redhat.com
Tue Apr 12 01:59:56 UTC 2022


Instead of always indenting two tabs, which is what is needed in for
the protocol subsection of the device subsection, indent a variable
amount. This will be needed in a future patch.

Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
---
 libmultipath/print.c | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/libmultipath/print.c b/libmultipath/print.c
index 46d231ed..093e43aa 100644
--- a/libmultipath/print.c
+++ b/libmultipath/print.c
@@ -1407,28 +1407,42 @@ int snprint_multipath_topology_json (struct strbuf *buff,
 }
 
 static int
-snprint_pcentry (struct strbuf *buff, const struct pcentry *pce,
+snprint_pcentry (struct strbuf *buff, int indent, const struct pcentry *pce,
 		 const struct keyword *rootkw)
 {
 	int i, rc;
 	struct keyword *kw;
 	size_t initial_len = get_strbuf_len(buff);
+	STRBUF_ON_STACK(fmt);
 
-	if ((rc = append_strbuf_str(buff, "\t\tprotocol {\n")) < 0)
+	for (i = 0; i < indent; i++)
+		if ((rc = append_strbuf_str(&fmt, "\t")) < 0)
+			return rc;
+	if ((rc = append_strbuf_str(&fmt, "\t%k %v\n")) < 0)
+			return rc;
+
+	for (i = 0; i < indent; i++)
+		if ((rc = append_strbuf_str(buff, "\t")) < 0)
+			return rc;
+	if ((rc = append_strbuf_str(buff, "protocol {\n")) < 0)
 		return rc;
 
 	iterate_sub_keywords(rootkw, kw, i) {
-		if ((rc = snprint_keyword(buff, "\t\t\t%k %v\n", kw, pce)) < 0)
+		if ((rc = snprint_keyword(buff, get_strbuf_str(&fmt), kw,
+					  pce)) < 0)
 			return rc;
 	}
 
-	if ((rc = append_strbuf_str(buff, "\t\t}\n")) < 0)
+	for (i = 0; i < indent; i++)
+		if ((rc = append_strbuf_str(buff, "\t")) < 0)
+			return rc;
+	if ((rc = append_strbuf_str(buff, "}\n")) < 0)
 		return rc;
 	return get_strbuf_len(buff) - initial_len;
 }
 
 static int
-snprint_pctable (const struct config *conf, struct strbuf *buff,
+snprint_pctable (const struct config *conf, struct strbuf *buff, int indent,
 		 const struct _vector *pctable, const struct keyword *rootkw)
 {
 	int i, rc;
@@ -1439,7 +1453,7 @@ snprint_pctable (const struct config *conf, struct strbuf *buff,
 	assert(rootkw);
 
 	vector_foreach_slot(pctable, pce, i) {
-		if ((rc = snprint_pcentry(buff, pce, rootkw)) < 0)
+		if ((rc = snprint_pcentry(buff, indent, pce, rootkw)) < 0)
 			return rc;
 	}
 	return get_strbuf_len(buff) - initial_len;
@@ -1468,7 +1482,7 @@ snprint_hwentry (const struct config *conf,
 	}
 
 	if (hwe->pctable &&
-	    (rc = snprint_pctable(conf, buff, hwe->pctable, rootkw)) < 0)
+	    (rc = snprint_pctable(conf, buff, 2, hwe->pctable, rootkw)) < 0)
 		return rc;
 
 	if ((rc = append_strbuf_str(buff, "\t}\n")) < 0)
-- 
2.17.2



More information about the dm-devel mailing list