Package: wmaker
Version: 0.95.8-3

automatically generated menus prevent some applications from running,
e.g. libreoffice will not run complaining that file "%U does not exist"
and others will open an empty file, e.g. %F.

Looking at the code the XDG menu parser does not strip "%X" arguments
from Exec entries, I attached a sample patch as a workaround to this
problem.
Index: wmaker-0.95.8/util/wmmenugen_parse_xdg.c
===================================================================
--- wmaker-0.95.8.orig/util/wmmenugen_parse_xdg.c
+++ wmaker-0.95.8/util/wmmenugen_parse_xdg.c
@@ -297,7 +297,7 @@ static void getKey(char **target, const
 static void getStringValue(char **target, const char *line)
 {
 	const char *p;
-	int kstart;
+	int kstart, kend;

 	p = line;
 	kstart = 0;
@@ -311,7 +311,15 @@ static void getStringValue(char **target
 	while (*(p + kstart) && isspace(*(p + kstart)))
 		kstart++;

-	*target = wstrdup(p + kstart);
+	/* skip until first % */
+	kend = kstart + 1;
+	while (*(p + kend) && *(p + kend) != '%')
+		kend++;
+
+	/* strip heading white space if any */
+	if(isspace(*(p + kend -1))) kend--;
+
+	*target = wstrndup(p + kstart, kend - kstart);
 }

 /* get a localized string value from line. allocates target, which must be wfreed later.

Reply via email to