-#include <directories.h>
-#include <directory.h>
-
-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
-
-directories_t
-directories_new(void)
-{
- directories_t directories = xbt_new0(s_directories_t, 1);
-
- if(!(directories->items = vector_new(8, directory_free)))
- {
- free(directories);
- return NULL;
- }
-
- return directories;
-}
-
-int
-directories_get_size(directories_t directories)
-{
- if(!directories)
- {
- errno = EINVAL;
- return -1;
- }
-
- return vector_get_size(directories->items);
-}
-
-int
-directories_is_empty(directories_t directories)
-{
- if(!directories)
- {
- errno = EINVAL;
- return -1;
- }
-
- return vector_is_empty(directories->items);
-}
-
-int
-directories_add(directories_t directories, directory_t directory)
-{
- directory_t cur;
-
- if(!directories)
- return EINVAL;
-
- vector_rewind(directories->items);
-
- while((cur = vector_get(directories->items)))
- {
- if(!strcmp(cur->name, directory->name))
- return EEXIST;
-
- vector_move_next(directories->items);
- }
-
- return vector_push_back(directories->items, directory);
-}
-
-int
-directories_contains(directories_t directories, directory_t directory)
-{
- directory_t cur;
-
- if(!directories)
- return EINVAL;
-
- vector_rewind(directories->items);
-
- while((cur = vector_get(directories->items)))
- {
- if(!strcmp(cur->name, directory->name))
- return 1;
-
- vector_move_next(directories->items);
- }
-
- return 0;
-}
-
-int
-directories_load(directories_t directories, fstreams_t fstreams, lstrings_t suffixes)
-{
- directory_t directory;
- int rv;
-
- if(!directories || !fstreams || !suffixes)
- return EINVAL;
-
- vector_rewind(directories->items);
-
- while((directory = vector_get(directories->items)))
- {
- if((rv = directory_open(directory)))
- return rv;
-
- if((rv = directory_load(directory, fstreams, suffixes)))
- return rv;
-
- if((rv = directory_close(directory)))
- return rv;
-
- vector_move_next(directories->items);
-
-
- }
-
- return 0;
-}
-
-int
-directories_free(void** directoriesptr)
-{
- int rv;
-
- if(!(*directoriesptr))
- return EINVAL;
-
- if((rv = vector_free(&((*((directories_t*)directoriesptr))->items))))
- return rv;
-
- free(*directoriesptr);
- *directoriesptr = NULL;
-
- return 0;
-
-}
+#include <directories.h>\r
+#include <directory.h>\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