From efcea6628024c5f6796c3850c3779801db4b6874 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Thu, 2 May 2024 13:38:32 -0400 Subject: Revert "readdir_r use in tagcache.check_dir, ft_load" This reverts commit 0c737d3b2e4728347cf4d52025f9fc2ebbee6e90. Reason for revert: Not really a concern as open_stream returns an independent buffer since g#566 Change-Id: Idbd2f4a7cc2ea6362b7714629469eeb7b3d19b3b --- apps/filetree.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'apps/filetree.c') diff --git a/apps/filetree.c b/apps/filetree.c index 99bb1340d7..b5f5dece5a 100644 --- a/apps/filetree.c +++ b/apps/filetree.c @@ -292,7 +292,6 @@ int ft_load(struct tree_context* c, const char* tempdir) int files_in_dir = 0; int name_buffer_used = 0; - struct dirent direntry; struct dirent *entry; bool (*callback_show_item)(char *, int, struct tree_context *) = NULL; DIR *dir; @@ -314,7 +313,7 @@ int ft_load(struct tree_context* c, const char* tempdir) c->dirfull = false; tree_lock_cache(c); - while (readdir_r(dir, &direntry, &entry) == 0 && entry) { + while ((entry = readdir(dir))) { int len; struct dirinfo info; struct entry* dptr = tree_get_entry_at(c, files_in_dir); @@ -327,17 +326,17 @@ int ft_load(struct tree_context* c, const char* tempdir) info = dir_get_info(dir, entry); len = strlen((char *)entry->d_name); - /* Skip FAT volume ID */ - if (info.attribute & ATTR_VOLUME_ID) { + /* skip directories . and .. */ + if ((info.attribute & ATTR_DIRECTORY) && + (((len == 1) && (!strncmp((char *)entry->d_name, ".", 1))) || + ((len == 2) && (!strncmp((char *)entry->d_name, "..", 2))))) { continue; } - dptr->attr = info.attribute; - int dir_attr = (dptr->attr & ATTR_DIRECTORY); - - /* skip directories . and .. */ - if (dir_attr && is_dotdir_name(entry->d_name)) + /* Skip FAT volume ID */ + if (info.attribute & ATTR_VOLUME_ID) { continue; + } /* filter out dotfiles and hidden files */ if (*c->dirfilter != SHOW_ALL && @@ -346,6 +345,9 @@ int ft_load(struct tree_context* c, const char* tempdir) continue; } + dptr->attr = info.attribute; + int dir_attr = (dptr->attr & ATTR_DIRECTORY); + /* check for known file types */ if ( !(dir_attr) ) dptr->attr |= filetype_get_attr((char *)entry->d_name); -- cgit v1.2.3