forked from qt-creator/qt-creator
When parsing remote .pro files the parsers needs to pretend it runs on the remote device. All internal data are now "local on the remote", so that string manipulation in .pro files "just works", and a 'device root' string is passed around to relevant functions which then use it to construct FilePath::toFSPathString()-style paths that our custom FSEngineImpl can then map to the real device. Remote $$system() calls are intercepted by the local parser and redirected using the usual QtcProcess mechanims. Quite a bit of the ProParser needed adjustments, so there's some potential for regression. Task-number: QTCREATORBUG-28242 Task-number: QTCREATORBUG-28161 Task-number: QTCREATORBUG-28355 Change-Id: I6100e7aca4e1db35f5e9689004110aab57e2c595 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
// Copyright (C) 2016 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
#pragma once
|
|
|
|
#include "qmake_global.h"
|
|
|
|
#include <qstring.h>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
namespace QMakeInternal {
|
|
|
|
/*!
|
|
This class provides replacement functionality for QFileInfo, QFile & QDir,
|
|
as these are abysmally slow.
|
|
*/
|
|
class QMAKE_EXPORT IoUtils {
|
|
public:
|
|
enum FileType {
|
|
FileNotFound = 0,
|
|
FileIsRegular = 1,
|
|
FileIsDir = 2
|
|
};
|
|
|
|
static FileType fileType(const QString &device, const QString &fileName);
|
|
static bool exists(const QString &device, const QString &fileName) { return fileType(device, fileName) != FileNotFound; }
|
|
static bool isRelativePath(const QString &device, const QString &fileName);
|
|
static bool isAbsolutePath(const QString &device, const QString &fileName) { return !isRelativePath(device, fileName); }
|
|
static QStringView pathName(const QString &fileName); // Requires normalized path
|
|
static QStringView fileName(const QString &fileName); // Requires normalized path
|
|
static QString resolvePath(const QString &device, const QString &baseDir, const QString &fileName);
|
|
static QString shellQuoteUnix(const QString &arg);
|
|
static QString shellQuoteWin(const QString &arg);
|
|
static QString shellQuote(const QString &arg)
|
|
#ifdef Q_OS_UNIX
|
|
{ return shellQuoteUnix(arg); }
|
|
#else
|
|
{ return shellQuoteWin(arg); }
|
|
#endif
|
|
#if defined(PROEVALUATOR_FULL)
|
|
static bool touchFile(const QString &targetFileName, const QString &referenceFileName, QString *errorString);
|
|
# if defined(QT_BUILD_QMAKE) && defined(Q_OS_UNIX)
|
|
static bool readLinkTarget(const QString &symlinkPath, QString *target);
|
|
# endif
|
|
#endif
|
|
};
|
|
|
|
} // namespace ProFileEvaluatorInternal
|
|
|
|
QT_END_NAMESPACE
|