5 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
8 fstreams_new(int capacity, fn_finalize_t fn_finalize)
11 fstreams = xbt_new0(s_fstreams_t, 1);
13 if(!(fstreams->items = vector_new(capacity, fn_finalize)))
23 fstreams_exclude(fstreams_t fstreams, excludes_t excludes)
28 if(!fstreams || !excludes)
31 if(excludes_is_empty(excludes))
34 if(!(to_erase = vector_new(8, NULL)))
37 INFO0("excluding file streams");
39 /* collecte the file streams to exclude */
40 vector_rewind(fstreams->items);
42 while((fstream = vector_get(fstreams->items)))
44 if(excludes_contains(excludes, fstream))
45 vector_push_back(to_erase, fstream);
48 vector_move_next(fstreams->items);
51 if(!vector_is_empty(to_erase))
54 /* erase the file streams to exclude from the vector of file streams to run */
55 vector_rewind(to_erase);
57 while((fstream = vector_get(to_erase)))
59 vector_erase(fstreams->items, fstream);
61 vector_move_next(to_erase);
65 return vector_free(&to_erase);
69 fstreams_contains(fstreams_t fstreams, fstream_t fstream)
71 register fstream_t cur;
73 if(!fstreams || !fstream)
79 vector_rewind(fstreams->items);
81 while((cur = vector_get(fstreams->items)))
83 if(!strcmp(cur->name, fstream->name) && !strcmp(cur->directory, fstream->directory))
86 vector_move_next(fstreams->items);
93 fstreams_load(fstreams_t fstreams)
95 register fstream_t fstream;
96 const char* directory = NULL;
102 vector_rewind(fstreams->items);
104 while((fstream = vector_get(fstreams->items)))
106 chdir(root_directory->name);
108 if(!directory || strcmp(directory, fstream->directory))
110 directory = fstream->directory;
112 if(!dont_want_display_directory)
113 INFO1("entering directory \"%s\"",directory);
117 chdir(fstream->directory);
119 fstream_open(fstream);
121 vector_move_next(fstreams->items);
128 fstreams_add(fstreams_t fstreams, fstream_t fstream)
133 if(vector_push_back(fstreams->items, fstream))
141 fstreams_free(void** fstreamsptr)
147 if((errno = vector_free(&((*((fstreams_t*)fstreamsptr))->items))))
157 fstreams_get_size(fstreams_t fstreams)
165 return vector_get_size(fstreams->items);
169 fstreams_is_empty(fstreams_t fstreams)
177 return vector_is_empty(fstreams->items);