void SynchronizerDirList::slotEntries(KIO::Job * job, const KIO::UDSEntryList& entries) { KIO::UDSEntryList::const_iterator it = entries.begin(); KIO::UDSEntryList::const_iterator end = entries.end(); int rwx = -1; QString prot = ((KIO::ListJob *)job)->url().scheme(); if (prot == "krarc" || prot == "tar" || prot == "zip") rwx = PERM_ALL; while (it != end) { KFileItem kfi(*it, ((KIO::ListJob *)job)->url(), true, true); QString key = kfi.text(); if (key != "." && key != ".." && (!ignoreHidden || !key.startsWith(QLatin1String(".")))) { mode_t mode = kfi.mode() | kfi.permissions(); QString perm = KRpermHandler::mode2QString(mode); if (kfi.isDir()) perm[ 0 ] = 'd'; vfile *item = new vfile(kfi.text(), kfi.size(), perm, kfi.time(KFileItem::ModificationTime).toTime_t(), kfi.isLink(), false, kfi.user(), kfi.group(), kfi.user(), kfi.mimetype(), kfi.linkDest(), mode, rwx #ifdef HAVE_POSIX_ACL , kfi.ACL().asString() #endif ); insert(key, item); } ++it; } }
void ftp_vfs::slotAddFiles(KIO::Job *, const KIO::UDSEntryList& entries) { int rwx = -1; QString prot = vfs_origin.scheme(); if (prot == "krarc" || prot == "tar" || prot == "zip") rwx = PERM_ALL; KIO::UDSEntryList::const_iterator it = entries.begin(); KIO::UDSEntryList::const_iterator end = entries.end(); // as long as u can find files - add them to the vfs for (; it != end; ++it) { KFileItem kfi(*it, vfs_origin, true, true); vfile *temp; // get file statistics QString name = kfi.text(); // ignore un-needed entries if (name.isEmpty() || name == "." || name == "..") continue; KIO::filesize_t size = kfi.size(); time_t mtime = kfi.time(KFileItem::ModificationTime).toTime_t(); bool symLink = kfi.isLink(); mode_t mode = kfi.mode() | kfi.permissions(); QString perm = KRpermHandler::mode2QString(mode); // set the mimetype QString mime = kfi.mimetype(); QString symDest = ""; if (symLink) { symDest = kfi.linkDest(); if (kfi.isDir()) perm[ 0 ] = 'd'; } // create a new virtual file object if (kfi.user().isEmpty()) temp = new vfile(name, size, perm, mtime, symLink, false, getuid(), getgid(), mime, symDest, mode, rwx); else { QString currentUser = vfs_origin.userName(); if (currentUser.contains("@")) /* remove the FTP proxy tags from the username */ currentUser.truncate(currentUser.indexOf('@')); if (currentUser.isEmpty()) { if (vfs_origin.host().isEmpty()) currentUser = KRpermHandler::uid2user(getuid()); else { currentUser = ""; // empty, but not QString() } } temp = new vfile(name, size, perm, mtime, symLink, false, kfi.user(), kfi.group(), currentUser, mime, symDest, mode, rwx, kfi.ACL().asString(), kfi.defaultACL().asString()); } if (!kfi.localPath().isEmpty()) { temp->vfile_setUrl(QUrl::fromLocalFile(kfi.localPath())); } else { temp->vfile_setUrl(kfi.url()); } temp->vfile_setIcon(kfi.iconName()); foundVfile(temp); } }