File indexing completed on 2024-11-03 09:58:47
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 2009 David Faure <faure@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #include "kmemfile_p.h" 0009 #include "ksycocadevices_p.h" 0010 #include <QBuffer> 0011 #include <QDataStream> 0012 #include <QFile> 0013 #include <fcntl.h> 0014 0015 KSycocaAbstractDevice::~KSycocaAbstractDevice() 0016 { 0017 delete m_stream; 0018 } 0019 0020 QDataStream *&KSycocaAbstractDevice::stream() 0021 { 0022 if (!m_stream) { 0023 m_stream = new QDataStream(device()); 0024 m_stream->setVersion(QDataStream::Qt_5_3); 0025 } 0026 return m_stream; 0027 } 0028 0029 #if HAVE_MMAP 0030 KSycocaMmapDevice::KSycocaMmapDevice(const char *sycoca_mmap, size_t sycoca_size) 0031 { 0032 m_buffer = new QBuffer; 0033 m_buffer->setData(QByteArray::fromRawData(sycoca_mmap, sycoca_size)); 0034 } 0035 0036 KSycocaMmapDevice::~KSycocaMmapDevice() 0037 { 0038 delete m_buffer; 0039 } 0040 0041 QIODevice *KSycocaMmapDevice::device() 0042 { 0043 return m_buffer; 0044 } 0045 #endif 0046 0047 KSycocaFileDevice::KSycocaFileDevice(const QString &path) 0048 { 0049 m_database = new QFile(path); 0050 #ifndef Q_OS_WIN 0051 (void)fcntl(m_database->handle(), F_SETFD, FD_CLOEXEC); 0052 #endif 0053 } 0054 0055 KSycocaFileDevice::~KSycocaFileDevice() 0056 { 0057 delete m_database; 0058 } 0059 0060 QIODevice *KSycocaFileDevice::device() 0061 { 0062 return m_database; 0063 } 0064 0065 #ifndef QT_NO_SHAREDMEMORY 0066 KSycocaMemFileDevice::KSycocaMemFileDevice(const QString &path) 0067 { 0068 m_database = new KMemFile(path); 0069 } 0070 0071 KSycocaMemFileDevice::~KSycocaMemFileDevice() 0072 { 0073 delete m_database; 0074 } 0075 0076 QIODevice *KSycocaMemFileDevice::device() 0077 { 0078 return m_database; 0079 } 0080 #endif 0081 0082 KSycocaBufferDevice::KSycocaBufferDevice() 0083 { 0084 m_buffer = new QBuffer; 0085 } 0086 0087 KSycocaBufferDevice::~KSycocaBufferDevice() 0088 { 0089 delete m_buffer; 0090 } 0091 0092 QIODevice *KSycocaBufferDevice::device() 0093 { 0094 return m_buffer; 0095 }