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: 950313ebf7 ("tools: bootconfig: Add bootconfig command")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Masami Hiramatsu 2020-06-16 19:14:17 +09:00 committed by Steven Rostedt (VMware)
parent 4e264ffd95
commit 272da3279d
1 changed files with 8 additions and 6 deletions

View File

@ -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));
}