static int convertPermission(const QFileInfo &fileInfo) { int p = 0; if (fileInfo.permission(QFile::ReadUser)) p += 400; if (fileInfo.permission(QFile::WriteUser)) p += 200; if (fileInfo.permission(QFile::ExeUser)) p += 100; if (fileInfo.permission(QFile::ReadGroup)) p += 40; if (fileInfo.permission(QFile::WriteGroup)) p += 20; if (fileInfo.permission(QFile::ExeGroup)) p += 10; if (fileInfo.permission(QFile::ReadOther)) p += 4; if (fileInfo.permission(QFile::WriteOther)) p += 2; if (fileInfo.permission(QFile::ExeOther)) p += 1; return p; }
const QByteArray FileTreeItem::permissions(const QFileInfo & info) { QByteArray ret(info.isDir()?"d":"-"); ret += (info.permission(QFile::ReadOwner))?"r":"-"; ret += (info.permission(QFile::WriteOwner))?"w":"-"; ret += (info.permission(QFile::ExeOwner))?"x":"-"; ret += (info.permission(QFile::ReadGroup))?"r":"-"; ret += (info.permission(QFile::WriteGroup))?"w":"-"; ret += (info.permission(QFile::ExeGroup))?"x":"-"; ret += (info.permission(QFile::ReadOther))?"r":"-"; ret += (info.permission(QFile::WriteOther))?"w":"-"; ret += (info.permission(QFile::ExeOther))?"x":"-"; return ret; }
QString forPermissions(const QFileInfo &info) { mode_t p = 0; if (info.isDir()) p |= S_IFDIR; if (info.isSymLink()) p |= S_IFLNK; if (info.permission(QFile::ReadUser)) p |= S_IRWXU & S_IRUSR; if (info.permission(QFile::WriteUser)) p |= S_IRWXU & S_IWUSR; if (info.permission(QFile::ExeUser)) p |= S_IRWXU & S_IXUSR; if (info.permission(QFile::ReadGroup)) p |= S_IRWXG & S_IRGRP; if (info.permission(QFile::WriteGroup)) p |= S_IRWXG & S_IWGRP; if (info.permission(QFile::ExeGroup)) p |= S_IRWXG & S_IXGRP; if (info.permission(QFile::ReadOther)) p |= S_IRWXO & S_IROTH; if (info.permission(QFile::WriteOther)) p |= S_IRWXO & S_IWOTH; if (info.permission(QFile::ExeOther)) p |= S_IRWXO & S_IXOTH; return forPermissions(p); }
KSambaShareData::UserShareError KSambaSharePrivate::isPathValid(const QString &path) const { QFileInfo pathInfo = path; if (!pathInfo.exists()) { return KSambaShareData::UserSharePathNotExists; } if (!pathInfo.isDir()) { return KSambaShareData::UserSharePathNotDirectory; } if (pathInfo.isRelative()) { if (pathInfo.makeAbsolute()) { return KSambaShareData::UserSharePathNotAbsolute; } } // TODO: check if the user is root if (KSambaSharePrivate::testparmParamValue(QStringLiteral("usershare owner only")) == QLatin1String("Yes")) { if (!pathInfo.permission(QFile::ReadUser | QFile::WriteUser)) { return KSambaShareData::UserSharePathNotAllowed; } } return KSambaShareData::UserSharePathOk; }
bool DkImageContainerT::loadImageThreaded(bool force) { #ifdef WITH_QUAZIP //zip archives: get zip file fileInfo for checks if(isFromZip()) setFilePath(getZipData()->getZipFilePath()); #endif // check file for updates QFileInfo fileInfo = filePath(); QDateTime modifiedBefore = fileInfo.lastModified(); fileInfo.refresh(); if (force || fileInfo.lastModified() != modifiedBefore || getLoader()->isDirty()) { qDebug() << "updating image..."; getThumb()->setImage(QImage()); clear(); } // null file? if (fileInfo.fileName().isEmpty() || !fileInfo.exists()) { QString msg = tr("Sorry, the file: %1 does not exist... ").arg(fileName()); emit showInfoSignal(msg); mLoadState = exists_not; return false; } else if (!fileInfo.permission(QFile::ReadUser)) { QString msg = tr("Sorry, you are not allowed to read: %1").arg(fileName()); emit showInfoSignal(msg); mLoadState = exists_not; return false; } #ifdef WITH_QUAZIP //zip archives: use the image file info from now on if(isFromZip()) setFilePath(getZipData()->getImageFileName()); #endif mLoadState = loading; fetchFile(); return true; }
void CFileList::Load( QString *in_cwd ) { #ifdef QT_V4LAYOUT Q3ListViewItem *pListViewItem; #else QListViewItem *pListViewItem; #endif QDir d; clear(); if ( in_cwd ) { cwd = *in_cwd; } d.setFilter( QDir::Files | QDir::Hidden ); d.cd( cwd ); d.setNameFilter("*.dsn"); #ifdef QT_V4LAYOUT const QFileInfoList list = d.entryInfoList(); QFileInfo fi; // pointer for traversing for ( int i = 0; i < list.size(); i ++ ) { QString perm, size; char driver[ 128 ]; fi = list.at(i); perm = "-"; perm += fi.permission( QFileInfo::ReadUser ) ? "r" : "-"; perm += fi.permission( QFileInfo::WriteUser ) ? "w" : "-"; perm += fi.permission( QFileInfo::ExeUser ) ? "x" : "-"; perm += fi.permission( QFileInfo::ReadGroup ) ? "r" : "-"; perm += fi.permission( QFileInfo::WriteGroup ) ? "w" : "-"; perm += fi.permission( QFileInfo::ExeGroup ) ? "x" : "-"; perm += fi.permission( QFileInfo::ReadOther ) ? "r" : "-"; perm += fi.permission( QFileInfo::WriteOther ) ? "w" : "-"; perm += fi.permission( QFileInfo::ExeOther ) ? "x" : "-"; size.sprintf( "%d bytes", fi.size()); pListViewItem = new Q3ListViewItem( this, fi.fileName(), perm, fi.owner(), fi.group(), size ); } #else const QFileInfoList *list = d.entryInfoList(); QFileInfoListIterator it( *list ); // create list iterator QFileInfo *fi; // pointer for traversing while ( (fi=it.current()) ) { // for each file... QString perm, size; char driver[ 128 ]; perm = "-"; perm += fi->permission( QFileInfo::ReadUser ) ? "r" : "-"; perm += fi->permission( QFileInfo::WriteUser ) ? "w" : "-"; perm += fi->permission( QFileInfo::ExeUser ) ? "x" : "-"; perm += fi->permission( QFileInfo::ReadGroup ) ? "r" : "-"; perm += fi->permission( QFileInfo::WriteGroup ) ? "w" : "-"; perm += fi->permission( QFileInfo::ExeGroup ) ? "x" : "-"; perm += fi->permission( QFileInfo::ReadOther ) ? "r" : "-"; perm += fi->permission( QFileInfo::WriteOther ) ? "w" : "-"; perm += fi->permission( QFileInfo::ExeOther ) ? "x" : "-"; size.sprintf( "%d bytes", fi->size()); pListViewItem = new QListViewItem( this, fi->fileName(), perm, fi->owner(), fi->group(), size ); ++it; // goto next list element } #endif }
void KSaveFileTest::test_ksavefile() { QString targetFile; { //This will be the file we eventually write to. Yes, I know you //should never remove the temporaryfile and then expect the filename //to continue to be unique, but this is a test for crying out loud. :) KTemporaryFile file; file.setPrefix("ksavefiletest"); QVERIFY( file.open() ); targetFile = file.fileName(); } { //Test basic functionality KSaveFile saveFile; saveFile.setFileName(targetFile); QVERIFY( saveFile.open() ); QVERIFY( !QFile::exists(targetFile) ); QTextStream ts ( &saveFile ); ts << "This is test data one.\n"; ts.flush(); QCOMPARE( saveFile.error(), QFile::NoError ); QVERIFY( !QFile::exists(targetFile) ); QVERIFY( saveFile.finalize() ); QVERIFY( QFile::exists(targetFile) ); QFile::remove(targetFile); QVERIFY( !QFile::exists(targetFile) ); } { //Make sure destructor does what it is supposed to do. { KSaveFile saveFile; saveFile.setFileName(targetFile); QVERIFY( saveFile.open() ); QVERIFY( !QFile::exists(targetFile) ); } QVERIFY( QFile::exists(targetFile) ); QFile::remove(targetFile); QVERIFY( !QFile::exists(targetFile) ); } { //Test some error conditions KSaveFile saveFile; QVERIFY( !saveFile.open() ); //no filename saveFile.setFileName(targetFile); QVERIFY( saveFile.open() ); QVERIFY( !QFile::exists(targetFile) ); QVERIFY( !saveFile.open() ); //already open QVERIFY( saveFile.finalize() ); QVERIFY( QFile::exists(targetFile) ); QVERIFY( !saveFile.finalize() ); //already finalized QFile::remove(targetFile); QVERIFY( !QFile::exists(targetFile) ); } { //Do it again, aborting this time KSaveFile saveFile ( targetFile ); QVERIFY( saveFile.open() ); QVERIFY( !QFile::exists(targetFile) ); QTextStream ts ( &saveFile ); ts << "This is test data two.\n"; ts.flush(); QCOMPARE( saveFile.error(), QFile::NoError ); QVERIFY( !QFile::exists(targetFile) ); saveFile.abort(); QVERIFY( !QFile::exists(targetFile) ); } QFile file ( targetFile ); QVERIFY( file.open(QIODevice::WriteOnly | QIODevice::Text) ); QVERIFY( file.setPermissions( file.permissions() | QFile::ExeUser ) ); file.close(); { //Test how it works when the file already exists //Also check for special permissions KSaveFile saveFile ( targetFile ); QVERIFY( saveFile.open() ); QVERIFY( QFile::exists(targetFile) ); QFileInfo fi ( targetFile ); #ifndef Q_WS_WIN // Windows: qt_ntfs_permission_lookup is not set by default in // qfsfileengine_win.cpp, could change in future Qt versions. QVERIFY( fi.permission( QFile::ExeUser ) ); #endif QVERIFY( fi.size() == 0 ); QTextStream ts ( &saveFile ); ts << "This is test data three.\n"; ts.flush(); fi.refresh(); QVERIFY( fi.size() == 0 ); QVERIFY( saveFile.finalize() ); fi.refresh(); QVERIFY( fi.size() != 0 ); #ifndef Q_WS_WIN QVERIFY( fi.permission( QFile::ExeUser ) ); #endif QFile::remove(targetFile); } { QFileInfo fi ( targetFile ); targetFile = fi.fileName(); QDir::setCurrent(fi.path()); //one more time, this time with relative filenames KSaveFile saveFile ( targetFile ); QVERIFY( saveFile.open() ); QVERIFY( !QFile::exists(targetFile) ); QTextStream ts ( &saveFile ); ts << "This is test data four.\n"; ts.flush(); QCOMPARE( saveFile.error(), QFile::NoError ); QVERIFY( !QFile::exists(targetFile) ); QVERIFY( saveFile.finalize() ); QVERIFY( QFile::exists(targetFile) ); QFile::remove(targetFile); } }
/** Creates the \c ls command result * * It creates it in the packetData string. * */ void RainbruRPG::Network::Ftp::FtpTransfer::lsResult(){ LOGI("LIST command result :"); packetData=""; unsigned int childs=1; QDir dir(currentDirectory ); dir.setFilter(QDir::Dirs| QDir::Files| QDir::NoSymLinks); dir.setSorting(QDir::Name); QFileInfoList list = dir.entryInfoList(); LOGCATS("Sending "); LOGCATI(list.size()); LOGCATS(" files."); LOGCAT(); for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); // ====== User permissions // Diretory ? if (fileInfo.isDir()){ packetData+="d"; QDir dir2(fileInfo.absoluteFilePath()); childs=dir2.count(); } else{ packetData+="-"; childs=1; } packetData+=filePermissions(fileInfo.isReadable(),fileInfo.isWritable(), fileInfo.isExecutable()); packetData+=filePermissions(fileInfo.permission(QFile::ReadGroup), fileInfo.permission(QFile::WriteGroup), fileInfo.permission(QFile::ExeGroup)); packetData+=filePermissions(fileInfo.permission(QFile::ReadOther), fileInfo.permission(QFile::WriteOther), fileInfo.permission(QFile::ExeOther)); // Child number QString sChild; sChild.setNum(childs); sChild=sChild.rightJustified(5); packetData+=sChild; // Owner and group names packetData+=' '; QString sOwner=fileInfo.owner(); sOwner=sOwner.leftJustified(9); packetData+=sOwner; QString sGroup=fileInfo.group(); sGroup=sGroup.leftJustified(9); packetData+=sGroup; // File size qint64 size=fileInfo.size(); QString sSize=fileSizeToString(size); sSize=sSize.rightJustified(8); packetData+=sSize; // Last modified time packetData+=" "; QDateTime dt=fileInfo.lastModified(); packetData+=dt.toString("yyyy-MM-dd hh:mm"); // File name and EOL packetData+=" "; packetData+=fileInfo.fileName(); packetData+="\n"; } LOGI("PacketData done. LIST result can be sent"); int i= packetData.size(); LOGCATS("PacketData lenght :"); LOGCATI(i); LOGCAT(); }