Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix compilation error
[simgrid.git] / tools / graphicator / graphicator.c
index c93965f..908cbdb 100644 (file)
@@ -81,12 +81,12 @@ int main(int argc, char **argv)
   char *graphvizFile = NULL;
 
   unsigned int i;
-  xbt_dict_cursor_t cursor_src = NULL;
-  xbt_dict_cursor_t cursor_dst = NULL;
   char *src;
   char *dst;
-  char *data;
   xbt_ex_t e;
+  xbt_lib_cursor_t cursor,cursor_src,cursor_dst;
+  char * key;
+  char **data;
 
   SD_init(&argc, argv);
 
@@ -107,8 +107,10 @@ int main(int argc, char **argv)
   xbt_graph_t graph = xbt_graph_new_graph (0, NULL);
 
   //adding hosts
-  xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) {
-    xbt_graph_new_node (graph, xbt_strdup(src));
+  xbt_lib_foreach(host_lib,cursor,key,data){
+         if(get_network_element_type(key) == SURF_NETWORK_ELEMENT_HOST ||
+                         get_network_element_type(key) == SURF_NETWORK_ELEMENT_ROUTER )
+           xbt_graph_new_node (graph, xbt_strdup(key));
   }
 
   //adding links
@@ -119,19 +121,20 @@ int main(int argc, char **argv)
     xbt_graph_new_node (graph, xbt_strdup (SD_link_get_name(links[i])));
   }
 
-  xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) {
-    xbt_dict_foreach(global_routing->where_network_elements, cursor_dst, dst, data) {
-      if (strcmp(src,"loopback")==0 || strcmp(dst,"loopback")==0) continue;
+
+  xbt_lib_foreach(host_lib,cursor_src,src,data){
+         xbt_lib_foreach(host_lib,cursor_dst,dst,data){
 
       xbt_node_t src_node = xbt_graph_search_node (graph, src, strcmp);
       xbt_node_t dst_node = xbt_graph_search_node (graph, dst, strcmp);
-      TRY {
+      if(get_network_element_type(src) != SURF_NETWORK_ELEMENT_AS &&
+                 get_network_element_type(dst) != SURF_NETWORK_ELEMENT_AS ){
         xbt_dynar_t route = global_routing->get_route(src,dst);
         xbt_node_t previous = src_node;
         for(i=0;i<xbt_dynar_length(route) ;i++)
         {
           void *link = xbt_dynar_get_as(route,i,void *);
-          char *link_name = bprintf("%s",((surf_resource_t) link)->name);
+          char *link_name = xbt_strdup(((surf_resource_t)link)->name);
           if (strcmp(link_name, "loopback")==0 || strcmp(link_name, "__loopback__")==0) continue;
           xbt_node_t link_node = xbt_graph_search_node (graph, link_name, strcmp);
           if (!link_node){
@@ -143,14 +146,15 @@ int main(int argc, char **argv)
             xbt_graph_new_edge (graph, previous, link_node, NULL);
           }
           previous = link_node;
+          free(link_name);
         }
         xbt_edge_t edge = xbt_graph_search_edge (graph, previous, dst_node);
         if (!edge){
           XBT_DEBUG("\%s %s", (char*)xbt_graph_node_get_data(previous), (char*)xbt_graph_node_get_data(dst_node));
           xbt_graph_new_edge (graph, previous, dst_node, NULL);
         }
-      } CATCH(e) {}
     }
+   }
   }
   xbt_graph_export_graphviz (graph, graphvizFile, node_name, edge_name);
   xbt_graph_free_graph (graph, NULL, NULL, NULL);