/* methods for implementation of automaton from promela description */
-/* Copyright (c) 2011-2013. The SimGrid Team.
+/* Copyright (c) 2011-2014. The SimGrid Team.
* All rights reserved. */
/* 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 "xbt/automaton.h"
+#include <errno.h>
+#include <string.h> /* strerror */
static xbt_automaton_t parsed_automaton;
char* state_id_src;
static void new_state(char* id, int src){
- char* id_state = strdup(id);
+ char* id_state = xbt_strdup(id);
char* first_part = strtok(id,"_");
int type = 0 ; // -1=initial state; 0=intermediate state; 1=final state
parsed_automaton->current_state = state;
if(src)
- state_id_src = strdup(id_state);
+ state_id_src = xbt_strdup(id_state);
}
static void new_transition(char* id, xbt_automaton_exp_label_t label){
- char* id_state = strdup(id);
+ char* id_state = xbt_strdup(id);
xbt_automaton_state_t state_dst = NULL;
new_state(id, 0);
state_dst = xbt_automaton_state_exists(parsed_automaton, id_state);
#include "parserPromela.tab.cacc"
-void xbt_automaton_load(xbt_automaton_t a, const char *file){
+void xbt_automaton_load(xbt_automaton_t a, const char *file)
+{
parsed_automaton = a;
yyin = fopen(file, "r");
+ if (yyin == NULL)
+ xbt_die("Failed to open automaton file `%s': %s", file, strerror(errno));
yyparse();
}