aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-12-19 14:29:07 +0000
committerJustus Winter <[email protected]>2016-12-19 14:42:35 +0000
commita45dc0849da0d944ec8c759bc8e3e733b1eb0079 (patch)
tree2c189d454df682772e1c31dcd71dbec04b61bdef
parentgpgscm: Display location when assertions fail. (diff)
downloadgnupg-a45dc0849da0d944ec8c759bc8e3e733b1eb0079.tar.gz
gnupg-a45dc0849da0d944ec8c759bc8e3e733b1eb0079.zip
gpgscm: Change associativity of ::.
* tests/gpgscm/scheme.c (mk_atom): Change associativity of the :: infix-operator. This makes it possible to naturally express accessing nested structures (e.g. a::b::c). Signed-off-by: Justus Winter <[email protected]>
-rw-r--r--tests/gpgscm/scheme.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/tests/gpgscm/scheme.c b/tests/gpgscm/scheme.c
index 3abe12a81..a5b7691fb 100644
--- a/tests/gpgscm/scheme.c
+++ b/tests/gpgscm/scheme.c
@@ -1409,14 +1409,23 @@ static pointer mk_atom(scheme *sc, char *q) {
int has_fp_exp = 0;
#if USE_COLON_HOOK
- if((p=strstr(q,"::"))!=0) {
+ char *next;
+ next = p = q;
+ while ((next = strstr(next, "::")) != 0) {
+ /* Keep looking for the last occurrence. */
+ p = next;
+ next = next + 2;
+ }
+
+ if (p != q) {
*p=0;
return cons(sc, sc->COLON_HOOK,
cons(sc,
cons(sc,
sc->QUOTE,
- cons(sc, mk_atom(sc,p+2), sc->NIL)),
- cons(sc, mk_symbol(sc,strlwr(q)), sc->NIL)));
+ cons(sc, mk_symbol(sc, strlwr(p + 2)),
+ sc->NIL)),
+ cons(sc, mk_atom(sc, q), sc->NIL)));
}
#endif