void RecentDocuments::listDir(const QUrl& url) { if (isRootUrl(url)) { QStringList list = KRecentDocument::recentDocuments(); KIO::UDSEntryList udslist; QSet<QString> urlSet; Q_FOREACH(const QString & entry, list) { if (KDesktopFile::isDesktopFile(entry)) { QFileInfo info(entry); KDesktopFile file(entry); QUrl urlInside(file.readUrl()); QString toDisplayString = urlInside.toDisplayString(); if (urlInside.scheme() == "recentdocuments" || urlSet.contains(toDisplayString)) continue; KIO::UDSEntry uds; if (urlInside.isLocalFile()) { KIO::StatJob* job = KIO::stat(urlInside, KIO::HideProgressInfo); // we do not want to wait for the event loop to delete the job QScopedPointer<KIO::StatJob> sp(job); job->setAutoDelete(false); if (KIO::NetAccess::synchronousRun(job, 0)) { uds = job->statResult(); } } urlSet.insert(toDisplayString); uds.insert(KIO::UDSEntry::UDS_NAME, info.completeBaseName()); if (urlInside.isLocalFile()) { uds.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, urlInside.toLocalFile()); uds.insert(KIO::UDSEntry::UDS_LOCAL_PATH, urlInside.path()); } else { uds.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, toDisplayString); uds.insert(KIO::UDSEntry::UDS_ICON_NAME, file.readIcon()); } uds.insert(KIO::UDSEntry::UDS_TARGET_URL, toDisplayString); udslist << uds; } } listEntries(udslist); finished(); } else
int main(int argc, char *argv[]) { int in; struct stat sb; uint8 *buf; index_header *h; struct options opts; char outnbuf[512]; parse_arguments(argc, argv, &opts); in = open(opts.infile, O_RDONLY); if (in == -1) { fprintf(stderr, "Error: Could not open file %s: %s\n", opts.infile, strerror(errno)); return EXIT_FAILURE; } if (fstat(in, &sb) == -1) { perror("stat() failed"); return EXIT_FAILURE; } buf = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, in, 0); if (buf == MAP_FAILED) { perror("mmap() failed"); return EXIT_FAILURE; } close(in); if (opts.sound && !opts.outfile) { char *pdot = strrchr(opts.infile, '.'); opts.outfile = outnbuf; strcpy(outnbuf, opts.infile); if (pdot) outnbuf[pdot - opts.infile] = 0; } h = readIndex(buf); if (opts.print) printIndex(h, buf, stdout); if (opts.list) { listEntries(h, buf, stdout); } if (opts.sound && opts.outfile) { writeSoundEntries(h, buf, opts.outfile); } else if (opts.outfile) { FILE *out; out = fopen(opts.outfile, "wb+"); if (out == NULL) { fprintf(stderr, "Could not open output file '%s': %s\n", opts.outfile, strerror(errno)); exit(EXIT_FAILURE); } writeEntries(h, buf, out); fclose(out); } // freeIndex(h); munmap(buf, sb.st_size); return EXIT_SUCCESS; }