File indexing completed on 2022-09-27 16:31:47

0001 /*
0002     SPDX-FileCopyrightText: 1999 Michael Kropfberger <michael.kropfberger@gmx.net>
0003     SPDX-FileCopyrightText: 2009 Dario Andres Rodriguez <andresbajotierra@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef DISKLIST_H
0009 #define DISKLIST_H
0010 
0011 #include "disks.h"
0012 
0013 #include "kdfprivate_export.h"
0014 
0015 #include <KSharedConfig>
0016 
0017 // defines the os-type
0018 #include <qglobal.h>
0019 
0020 static QLatin1String DF_Command = QLatin1String( "df" );
0021 
0022 #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
0023     static QLatin1String DF_Args = QLatin1String( "-kT" );
0024     static const bool No_FS_Type = false;
0025 #else
0026     static QLatin1String DF_Args = QLatin1String( "-k" );
0027     static const bool No_FS_Type = true;
0028 #endif
0029 
0030 #if defined(Q_OS_SOLARIS)
0031     static QLatin1String CacheFSTAB = QLatin1String( "/etc/cachefstab" );
0032     static QLatin1String FSTAB = QLatin1String( "/etc/vfstab" );
0033 #else
0034     static QLatin1String FSTAB = QLatin1String( "/etc/fstab" );
0035 #endif
0036 
0037 static const QLatin1Char Separator = QLatin1Char( '|' );
0038 
0039 /***************************************************************************/
0040 typedef QList<DiskEntry*>                        Disks;
0041 typedef QList<DiskEntry*>::const_iterator        DisksConstIterator;
0042 typedef QList<DiskEntry*>::iterator              DisksIterator;
0043 
0044 class KProcess;
0045 
0046 class KDFPRIVATE_EXPORT DiskList : public QObject
0047 {
0048     Q_OBJECT
0049 
0050     public:
0051         explicit DiskList( QObject *parent=nullptr );
0052         ~DiskList() override;
0053 
0054         int readFSTAB();
0055         int readDF();
0056         int find(DiskEntry* disk);
0057         DiskEntry* at(int index) { return disks->at(index); }
0058         int count() const { return disks->count(); }
0059         void deleteAllMountedAt(const QString &mountpoint);
0060         void setUpdatesDisabled(bool disable);
0061 
0062         //To iterate over disks items
0063         DisksConstIterator disksConstIteratorBegin() { return disks->constBegin(); }
0064         DisksConstIterator disksConstIteratorEnd() { return disks->constEnd(); }
0065 
0066         DisksIterator disksIteratorBegin() { return disks->begin(); }
0067         DisksIterator disksIteratorEnd() { return disks->end(); }
0068 
0069     Q_SIGNALS:
0070         void readDFDone();
0071         void criticallyFull(DiskEntry *disk);
0072 
0073     public Q_SLOTS:
0074         void loadSettings();
0075         void applySettings();
0076 
0077     private Q_SLOTS:
0078         void dfDone();
0079 
0080     private:
0081         void replaceDeviceEntry(DiskEntry *disk);
0082 
0083         Disks  *disks;
0084         KProcess         *dfProc;
0085         bool              readingDFStdErrOut;
0086         KSharedConfigPtr  config;
0087         bool              updatesDisabled;
0088 
0089 };
0090 /***************************************************************************/
0091 
0092 
0093 #endif
0094