From a76ecf57fb72cba9fae6432ca223a1a24e4085ca Mon Sep 17 00:00:00 2001 From: "Emden R. Gansner" Date: Thu, 20 Jun 2013 15:40:38 -0400 Subject: [PATCH] Fix setnodeattributes and setedgeattributes functions to handle different semantics of cgraph --- tclpkg/tcldot/tcldot-util.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) 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 } } -- 2.50.1