X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/50fcdd05d9ecd83944f369e6c7a9d118b1092f54..f07101941f4397554a6cee4fbaf3286137865064:/src/xbt/graph.c diff --git a/src/xbt/graph.c b/src/xbt/graph.c index e3ce876fd2..14ed08dc52 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" @@ -731,6 +733,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 +743,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 +765,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 +785,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;