Don't use deprecated functions on Mac OS X
authorBradley T. Hughes <bradley.hughes@nokia.com>
Tue, 8 Nov 2011 16:35:03 +0000 (17:35 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 14 Nov 2011 08:45:10 +0000 (09:45 +0100)
io/qfilesystemwatcher_fsevents.cpp:346:15: warning: 'stat64' is
deprecated [-Wdeprecated-declarations]
        if (::stat64(it->absolutePath, &newInfo) == 0) {
              ^

According to 'man 2 stat' on Mac OS X, the stat64() function is
deprecated in 10.6 and above. Instead, we are supposed to define
the _DARWIN_USE_64_BIT_INODE which enables the 64-bit ino_t member in
the stat struct and uses function symbol suffixes to call the correct
version of stat with 64-bit inode support.

Change-Id: I697374186c7f4d69df783f06962ca5644222194d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
src/corelib/io/qfilesystemwatcher_fsevents.cpp
src/corelib/io/qfilesystemwatcher_fsevents_p.h

index 6ae6e38..95da897 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 
-
+#define _DARWIN_USE_64_BIT_INODE
 #include <qplatformdefs.h>
 
 #include "qfilesystemwatcher.h"
@@ -72,7 +72,7 @@ static bool operator==(const struct ::timespec &left, const struct ::timespec &r
             && left.tv_nsec == right.tv_nsec;
 }
 
-static bool operator==(const struct ::stat64 &left, const struct ::stat64 &right)
+static bool operator==(const struct ::stat &left, const struct ::stat &right)
 {
     return left.st_dev == right.st_dev
             && left.st_mode == right.st_mode
@@ -85,7 +85,7 @@ static bool operator==(const struct ::stat64 &left, const struct ::stat64 &right
             && left.st_flags == right.st_flags;
 }
 
-static bool operator!=(const struct ::stat64 &left, const struct ::stat64 &right)
+static bool operator!=(const struct ::stat &left, const struct ::stat &right)
 {
     return !(operator==(left, right));
 }
@@ -342,8 +342,8 @@ void QFSEventsFileSystemWatcherEngine::updateList(PathInfoList &list, bool direc
     PathInfoList::iterator End = list.end();
     PathInfoList::iterator it = list.begin();
     while (it != End) {
-        struct ::stat64 newInfo;
-        if (::stat64(it->absolutePath, &newInfo) == 0) {
+        struct ::stat newInfo;
+        if (::stat(it->absolutePath, &newInfo) == 0) {
             if (emitSignals) {
                 if (newInfo != it->savedInfo) {
                     it->savedInfo = newInfo;
index 2466a6e..3830002 100644 (file)
@@ -75,7 +75,7 @@ typedef uint64_t FSEventStreamEventId;
 QT_BEGIN_NAMESPACE
 
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-// Yes, I use a stat64 element here. QFileInfo requires too much knowledge about implementation
+// Yes, I use a stat element here. QFileInfo requires too much knowledge about implementation
 // details to be used as a long-standing record. Since I'm going to have to store this information, I can
 // do the stat myself too.
 struct PathInfo {
@@ -83,7 +83,7 @@ struct PathInfo {
             : originalPath(path), absolutePath(absPath) {}
     QString originalPath; // The path we need to emit
     QByteArray absolutePath; // The path we need to stat.
-    struct ::stat64 savedInfo;  // All the info for the path so we can compare it.
+    struct ::stat savedInfo;  // All the info for the path so we can compare it.
 };
 typedef QLinkedList<PathInfo> PathInfoList;
 typedef QHash<QString, PathInfoList> PathHash;