1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #pragma once 27 28 #include "qmake_global.h" 29 30 #include <qstring.h> 31 32 QT_BEGIN_NAMESPACE 33 34 namespace QMakeInternal { 35 36 /*! 37 This class provides replacement functionality for QFileInfo, QFile & QDir, 38 as these are abysmally slow. 39 */ 40 class QMAKE_EXPORT IoUtils { 41 public: 42 enum FileType { 43 FileNotFound = 0, 44 FileIsRegular = 1, 45 FileIsDir = 2 46 }; 47 48 static FileType fileType(const QString &fileName); exists(const QString & fileName)49 static bool exists(const QString &fileName) { return fileType(fileName) != FileNotFound; } 50 static bool isRelativePath(const QString &fileName); isAbsolutePath(const QString & fileName)51 static bool isAbsolutePath(const QString &fileName) { return !isRelativePath(fileName); } 52 static QStringView pathName(const QString &fileName); // Requires normalized path 53 static QStringView fileName(const QString &fileName); // Requires normalized path 54 static QString resolvePath(const QString &baseDir, const QString &fileName); 55 static QString shellQuoteUnix(const QString &arg); 56 static QString shellQuoteWin(const QString &arg); shellQuote(const QString & arg)57 static QString shellQuote(const QString &arg) 58 #ifdef Q_OS_UNIX 59 { return shellQuoteUnix(arg); } 60 #else 61 { return shellQuoteWin(arg); } 62 #endif 63 #if defined(PROEVALUATOR_FULL) 64 static bool touchFile(const QString &targetFileName, const QString &referenceFileName, QString *errorString); 65 # if defined(QT_BUILD_QMAKE) && defined(Q_OS_UNIX) 66 static bool readLinkTarget(const QString &symlinkPath, QString *target); 67 # endif 68 #endif 69 }; 70 71 } // namespace ProFileEvaluatorInternal 72 73 QT_END_NAMESPACE 74