Xfconfd: Query upper-cased channel name resets all properties
When a channel is queried using an upper-case letter, e.g., xfconf-query -c Displays -l
, all containing properties are reset.
This stems from the fact that channels are loaded unchanged, but created lower-cased. Therefore, a channel name with an upper-case letter causes the check if a channel exists to fail, then a new empty lower-cased channel is created that overwrites the existing one.
This can easily be fixed, although, I'm not sure if any other place also needs to be fixed:
diff --git a/xfconfd/xfconf-backend-perchannel-xml.c b/xfconfd/xfconf-backend-perchannel-xml.c
index ddc8c75..8264f3c 100644
--- a/xfconfd/xfconf-backend-perchannel-xml.c
+++ b/xfconfd/xfconf-backend-perchannel-xml.c
@@ -1641,7 +1641,7 @@ xfconf_backend_perchannel_xml_load_channel(XfconfBackendPerchannelXml *xbpx,
TRACE("entering");
- filename_stem = g_strdup_printf(CONFIG_FILE_FMT, channel_name);
+ filename_stem = g_strdup_printf(CONFIG_FILE_FMT, g_ascii_strdown(channel_name, -1));
filenames = xfce_resource_lookup_all(XFCE_RESOURCE_CONFIG, filename_stem);
user_file = xfce_resource_save_location(XFCE_RESOURCE_CONFIG,
filename_stem, FALSE);
(I'd open a merge request, however, it seems that I am not allowed to fork the repo due to a personal project limit of zero.)