Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Argh ... a parse error is killing me, lets clean up my mess before dying
[simgrid.git] / src / surf / surfxml_parse.c
index 36ddde5..3d6a122 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011. The SimGrid Team.
+/* Copyright (c) 2006-2013. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -33,9 +33,12 @@ extern AS_t current_routing;
 void surf_parse_error(const char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
+  int lineno = surf_parse_lineno;
   char *msg = bvprintf(fmt,va);
   va_end(va);
-  xbt_die("Parse error at %s:%d: %s", surf_parsed_filename, surf_parse_lineno, msg);
+  cleanup();
+  surf_exit();
+  xbt_die("Parse error at %s:%d: %s", surf_parsed_filename, lineno, msg);
 }
 void surf_parse_warn(const char *fmt, ...) {
   va_list va;
@@ -232,6 +235,7 @@ void ETag_surfxml_storage(void)
   storage.id = A_surfxml_storage_id;
   storage.type_id = A_surfxml_storage_typeId;
   storage.content = A_surfxml_storage_content;
+  storage.content_type = A_surfxml_storage_content___type;
   storage.properties = current_property_set;
   sg_platf_new_storage(&storage);
   current_property_set = NULL;
@@ -248,6 +252,7 @@ void ETag_surfxml_storage___type(void)
   memset(&storage_type,0,sizeof(storage_type));
 
   storage_type.content = A_surfxml_storage___type_content;
+  storage_type.content_type = A_surfxml_storage___type_content___type;
   storage_type.id = A_surfxml_storage___type_id;
   storage_type.model = A_surfxml_storage___type_model;
   storage_type.properties = current_property_set;
@@ -278,7 +283,7 @@ void ETag_surfxml_mount(void)
   memset(&mount,0,sizeof(mount));
 
   mount.name = A_surfxml_mount_name;
-  mount.id = A_surfxml_mount_id;
+  mount.storageId = A_surfxml_mount_storageId;
   sg_platf_new_mount(&mount);
 }
 
@@ -447,6 +452,7 @@ void ETag_surfxml_host(void)    {
                  xbt_dynar_push_as(host.power_peak, double, power_value);
                  XBT_DEBUG("Power value: %lf", power_value);
          }
+         xbt_dynar_free(&pstate_list);
   }
 
   XBT_DEBUG("pstate: %s", A_surfxml_host_pstate);
@@ -855,13 +861,11 @@ void ETag_surfxml_AS(void){
   sg_platf_new_AS_end();
 }
 
-extern int _sg_init_status; /* FIXME: find a proper way to export this at some point */
-
 void STag_surfxml_config(void){
   AS_TAG = 0;
   xbt_assert(current_property_set == NULL, "Someone forgot to reset the property set to NULL in its closing tag (or XML malformed)");
   XBT_DEBUG("START configuration name = %s",A_surfxml_config_id);
-  if (_sg_init_status == 2) {
+  if (_sg_cfg_init_status == 2) {
     surf_parse_error("All <config> tags must be given before any platform elements (such as <AS>, <host>, <cluster>, <link>, etc).");
   }
 }
@@ -1076,7 +1080,7 @@ static void init_randomness(void)
 
 static void add_randomness(void)
 {
-  /* If needed aditional properties can be added by using the prop tag */
+  /* If needed, additional properties can be added by using the prop tag */
   random_data_t random =
       random_new(random_generator, 0, random_min, random_max, random_mean,
                  random_std_deviation);