From: Emden R. Gansner Date: Thu, 20 Jun 2013 19:40:38 +0000 (-0400) Subject: Fix setnodeattributes and setedgeattributes functions to handle different X-Git-Tag: LAST_LIBGRAPH~32^2~177 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a76ecf57fb72cba9fae6432ca223a1a24e4085ca;p=graphviz Fix setnodeattributes and setedgeattributes functions to handle different semantics of cgraph --- diff --git a/tclpkg/tcldot/tcldot-util.c b/tclpkg/tcldot/tcldot-util.c index b8d4f0996..530017648 100644 --- a/tclpkg/tcldot/tcldot-util.c +++ b/tclpkg/tcldot/tcldot-util.c @@ -223,11 +223,12 @@ void setgraphattributes(Agraph_t * g, char *argv[], int argc) Agsym_t *a; for (i = 0; i < argc; i++) { - if (!(a = agfindgraphattr(agroot(g), argv[i]))) #ifndef WITH_CGRAPH + if (!(a = agfindgraphattr(agroot(g), argv[i]))) a = agraphattr(agroot(g), argv[i], ""); agxset(g, a->index, argv[++i]); #else + if (!(a = agfindgraphattr(agroot(g), argv[i]))) a = agattr(agroot(g), AGRAPH, argv[i], ""); agxset(g, a, argv[++i]); #endif @@ -245,13 +246,20 @@ void setedgeattributes(Agraph_t * g, Agedge_t * e, char *argv[], int argc) i++; continue; } - if (!(a = agfindedgeattr(g, argv[i]))) #ifndef WITH_CGRAPH + if (!(a = agfindedgeattr(g, argv[i]))) a = agedgeattr(agroot(g), argv[i], ""); agxset(e, a->index, argv[++i]); #else - a = agattr(agroot(g), AGEDGE, argv[i], ""); - agxset(e, a, argv[++i]); + if (e) { + if (!(a = agfindedgeattr(g, argv[i]))) + a = agattr(agroot(g), AGEDGE, argv[i], ""); + agxset(e, a, argv[++i]); + } + else { + agattr(g, AGEDGE, argv[i], argv[i+1]); + i++; + } #endif } } @@ -262,13 +270,20 @@ void setnodeattributes(Agraph_t * g, Agnode_t * n, char *argv[], int argc) Agsym_t *a; for (i = 0; i < argc; i++) { - if (!(a = agfindnodeattr(g, argv[i]))) #ifndef WITH_CGRAPH + if (!(a = agfindnodeattr(g, argv[i]))) a = agnodeattr(agroot(g), argv[i], ""); agxset(n, a->index, argv[++i]); #else - a = agattr(agroot(g), AGNODE, argv[i], ""); - agxset(n, a, argv[++i]); + if (n) { + if (!(a = agfindnodeattr(g, argv[i]))) + a = agattr(agroot(g), AGNODE, argv[i], ""); + agxset(n, a, argv[++i]); + } + else { + agattr(g, AGNODE, argv[i], argv[i+1]); + i++; + } #endif } }