X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fs.h;h=533aa9bc91d51d0dbad6d79118a0ed8de3b3506e;hb=e83fa9c21ab6da1b584e84907c721bc65d5e7cc6;hp=d5b78e27411bc2ff70f9c3fc87af7fbdba6578a1;hpb=67d04d60fcb0d7630760adc90cea9b8b96389353;p=vlc diff --git a/include/vlc_fs.h b/include/vlc_fs.h index d5b78e2741..533aa9bc91 100644 --- a/include/vlc_fs.h +++ b/include/vlc_fs.h @@ -45,12 +45,26 @@ VLC_API int vlc_unlink( const char *filename ); VLC_API int vlc_rename( const char *oldpath, const char *newpath ); VLC_API char *vlc_getcwd( void ) VLC_USED; -#if defined( WIN32 ) +#if defined( _WIN32 ) +typedef struct vlc_DIR +{ + _WDIR *wdir; /* MUST be first, see */ + char *entry; + union + { + DWORD drives; + bool insert_dot_dot; + } u; +} vlc_DIR; + static inline int vlc_closedir( DIR *dir ) { - _WDIR *wdir = *(_WDIR **)dir; - free( dir ); - return wdir ? _wclosedir( wdir ) : 0; + vlc_DIR *vdir = (vlc_DIR *)dir; + _WDIR *wdir = vdir->wdir; + + free( vdir->entry ); + free( vdir ); + return (wdir != NULL) ? _wclosedir( wdir ) : 0; } # undef closedir # define closedir vlc_closedir @@ -65,11 +79,20 @@ static inline void vlc_rewinddir( DIR *dir ) # define rewinddir vlc_rewinddir # include -# ifndef UNDER_CE -# ifndef stat -# define stat _stati64 -# endif +# ifndef stat +# define stat _stati64 # endif +# ifndef fstat +# define fstat _fstati64 +# endif +# ifndef _MSC_VER +# undef lseek +# define lseek _lseeki64 +# endif +#endif + +#ifdef __ANDROID__ +# define lseek lseek64 #endif struct stat;