X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/09d1d6bd830abb339ca148d2a6b90e2f06e9a737..a28a695108f7e9ae7dafc83a2d39d17778f5fc98:/src/simdag/sd_dotloader.c diff --git a/src/simdag/sd_dotloader.c b/src/simdag/sd_dotloader.c index 71be0c04f3..25795b68eb 100644 --- a/src/simdag/sd_dotloader.c +++ b/src/simdag/sd_dotloader.c @@ -27,17 +27,23 @@ xbt_dynar_t SD_dotload_generic(const char * filename); static double dot_parse_double(const char *string) { - if (string == NULL) - return -1; - int ret = 0; - double value = -1; - - ret = sscanf(string, "%lg", &value); - if (ret != 1) - XBT_WARN("%s is not a double", string); - return value; + if (string == NULL) + return -1; + double value = -1; + char *err; + + //ret = sscanf(string, "%lg", &value); + errno = 0; + value = strtod(string,&err); + if(errno) + { + XBT_WARN("Failed to convert string to double: %s\n",strerror(errno)); + return -1; + } + return value; } + static int dot_parse_int(const char *string) { if (string == NULL) @@ -312,7 +318,7 @@ void dot_add_task(Agnode_t * dag_node) computer = xbt_dynar_new(sizeof(SD_task_t), NULL); xbt_dict_set(computers, char_performer, computer, NULL); } - if(performer < host_lib->count){ + if(performer < xbt_lib_length(host_lib)){ // the wanted computer is available SD_task_t *task_test = NULL; if(order < computer->used) @@ -348,9 +354,10 @@ void dot_add_task(Agnode_t * dag_node) void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge) { SD_task_t file; - - char name[80]; - sprintf(name, "%s->%s", agnameof(agtail(edge)), agnameof(aghead(edge))); + char *name_tail=agnameof(agtail(edge)); + char *name_head=agnameof(aghead(edge)); + char *name = malloc((strlen(name_head)+strlen(name_tail)+3)*sizeof(char)); + sprintf(name, "%s->%s", name_tail, name_head); double size = dot_parse_double(agget(edge, (char *) "size")); XBT_DEBUG("size : %e, get size : %s", size, agget(edge, (char *) "size")); @@ -375,6 +382,7 @@ void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge) SD_task_dependency_add(NULL, NULL, file, current_job); } } + free(name); } /* dot_add_output_dependencies create the dependencies between a @@ -384,8 +392,10 @@ void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge) void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge) { SD_task_t file; - char name[80]; - sprintf(name, "%s->%s", agnameof(agtail(edge)), agnameof(aghead(edge))); + char *name_tail=agnameof(agtail(edge)); + char *name_head=agnameof(aghead(edge)); + char *name = malloc((strlen(name_head)+strlen(name_tail)+3)*sizeof(char)); + sprintf(name, "%s->%s", name_tail, name_head); double size = dot_parse_double(agget(edge, (char *) "size")); XBT_DEBUG("size : %e, get size : %s", size, agget(edge, (char *) "size")); @@ -413,4 +423,5 @@ void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge) SD_task_dependency_add(NULL, NULL, current_job, file); } } + free(name); }