This is the mail archive of the
mailing list for the Cygwin project.
Re: Qt5: QDir::mkpath() fails for /cygdrive/ paths
- From: Andrey Repin <anrdaemon at yandex dot ru>
- To: David Stacey <drstacey at tiscali dot co dot uk>, cygwin at cygwin dot com
- Date: Thu, 13 Aug 2015 02:44:01 +0300
- Subject: Re: Qt5: QDir::mkpath() fails for /cygdrive/ paths
- Authentication-results: sourceware.org; auth=none
- References: <559EC831 dot 9030404 at tiscali dot co dot uk> <55CBC1CD dot 6050801 at tiscali dot co dot uk>
- Reply-to: cygwin at cygwin dot com
Greetings, David Stacey!
>> QDir::mkpath() fails when creating paths that start '/cygdrive/'. This
>> problem is only shown with Qt5 (not Qt4), and only with paths that
>> start '/cygdrive/' (so running from my home directory '~' is fine).
>> This is not a permissions problem, as it works fine with Qt4.
>> Sample programme is below. Compile for Qt5 as per the comments. 'cd
>> /cygdrive/X' where X is a local drive where you have permissions to
>> create a directory. Run './create_directory new_dir' and it fails to
>> create the directory. Programme works fine when compiled with Qt4.
> I have updated to libQt5Core5-5.4.2-2, and I'm still getting this
> problem. Is anyone else able to reproduce this, or offer some insight as
> to why it might be failing? For completeness, my example programme is
> included below.
QDir in Qt5 have known issues. A number of them. One serious issues is a
failure to treat international (UNICODE) paths. Probably related to all
unicode handling in that area.
Hang on the updates channel to see them resolved.
> // Programme to create a directory.
> // Works with Qt4:
> // g++ -I/usr/include/qt4 -o create_directory create_directory.cpp -lQtCore
> // Fails with Qt5 if run from a path starting '/cygdrive/', otherwise OK:
> // g++ -I/usr/include/qt5 -o create_directory create_directory.cpp
> #include <QtCore/QDir>
> #include <iostream>
> int main(int argc, char** argv)
> if (argc != 2)
> std::cerr << "Syntax: create_directory <name>";
> QDir dir(QDir::currentPath());
> if (!dir.mkpath(argv))
> std::cerr << "Failed to create directory '"
> << argv << "'." << std::endl;
> return 0;
With best regards,
Thursday, August 13, 2015 02:37:16
Sorry for my terrible english...
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple