Currently comments in bindings.cfg are parsed dumbly (but efficiently)
as the first occurrence of '#', even if it occurs in a pair of quotes.
Attached is a more intelligent way that handles such quotes.
"eesh exec" in a terminal, and the exec commands in the .menu files are
both able to handle this, I guess because the shell is doing that
parsing.
Eg.
eesh exec logger http://hello#world
eesh exec logger 'http://hello #world'
--- a/src/aclass.c 2023-06-25 12:32:51.000000000 -0400
+++ b/src/aclass.c 2023-06-25 12:47:03.000000000 -0400
@@ -692,12 +692,34 @@
ActionClass *ac = *pac;
Action *aa = *paa;
int len, len2;
-
- len = strcspn(s, "#\r\n");
+ char *s2, *s3;
+ int quoteclosed;
+
+ len = strcspn(s, "\r\n");
if (len <= 0)
return;
s[len] = '\0';
+ s2 = s - 1;
+ quoteclosed = 0;
+ while (!quoteclosed && (s2 = strchr(s2+1, '#'))) {
+ quoteclosed = 1;
+ for (s3=s; s3<s2; s3++)
+ if (*s3 == '\'') {
+ while (++s3<s2 && *s3 != '\'' && *(s3 - 1) !=
'\\' ) ;
+ if (s3 == s2)
+ quoteclosed = 0;
+ }
+ else if (*s3 == '\"') {
+ while (++s3<s2 && *s3 != '\"' && *(s3 - 1) !=
'\\' ) ;
+ if (s3 == s2)
+ quoteclosed = 0;
+ }
+ }
+ if (s2)
+ s[s2-s] = '\0';
+
+
prm2[0] = prm3[0] = '\0';
len2 = 0;
len = sscanf(s, "%16s %n%127s %16s", prm1, &len2, prm2, prm3);
_______________________________________________
enlightenment-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-users