1
mirror of https://code.videolan.org/videolan/vlc synced 2024-09-28 23:09:59 +02:00

vlc_fs: export vlc_closedir/vlc_rewinddir

So it matches the other exports
This commit is contained in:
Steve Lhomme 2022-08-02 10:56:08 +02:00 committed by Hugo Beauzée-Luyssen
parent 15b65c6082
commit b95df4e1fe
5 changed files with 50 additions and 26 deletions

View File

@ -247,34 +247,8 @@ typedef struct vlc_DIR
} u;
} vlc_DIR;
static inline int vlc_closedir( vlc_DIR *vdir )
{
HANDLE fHandle = vdir->fHandle;
free( vdir->entry );
free( vdir->wildcard );
free( vdir );
return (fHandle != INVALID_HANDLE_VALUE) ? (FindClose(fHandle) ? 0 : -1) : 0;
}
static inline void vlc_rewinddir( vlc_DIR *wdir )
{
if (wdir->fHandle == INVALID_HANDLE_VALUE)
{
FindClose(wdir->fHandle);
wdir->fHandle = FindFirstFileExW(wdir->wildcard, FindExInfoBasic,
&wdir->wdir, (FINDEX_SEARCH_OPS)0,
NULL, FIND_FIRST_EX_LARGE_FETCH);
}
else
{
wdir->u.drives = GetLogicalDrives();
}
}
#else // !_WIN32
typedef DIR vlc_DIR;
#define vlc_closedir(d) closedir(d)
#define vlc_rewinddir(d) rewinddir(d)
#endif
/**
@ -302,6 +276,9 @@ VLC_API const char *vlc_readdir(vlc_DIR *dir) VLC_USED;
VLC_API int vlc_loaddir( vlc_DIR *dir, char ***namelist, int (*select)( const char * ), int (*compar)( const char **, const char ** ) );
VLC_API int vlc_scandir( const char *dirname, char ***namelist, int (*select)( const char * ), int (*compar)( const char **, const char ** ) );
VLC_API void vlc_closedir( vlc_DIR *dir );
VLC_API void vlc_rewinddir( vlc_DIR *dir );
/**
* Creates a directory.
*

View File

@ -449,6 +449,8 @@ vlc_memfd
vlc_opendir
vlc_readdir
vlc_scandir
vlc_closedir
vlc_rewinddir
vlc_stat
vlc_strcasestr
vlc_unlink

View File

@ -123,6 +123,11 @@ DIR *vlc_opendir (const char *dirname)
return dir;
}
void vlc_closedir(DIR *dir)
{
closedir(dir);
}
const char *vlc_readdir(DIR *dir)
{
/* Beware that readdir_r() assumes <buf> is large enough to hold the result
@ -155,6 +160,11 @@ const char *vlc_readdir(DIR *dir)
return path;
}
void vlc_rewinddir(DIR *dir)
{
rewinddir(dir);
}
static int vlc_statEx (const char *filename, struct stat *buf, bool deref)
{
const char *local_name = ToLocaleDup (filename);

View File

@ -126,12 +126,22 @@ DIR *vlc_opendir (const char *dirname)
return opendir (dirname);
}
void vlc_closedir(DIR *dir)
{
closedir(dir);
}
const char *vlc_readdir(DIR *dir)
{
struct dirent *ent = readdir (dir);
return (ent != NULL) ? ent->d_name : NULL;
}
void vlc_rewinddir(DIR *dir)
{
rewinddir(dir);
}
int vlc_stat (const char *filename, struct stat *buf)
{
return stat (filename, buf);

View File

@ -215,6 +215,16 @@ vlc_DIR *vlc_opendir (const char *dirname)
return p_dir;
}
void vlc_closedir( vlc_DIR *vdir )
{
if (vdir->fHandle != INVALID_HANDLE_VALUE)
FindClose(vdir->fHandle);
free( vdir->entry );
free( vdir->wildcard );
free( vdir );
}
const char *vlc_readdir (vlc_DIR *p_dir)
{
free(p_dir->entry);
@ -257,6 +267,21 @@ const char *vlc_readdir (vlc_DIR *p_dir)
return p_dir->entry;
}
void vlc_rewinddir( vlc_DIR *wdir )
{
if (wdir->fHandle == INVALID_HANDLE_VALUE)
{
FindClose(wdir->fHandle);
wdir->fHandle = FindFirstFileExW(wdir->wildcard, FindExInfoBasic,
&wdir->wdir, (FINDEX_SEARCH_OPS)0,
NULL, FIND_FIRST_EX_LARGE_FETCH);
}
else
{
wdir->u.drives = GetLogicalDrives();
}
}
int vlc_stat (const char *filename, struct stat *buf)
{
wchar_t *wpath = widen_path (filename);