Manual file test: Add permission and compile with Qt 4.8.

Change-Id: I604b3107d3e049af5cd14ae5bf5bd6785330eac7
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
bb10
Friedemann Kleint 2013-03-12 16:12:13 +01:00 committed by The Qt Project
parent 39b4955da3
commit f75b7e78a3
1 changed files with 44 additions and 1 deletions

View File

@ -46,6 +46,7 @@
#include <QDir>
#include <iostream>
#include <string>
static const char usage1[] =
"\nTests various file functionality in Qt\n\n"
@ -58,11 +59,46 @@ static const char usage2[] =" [KEYWORD] [ARGUMENTS]\n\n"
" rmr DIR remove directory recursively\n"
" using QDir::removeRecursively\n";
static inline std::string permissions(QFile::Permissions permissions)
{
std::string result(10, '-');
if (permissions & QFile::ReadOwner)
result[1] = 'r';
if (permissions & QFile::WriteOwner)
result[2] = 'w';
if (permissions & QFile::ExeOwner)
result[3] = 'x';
if (permissions & QFile::ReadGroup)
result[4] = 'r';
if (permissions & QFile::WriteGroup)
result[5] = 'w';
if (permissions & QFile::ExeGroup)
result[6] = 'x';
if (permissions & QFile::ReadOther)
result[7] = 'r';
if (permissions & QFile::WriteOther)
result[8] = 'w';
if (permissions & QFile::ExeOther)
result[9] = 'x';
return result;
}
static inline std::string permissions(const QFileInfo &fi)
{
std::string result = permissions(fi.permissions());
if (fi.isSymLink())
result[0] = 'l';
else if (fi.isDir())
result[0] = 'd';
return result;
}
static int ls(int argCount, char **args)
{
for (int i = 0 ; i < argCount; ++i) {
const QFileInfo fi(QString::fromLocal8Bit(args[i]));
std::cout << QDir::toNativeSeparators(fi.absoluteFilePath()).toStdString() << ' ' << fi.size();
std::cout << QDir::toNativeSeparators(fi.absoluteFilePath()).toStdString() << ' ' << fi.size()
<< ' ' << permissions(fi);
if (fi.exists())
std::cout << " [exists]";
if (fi.isFile())
@ -73,6 +109,7 @@ static int ls(int argCount, char **args)
}
if (fi.isDir())
std::cout << " [dir]";
std::cout << std::endl;
}
return 0;
@ -110,12 +147,18 @@ static int rm(const char *fileName)
static int rmr(const char *dirName)
{
#if QT_VERSION < 0x050000
Q_UNUSED(dirName)
return 1;
#else
QDir dir(QString::fromLocal8Bit(dirName));
if (!dir.removeRecursively()) {
qWarning().nospace() << "Failed to remove " << dir.absolutePath();
return -1;
}
return 0;
#endif
}
int main(int argc, char *argv[])