- linecount++;
- xbt_str_trim(val, " \t\n\r\x0B");
- if (strlen(val) > 0) {
- if (sscanf(val, "%lg" " " "%lg" "\n", &event.delta, &event.value) != 2) {
- xbt_assert2(0, "%s\n%d: Syntax error", input, linecount);
- }
- if (last_event) {
- if ((last_event->delta = event.delta - last_event->delta) <= 0) {
- xbt_assert2(0, "%s\n%d: Invalid trace value, events have to be sorted", input, linecount);
- }
- }
- xbt_dynar_push(trace->event_list, &event);
- last_event = xbt_dynar_get_ptr(trace->event_list, xbt_dynar_length(trace->event_list) - 1);
- if (periodicity > 0) {
- if (last_event)
- last_event->delta = periodicity;
- }
- }
+ linecount++;
+ xbt_str_trim(val, " \t\n\r\x0B");
+ if (val[0] == '#' || val[0] == '\0' || val[0] == '%')
+ continue;
+
+ if (sscanf(val, "PERIODICITY " "%lg" "\n", &periodicity) == 1)
+ continue;
+
+ if (sscanf(val, "%lg" " " "%lg" "\n", &event.delta, &event.value) != 2)
+ xbt_die("%s:%d: Syntax error in trace\n%s", id, linecount, input);
+
+ if (last_event) {
+ if (last_event->delta > event.delta) {
+ xbt_die("%s:%d: Invalid trace: Events must be sorted, "
+ "but time %lg > time %lg.\n%s",
+ id, linecount, last_event->delta, event.delta, input);
+ }
+ last_event->delta = event.delta - last_event->delta;
+ }
+ xbt_dynar_push(trace->event_list, &event);
+ last_event =
+ xbt_dynar_get_ptr(trace->event_list,
+ xbt_dynar_length(trace->event_list) - 1);