From f4a290cdff30b7fcb663277cf0fc811775d395d6 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 13 May 2004 08:11:31 +0000 Subject: [PATCH] From Donny Cipperly, completed Windows support for fileType() --- src/osgDB/FileUtils.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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;