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);
     }