Commit 272da327 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Steven Rostedt (VMware)
Browse files

tools/bootconfig: Fix to use correct quotes for value

Fix bootconfig tool to select double or single quotes
correctly according to the value.

If a bootconfig value includes a double quote character,
we must use single-quotes to quote that value.

Link: http://lkml.kernel.org/r/159230245697.65555.12444299015852932304.stgit@devnote2



Cc: stable@vger.kernel.org
Fixes: 950313eb ("tools: bootconfig: Add bootconfig command")
Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 4e264ffd
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -14,13 +14,18 @@
#include <linux/kernel.h>
#include <linux/bootconfig.h>

static int xbc_show_array(struct xbc_node *node)
static int xbc_show_value(struct xbc_node *node)
{
	const char *val;
	char q;
	int i = 0;

	xbc_array_for_each_value(node, val) {
		printf("\"%s\"%s", val, node->next ? ", " : ";\n");
		if (strchr(val, '"'))
			q = '\'';
		else
			q = '"';
		printf("%c%s%c%s", q, val, q, node->next ? ", " : ";\n");
		i++;
	}
	return i;
@@ -48,10 +53,7 @@ static void xbc_show_compact_tree(void)
			continue;
		} else if (cnode && xbc_node_is_value(cnode)) {
			printf("%s = ", xbc_node_get_data(node));
			if (cnode->next)
				xbc_show_array(cnode);
			else
				printf("\"%s\";\n", xbc_node_get_data(cnode));
			xbc_show_value(cnode);
		} else {
			printf("%s;\n", xbc_node_get_data(node));
		}