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)
{
return 0;
}
-directory_t
-directories_search_fstream_directory(directories_t directories, const char* name)
-{
-
- struct stat buffer = {0};
- char* prev;
- directory_t directory;
-
- if(!directories)
- {
- errno = EINVAL;
- return NULL;
- }
-
- prev = getcwd(NULL, 0);
-
- vector_rewind(directories->items);
-
- while((directory = vector_get(directories->items)))
- {
- chdir(directory->name);
-
- if(!stat(name, &buffer) || S_ISREG(buffer.st_mode))
- {
- chdir(prev);
- free(prev);
- return directory;
- }
-
- vector_move_next(directories->items);
- }
-
- chdir(prev);
- free(prev);
- errno = ESRCH;
- return NULL;
-}
-
int
directories_load(directories_t directories, fstreams_t fstreams, lstrings_t suffixes)
{
directory_t directory;
+ int rv;
if(!directories || !fstreams || !suffixes)
return EINVAL;
while((directory = vector_get(directories->items)))
{
- if(directory->load)
- {
- if((errno = directory_open(directory)))
- return errno;
-
- chdir(directory->name);
-
- if((errno = directory_load(directory, fstreams, suffixes)))
- return errno;
-
- if((errno = directory_close(directory)))
- return errno;
+ if((rv = directory_open(directory)))
+ return rv;
+
+ if((rv = directory_load(directory, fstreams, suffixes)))
+ return rv;
- chdir(root_directory->name);
- }
+ if((rv = directory_close(directory)))
+ return rv;
vector_move_next(directories->items);
return 0;
}
-int
-directories_has_directories_to_load(directories_t directories)
-{
- directory_t directory;
-
- if(!directories)
- {
- errno = EINVAL;
- return 0;
- }
-
- vector_rewind(directories->items);
-
- while((directory = vector_get(directories->items)))
- {
- if(directory->load)
- return 1;
-
- vector_move_next(directories->items);
-
- }
-
- return 0;
-}
-
-directory_t
-directories_get_back(directories_t directories)
-{
- if(!directories)
- {
- errno = EINVAL;
- return NULL;
- }
-
- return vector_get_back(directories->items);
-}
-
int
directories_free(void** directoriesptr)
{
+ int rv;
+
if(!(*directoriesptr))
return EINVAL;
- if((errno = vector_free(&((*((directories_t*)directoriesptr))->items))))
- return errno;
+ if((rv = vector_free(&((*((directories_t*)directoriesptr))->items))))
+ return rv;
free(*directoriesptr);
*directoriesptr = NULL;