From a67c1ed7cd05a3d15f2e29096f5cf4868b6bb59c Mon Sep 17 00:00:00 2001 From: "alexey.stratulat" <alexey.stratulat@demlabs.net> Date: Mon, 9 Mar 2020 22:35:29 +0700 Subject: [PATCH] [*] Fix. Dap_get_subs function no longer returns dap_list, but returns the dap_list_name_directories_t structure which is a single-linked list containing the name of directories. To work with this structure, utlist is used. --- include/dap_file_utils.h | 9 +++++++-- src/dap_file_utils.c | 13 +++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/include/dap_file_utils.h b/include/dap_file_utils.h index 1383081..92cfe98 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 893b601..c8bf807 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); } -- GitLab