From 6f70598de6df8e18f1f3b2b1a4d0465c2c12d4c7 Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Sun, 9 Mar 2025 01:27:13 +0900 Subject: [PATCH] rcxml: allow empty --- src/config/rcxml.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/config/rcxml.c b/src/config/rcxml.c index a3b3ee3a..42a79d46 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -941,12 +941,6 @@ entry(xmlNode *node, char *nodename, char *content, struct parser_state *state) static uint32_t button_map_from; - if (!nodename) { - return; - } - string_truncate_at_pattern(nodename, ".openbox_config"); - string_truncate_at_pattern(nodename, ".labwc_config"); - if (getenv("LABWC_DEBUG_CONFIG_NODENAMES")) { printf("%s: %s\n", nodename, content); } @@ -1282,10 +1276,24 @@ process_node(xmlNode *node, struct parser_state *state) char *name; content = (char *)node->content; - if (xmlIsBlankNode(node)) { + name = nodename(node, buffer, sizeof(buffer)); + if (!name) { return; } - name = nodename(node, buffer, sizeof(buffer)); + + string_truncate_at_pattern(name, ".openbox_config"); + string_truncate_at_pattern(name, ".labwc_config"); + + if (xmlIsBlankNode(node)) { + /* Allow empty */ + if (!strcasecmp(name, "prefix.desktops") + && string_null_or_empty(content)) { + content = ""; + } else { + return; + } + } + entry(node, name, content, state); } @@ -1765,6 +1773,7 @@ post_processing(void) workspace = znew(*workspace); workspace->name = strdup_printf("%s %d", rc.workspace_config.prefix, i + 1); + string_strip(workspace->name); wl_list_append(&rc.workspace_config.workspaces, &workspace->link); } }