diff --git a/src/osgDB/FileUtils.cpp b/src/osgDB/FileUtils.cpp index 21e0f79e9..b5ee1fcad 100644 --- a/src/osgDB/FileUtils.cpp +++ b/src/osgDB/FileUtils.cpp @@ -22,6 +22,8 @@ #include #include #include + #include + #include // set up for windows so acts just like unix access(). #define F_OK 4 #else // unix @@ -45,14 +47,18 @@ bool osgDB::fileExists(const std::string& filename) osgDB::FileType osgDB::fileType(const std::string& filename) { #if defined(WIN32) && !defined(__CYGWIN__) - if (!fileExists(filename)) + struct _stat fileStat; + if ( _stat(filename.c_str(), &fileStat) != 0 ) { return FILE_NOT_FOUND; - } - else - { + } // end if + + if ( fileStat.st_mode & _S_IFDIR ) + return DIRECTORY; + else if ( fileStat.st_mode & _S_IFREG ) return REGULAR_FILE; - } + + return FILE_NOT_FOUND; #else struct stat fileStat;