X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d5a1db1d0b268cb9ed8f37246fd970fce7631943..6e5cfd7ff86900354c20502af95ee5f751492753:/src/xbt/graph.c diff --git a/src/xbt/graph.c b/src/xbt/graph.c index e3ce876fd2..d2f2edfd37 100644 --- a/src/xbt/graph.c +++ b/src/xbt/graph.c @@ -6,6 +6,8 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "simgrid_config.h" /* getline */ +#include #include #include "xbt/sysdep.h" #include "xbt/log.h" @@ -576,10 +578,8 @@ static void __parse_node(void) if (__parse_node_label_and_data) node->data = __parse_node_label_and_data(node, A_graphxml_node_label, A_graphxml_node_data); - xbt_graph_parse_get_double(&(node->position_x), - A_graphxml_node_position_x); - xbt_graph_parse_get_double(&(node->position_y), - A_graphxml_node_position_y); + node->position_x = xbt_graph_parse_get_double(A_graphxml_node_position_x); + node->position_y = xbt_graph_parse_get_double(A_graphxml_node_position_y); xbt_dict_set(parsed_nodes, A_graphxml_node_name, (void *) node, NULL); } @@ -597,7 +597,7 @@ static void __parse_edge(void) edge->data = __parse_edge_label_and_data(edge, A_graphxml_edge_label, A_graphxml_edge_data); - xbt_graph_parse_get_double(&(edge->length), A_graphxml_edge_length); + edge->length = xbt_graph_parse_get_double(A_graphxml_edge_length); XBT_DEBUG("", (char *) (edge->src)->data, @@ -627,7 +627,7 @@ xbt_graph_t xbt_graph_read(const char *filename, ETag_graphxml_edge_fun = __parse_edge; xbt_graph_parse_open(filename); - int res; + _XBT_GNUC_UNUSED int res; res = (*xbt_graph_parse) (); xbt_assert(!res, "Parse error in %s", filename); xbt_graph_parse_close(); @@ -731,6 +731,7 @@ void xbt_graph_export_graphxml(xbt_graph_t g, const char *filename, xbt_graph_t xbt_graph_load (const char *filename) { FILE *file = NULL; + ssize_t read; file = fopen (filename, "r"); xbt_assert(file, "Failed to open %s \n", filename); @@ -740,14 +741,18 @@ xbt_graph_t xbt_graph_load (const char *filename) //read the number of nodes size_t size; char *nnodes_str = NULL; - getline (&nnodes_str, &size, file); + read = getline (&nnodes_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read the number of nodes (errno = %d)", errno); int i, nnodes = atoi (nnodes_str); free (nnodes_str); //read all nodes for (i = 0; i < nnodes; i++){ char *node_str = NULL; - getline (&node_str, &size, file); + read = getline (&node_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read all nodes (errno = %d)", errno); xbt_node_t n; char *name = xbt_strdup (node_str); xbt_str_subst (name, '\n', '\0', 0); @@ -758,14 +763,18 @@ xbt_graph_t xbt_graph_load (const char *filename) //read the number of edges char *nedges_str = NULL; - getline (&nedges_str, &size, file); + read = getline (&nedges_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read the number of edges (errno = %d)", errno); int nedges = atoi (nedges_str); free (nedges_str); //read all edges for (i = 0; i < nedges; i++){ char *edge_str = NULL, edge_id[200], node_source[200], node_target[200]; - getline (&edge_str, &size, file); + read = getline (&edge_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read all edges (errno = %d)", errno); sscanf (edge_str, "%s %s %s", edge_id, node_source, node_target); free (edge_str); xbt_str_subst (edge_id, '\n', '\0', 0); @@ -774,8 +783,7 @@ xbt_graph_t xbt_graph_load (const char *filename) xbt_node_t source = xbt_dict_get (nodes_dict, node_source); xbt_node_t target = xbt_dict_get (nodes_dict, node_target); - xbt_edge_t e; - e = xbt_graph_new_edge (ret, source, target, xbt_strdup(edge_id)); + xbt_graph_new_edge (ret, source, target, xbt_strdup(edge_id)); } xbt_dict_free (&nodes_dict); return ret;