Create retro_dirent_include_hidden

This commit is contained in:
twinaphex 2017-07-04 04:09:45 +02:00
parent 2fda0b7e66
commit 3a141cb891
3 changed files with 21 additions and 18 deletions

View File

@ -235,6 +235,16 @@ bool retro_dirent_is_dir(struct RDIR *rdir, const char *path)
#endif
}
void retro_dirent_include_hidden(struct RDIR *rdir, bool include_hidden)
{
#ifdef _WIN32
if (include_hidden)
rdir->entry.dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN;
else
rdir->entry.dwFileAttributes &= ~FILE_ATTRIBUTE_HIDDEN;
#endif
}
void retro_closedir(struct RDIR *rdir)
{
if (!rdir)

View File

@ -38,6 +38,8 @@ int retro_readdir(struct RDIR *rdir);
bool retro_dirent_error(struct RDIR *rdir);
void retro_dirent_include_hidden(struct RDIR *rdir, bool include_hidden);
const char *retro_dirent_get_name(struct RDIR *rdir);
/**

View File

@ -174,21 +174,10 @@ static int dir_list_read(const char *dir,
{
struct RDIR *entry = retro_opendir(dir);
if (!entry)
return -1;
if (!entry || retro_dirent_error(entry))
goto error;
if (retro_dirent_error(entry))
{
retro_closedir(entry);
return -1;
}
#ifdef _WIN32
if (include_hidden)
entry->entry.dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN;
else
entry->entry.dwFileAttributes &= ~FILE_ATTRIBUTE_HIDDEN;
#endif
retro_dirent_include_hidden(entry, include_hidden);
while (retro_readdir(entry))
{
@ -222,10 +211,7 @@ static int dir_list_read(const char *dir,
include_dirs, include_compressed, list, ext_list, file_ext);
if (ret == -1)
{
retro_closedir(entry);
return -1;
}
goto error;
if (ret == 1)
continue;
@ -234,6 +220,11 @@ static int dir_list_read(const char *dir,
retro_closedir(entry);
return 0;
error:
if (entry)
retro_closedir(entry);
return -1;
}
/**