5 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
8 directory_new(const char* name)
10 directory_t directory;
18 directory = xbt_new0(s_directory_t, 1);
21 directory->name = strdup(name);
24 directory->stream = NULL;
30 directory_open(directory_t directory)
32 if(!directory || directory->stream)
35 if(!(directory->stream = opendir(directory->name)))
43 directory_close(directory_t directory)
48 if(!directory->stream)
51 if(closedir(directory->stream))
54 directory->stream = NULL;
59 directory_load(directory_t directory, fstreams_t fstreams, lstrings_t suffixes)
61 struct dirent* entry ={0};
62 s_fstream_t sfstream = {0};
68 if(!directory || !fstreams)
71 if(!directory->stream)
74 sfstream.directory = strdup(directory->name);
76 while((entry = readdir(directory->stream)))
80 lstrings_rewind(suffixes);
82 while((suffix = lstrings_get(suffixes)))
84 if(!strncmp(suffix, entry->d_name + (strlen(entry->d_name) - strlen(suffix)), strlen(suffix)))
90 lstrings_move_next(suffixes);
96 sfstream.name = strdup(entry->d_name);
98 /* check first if the file stream is already in the file streams to run */
99 if(fstreams_contains(fstreams, &sfstream))
101 WARN1("file %s already registred", entry->d_name);
106 /* add the fstream to the list of file streams to run */
107 if((rv = fstreams_add(fstreams, fstream_new(directory->name, entry->d_name))))
109 INFO0("fstreams_add() failed");
110 free(sfstream.directory);
120 WARN1("no tesh file found in the directory %s", directory->name);
122 free(sfstream.directory);
129 directory_free(void** directoryptr)
131 directory_t directory;
136 directory = *((directory_t*)directoryptr);
138 if(directory->stream)
139 if(directory_close(directory))
142 free(directory->name);
145 *directoryptr = NULL;
151 directory_get_name(directory_t directory)
159 return (const char*)directory->name;