1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-18 20:10:29 +01:00

Undo XDG string-escaping when generating menu-entries.

In XDG desktop files, string values are subject to escaping.  Undo this
when parsing them.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
This commit is contained in:
Jeremy Sowden
2019-06-20 21:23:52 +01:00
committed by Carlos R. Mafra
parent 6734646265
commit b32ccee5cb

View File

@@ -297,6 +297,7 @@ static void getKey(char **target, const char *line)
static void getStringValue(char **target, const char *line)
{
const char *p;
char *q;
int kstart;
p = line;
@@ -312,6 +313,26 @@ static void getStringValue(char **target, const char *line)
kstart++;
*target = wstrdup(p + kstart);
for (p = q = *target; *p; p++) {
if (*p != '\\') {
*q++ = *p;
} else {
switch (*++p) {
case 's': *q++ = ' '; break;
case 'n': *q++ = '\n'; break;
case 't': *q++ = '\t'; break;
case 'r': *q++ = '\r'; break;
case '\\': *q++ = '\\'; break;
default:
/*
* Skip invalid escape.
*/
break;
}
}
}
*q = '\0';
}
/* get a localized string value from line. allocates target, which must be wfreed later.