Beispiel #1
0
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
Beispiel #2
0
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;
}