#include <directories.h>\r
#include <directory.h>\r
+\r XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
+\r\rdirectories_t \r directories_new(void) \r
+{
+ \rdirectories_t directories = xbt_new0(s_directories_t, 1);
+ \r\rdirectories->items =
+ xbt_dynar_new(sizeof(directory_t), (void_f_pvoid_t) directory_free);
+ \r\rreturn directories;
+\r}
+
+\r\rint \r directories_get_size(directories_t directories) \r
+{
+ \rif (!directories)
+ \r {
+ \rerrno = EINVAL;
+ \rreturn -1;
+ \r}
+ \r\rreturn xbt_dynar_length(directories->items);
+\r}
+
+\r\rint \r directories_is_empty(directories_t directories) \r
+{
+ \rif (!directories)
+ \r {
+ \rerrno = EINVAL;
+ \rreturn -1;
+ \r}
+ \r\rreturn (0 == xbt_dynar_length(directories->items));
+\r}
+
+\r\rint \r directories_add(directories_t directories, directory_t directory) \r
+{
+ \rdirectory_t cur;
+ \runsigned int i;
+ \r\rif (!directories)
+ \rreturn EINVAL;
+ \r\rxbt_dynar_foreach(directories->items, i, cur) \r {
+ \rif (!strcmp(cur->name, directory->name))
+ \rreturn EEXIST;
+ \r}
+ \r\rxbt_dynar_push(directories->items, &directory);
+ \r\rreturn 0;
+\r}
+
+\r\rint \r
+directories_contains(directories_t directories, directory_t directory) \r
+{
+ \rdirectory_t * cur;
+ \runsigned int i;
+ \r\rif (!directories)
+ \rreturn EINVAL;
+ \r\rxbt_dynar_foreach(directories->items, i, cur) \r {
+ \rif (!strcmp((*cur)->name, directory->name))
+ \rreturn 1;
+ \r}
+ \r\rreturn 0;
+\r}
+
+\r\rint \r
+directories_load(directories_t directories, fstreams_t fstreams,
+ xbt_dynar_t suffixes) \r
+{
+ \rdirectory_t directory;
+ \rint rv;
+ \runsigned int i;
+ \r\rif (!directories || !fstreams || !suffixes)
+ \rreturn EINVAL;
+ \r\rxbt_dynar_foreach(directories->items, i, directory) \r {
+ \rif ((rv = directory_open(directory)))
+ \rreturn rv;
+ \r\rif ((rv = directory_load(directory, fstreams, suffixes)))
+ \rreturn rv;
+ \r\rif ((rv = directory_close(directory)))
+ \rreturn rv;
+ \r}
+ \r\rreturn 0;
+\r}
+
+\r\rint \r directories_free(void **directoriesptr) \r
+{
+ \rdirectories_t directories;
+ \r\rif (!(*directoriesptr))
+ \rreturn EINVAL;
+ \r\rdirectories = (directories_t) (*directoriesptr);
+ \r\rif (directories->items)
+ \rxbt_dynar_free(&(directories->items));
+ \r\rfree(*directoriesptr);
+ \r*directoriesptr = NULL;
+ \r\rreturn 0;
+\r}
+
\r
-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);\r
-\r
-directories_t\r
-directories_new(void)\r
-{\r
- directories_t directories = xbt_new0(s_directories_t, 1);\r
- \r
- directories->items = xbt_dynar_new(sizeof(directory_t), (void_f_pvoid_t)directory_free);\r
- \r
- return directories;\r
-}\r
-\r
-int\r
-directories_get_size(directories_t directories)\r
-{\r
- if(!directories)\r
- {\r
- errno = EINVAL;\r
- return -1;\r
- }\r
-\r
- return xbt_dynar_length(directories->items);\r
-}\r
-\r
-int\r
-directories_is_empty(directories_t directories)\r
-{\r
- if(!directories)\r
- {\r
- errno = EINVAL;\r
- return -1;\r
- }\r
-\r
- return (0 == xbt_dynar_length(directories->items));\r
-}\r
-\r
-int\r
-directories_add(directories_t directories, directory_t directory)\r
-{\r
- directory_t cur;\r
- unsigned int i;\r
- \r
- if(!directories)\r
- return EINVAL;\r
- \r
- xbt_dynar_foreach(directories->items, i, cur)\r
- {\r
- if(!strcmp(cur->name, directory->name))\r
- return EEXIST;\r
- }\r
-\r
- xbt_dynar_push(directories->items, &directory);\r
-\r
- return 0;\r
-}\r
-\r
-int\r
-directories_contains(directories_t directories, directory_t directory)\r
-{\r
- directory_t* cur;\r
- unsigned int i;\r
- \r
- if(!directories)\r
- return EINVAL;\r
-\r
- xbt_dynar_foreach(directories->items, i, cur)\r
- {\r
- if(!strcmp((*cur)->name, directory->name))\r
- return 1;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-int\r
-directories_load(directories_t directories, fstreams_t fstreams, xbt_dynar_t suffixes)\r
-{\r
- directory_t directory;\r
- int rv;\r
- unsigned int i;\r
- \r
- if(!directories || !fstreams || !suffixes)\r
- return EINVAL;\r
- \r
- xbt_dynar_foreach(directories->items, i, directory)\r
- {\r
- if((rv = directory_open(directory)))\r
- return rv;\r
- \r
- if((rv = directory_load(directory, fstreams, suffixes)))\r
- return rv;\r
- \r
- if((rv = directory_close(directory)))\r
- return rv;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-int\r
-directories_free(void** directoriesptr)\r
-{\r
- directories_t directories;\r
- \r
- if(!(*directoriesptr))\r
- return EINVAL;\r
-\r
- directories = (directories_t)(*directoriesptr);\r
- \r
- if(directories->items)\r
- xbt_dynar_free(&(directories->items));\r
- \r
- free(*directoriesptr);\r
- *directoriesptr = NULL;\r
- \r
- return 0; \r
-}\r