+ else
+ action->state_set = NULL;
+
+ if (action->state_set)
+ xbt_swag_insert(action, action->state_set);
+ XBT_OUT;
+}
+
+void surf_action_set_data(surf_action_t action,
+ void *data)
+{
+ action->data=data;
+}
+
+void surf_init(int *argc, char **argv)
+{
+ int i,j;
+ char *opt;
+
+ const char* initial_path;
+
+ xbt_init(argc, argv);
+ if (!surf_path) {
+
+ /* retrieves the current directory of the current process*/
+ initial_path = __surf_get_initial_path();
+
+ xbt_assert0((initial_path), "__surf_get_initial_path() failed! Can't resolves current Windows directory");
+
+ surf_path = xbt_dynar_new(sizeof(char*), NULL);
+ xbt_dynar_push(surf_path,&initial_path);
+
+ for (i=1; i<*argc; i++) {
+ if (!strncmp(argv[i],"--surf-path=",strlen("--surf-path="))) {
+ opt=strchr(argv[i],'=');
+ opt++;
+ xbt_dynar_push(surf_path,&opt);
+ /*remove this from argv*/
+ for (j=i+1; j<*argc; j++) {
+ argv[j-1] = argv[j];
+ }
+ argv[j-1] = NULL;
+ (*argc)--;
+ i--; /* compensate effect of next loop incrementation */
+ }
+ }
+ }
+ if (!resource_list)
+ resource_list = xbt_dynar_new(sizeof(surf_resource_private_t), NULL);
+ if (!history)
+ history = tmgr_history_new();
+ if (!maxmin_system)
+ maxmin_system = lmm_system_new();
+}
+
+static char* path_name = NULL;
+FILE *surf_fopen(const char *name, const char *mode)
+{
+ int i;
+ char* path = NULL;
+ FILE *file = NULL;
+ int path_name_len = 0; /* don't count '\0' */
+
+ xbt_assert0(name, "Need a non-NULL file name");
+
+ xbt_assert0(surf_path,"surf_init has to be called before using surf_fopen");
+
+ if (__surf_is_absolute_file_path(name)) { /* don't mess with absolute file names */
+ return fopen(name,mode);
+
+ } else { /* search relative files in the path */
+
+ if(!path_name) {
+ path_name_len = strlen(name);
+ path_name=xbt_new0(char,path_name_len+1);
+ }