[Interest] Detecting subdirectories in QDir

Oleg Yadrov oleg.yadrov at qt.io
Wed Jul 11 17:59:18 CEST 2018


Ha. I hope I didn't screw up this time.


#include <QCoreApplication>

#include <QDir>

#include <QDebug>


// returns true if 'a' is a subdirectory of 'b'

bool isSubdirectory(QDir a, QDir b)

{

    while (!a.isRoot()) {

        if (a.absolutePath() == b.absolutePath())

            return true;

        a.cdUp();

    }

    return false;

}


int main(int argc, char *argv[])

{

    QCoreApplication app(argc, argv);


    QDir a("/Users/olegyadrov/one/two/three");

    QDir b("/Users/olegyadrov/one/two");

    QDir c("/Users/olegyadrov/one/four");


    qDebug() << isSubdirectory(a, b);

    qDebug() << isSubdirectory(a, c);


    return app.exec();

}

On Jul 11, 2018, at 10:59 AM, Thiago Macieira <thiago.macieira at intel.com<mailto:thiago.macieira at intel.com>> wrote:

On Wednesday, 11 July 2018 07:44:46 PDT Oleg Yadrov wrote:
   qDebug() << a.absolutePath().startsWith(b.absolutePath());

   qDebug() << a.absolutePath().startsWith(c.absolutePath());

Except that this has a bug (which we had in Qt too): these two directories are
considered to be parent-child, when they're not

C:\One\TwoAndTwenty
C:\One\Two

And since we're talking about Windows, you also need to use case-insensitive
comparison.
--
Thiago Macieira - thiago.macieira (AT) intel.com<http://intel.com>
 Software Architect - Intel Open Source Technology Center



_______________________________________________
Interest mailing list
Interest at qt-project.org<mailto:Interest at qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20180711/46bd810e/attachment.html>


More information about the Interest mailing list