diff --git a/include/dap_file_utils.h b/include/dap_file_utils.h index 13830811a2b4b4e87cf45bed67a07be7ee3bccba..92cfe9812c49b4540b6c1d608de58e3470ce7a3e 100755 --- a/include/dap_file_utils.h +++ b/include/dap_file_utils.h @@ -22,7 +22,7 @@ along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. */ #include <stdbool.h> -#include "dap_list.h" +#include "utlist.h" #include <dirent.h> #ifndef _DAP_FILE_UTILS_H_ @@ -52,6 +52,11 @@ #endif +typedef struct dap_list_name_directories{ + char *name_directory; + struct dap_list_name_directories *next; +}dap_list_name_directories_t; + /** * Check the directory path for unsupported symbols * @@ -95,6 +100,6 @@ char* dap_path_get_dirname(const char *a_file_name); * @a_path_name directory path. * @return dap_list_t type variable that contains a list of subdirectories. */ -dap_list_t *dap_get_subs(const char *a_path_name); +dap_list_name_directories_t *dap_get_subs(const char *a_path_name); #endif // _FILE_UTILS_H_ diff --git a/src/dap_file_utils.c b/src/dap_file_utils.c index 893b601e9336a078aa8899d151bd66d4afba4f95..c8bf8077698895ffd22d89135ef669d180921589 100755 --- a/src/dap_file_utils.c +++ b/src/dap_file_utils.c @@ -369,8 +369,9 @@ char* dap_path_get_dirname(const char *a_file_name) return l_base; } -dap_list_t *dap_get_subs(const char *a_path_dir){ - dap_list_t *list = dap_list_alloc(); +dap_list_name_directories_t *dap_get_subs(const char *a_path_dir){ + dap_list_name_directories_t *list = NULL; + dap_list_name_directories_t *element; #ifdef _WIN32 size_t m_size = strlen(a_path_dir); char *m_path = DAP_NEW_SIZE(char, m_size + 2); @@ -381,7 +382,9 @@ dap_list_t *dap_get_subs(const char *a_path_dir){ HANDLE h_find_file = FindFirstFileA(m_path, &info_file); while (FindNextFileA(h_find_file, &info_file)){ if (info_file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY){ - dap_list_append(list, info_file.cFileName); + element = (list_name_directories_t *)malloc(sizeof(list_name_directories_t)); + element->name_directory = dap_strdup(info_file.cFileName); + LL_APPEND(list, element); } } FindClose(h_find_file); @@ -391,7 +394,9 @@ dap_list_t *dap_get_subs(const char *a_path_dir){ struct dirent *entry = readdir(dir); while (entry != NULL){ if (strcmp(entry->d_name, "..") != 0 && strcmp(entry->d_name, ".") != 0 && entry->d_type == DT_DIR){ - dap_list_append(list, entry->d_name); + element = (dap_list_name_directories_t *)malloc(sizeof(dap_list_name_directories_t)); + element->name_directory = dap_strdup(entry->d_name); + LL_APPEND(list, element); } entry = readdir(dir); }