From 830a1bd130f819adfef71c882a335e5405f3f02d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 5 Mar 2015 09:43:51 +0100 Subject: fs/File{System,Info}: fix regular file check Don't use FILE_ATTRIBUTE_NORMAL, it's a "magic" value for something else. To check if a file is a regular file, we need to check if it's NOT a directory (or a device). --- src/fs/FileSystem.hxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/fs/FileSystem.hxx') diff --git a/src/fs/FileSystem.hxx b/src/fs/FileSystem.hxx index a6240bf0e..309c0cdf6 100644 --- a/src/fs/FileSystem.hxx +++ b/src/fs/FileSystem.hxx @@ -152,7 +152,8 @@ FileExists(Path path, bool follow_symlinks = true) (void)follow_symlinks; const auto a = GetFileAttributes(path.c_str()); - return a != INVALID_FILE_ATTRIBUTES && (a & FILE_ATTRIBUTE_NORMAL); + return a != INVALID_FILE_ATTRIBUTES && + (a & (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_DEVICE)) == 0; #else struct stat buf; return StatFile(path, buf, follow_symlinks) && S_ISREG(buf.st_mode); -- cgit v1.2.3