diff --git a/configure b/configure
index 518489537432b246ae421ed6d6bd2d783d5710bb..1e82030fad929b0b769107d3be26bf7f4ecea8f6 100755
--- a/configure
+++ b/configure
@@ -1788,6 +1788,7 @@ SYSTEM_FUNCS="
     jack_port_get_latency_range
     kbhit
     localtime_r
+    lstat
     lzo1x_999_compress
     mach_absolute_time
     MapViewOfFile
@@ -5087,6 +5088,7 @@ check_func_headers conio.h kbhit
 check_func_headers io.h setmode
 check_func_headers lzo/lzo1x.h lzo1x_999_compress
 check_func_headers stdlib.h getenv
+check_func_headers sys/stat.h lstat
 
 check_func_headers windows.h CoTaskMemFree -lole32
 check_func_headers windows.h GetProcessAffinityMask
diff --git a/libavformat/file.c b/libavformat/file.c
index df4c83668438bb7f216cae9a978a33d2d9ed8e96..c4201d791834baf5baa7d67270eaeeec73ee69c1 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -251,7 +251,7 @@ static int file_close(URLContext *h)
 
 static int file_open_dir(URLContext *h)
 {
-#if HAVE_DIRENT_H
+#if HAVE_LSTAT
     FileContext *c = h->priv_data;
 
     c->dir = opendir(h->filename);
@@ -261,12 +261,12 @@ static int file_open_dir(URLContext *h)
     return 0;
 #else
     return AVERROR(ENOSYS);
-#endif /* HAVE_DIRENT_H */
+#endif /* HAVE_LSTAT */
 }
 
 static int file_read_dir(URLContext *h, AVIODirEntry **next)
 {
-#if HAVE_DIRENT_H
+#if HAVE_LSTAT
     FileContext *c = h->priv_data;
     struct dirent *dir;
     char *fullpath = NULL;
@@ -319,18 +319,18 @@ static int file_read_dir(URLContext *h, AVIODirEntry **next)
     return 0;
 #else
     return AVERROR(ENOSYS);
-#endif /* HAVE_DIRENT_H */
+#endif /* HAVE_LSTAT */
 }
 
 static int file_close_dir(URLContext *h)
 {
-#if HAVE_DIRENT_H
+#if HAVE_LSTAT
     FileContext *c = h->priv_data;
     closedir(c->dir);
     return 0;
 #else
     return AVERROR(ENOSYS);
-#endif /* HAVE_DIRENT_H */
+#endif /* HAVE_LSTAT */
 }
 
 URLProtocol ff_file_protocol = {