KIO

kmountpoint.h
1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 2003 Waldo Bastian <bastian@kde.org>
4 SPDX-FileCopyrightText: 2007 David Faure <faure@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.0-only
7*/
8
9#ifndef KMOUNTPOINT_H
10#define KMOUNTPOINT_H
11
12#include "kiocore_export.h"
13
14#include <QExplicitlySharedDataPointer>
15#include <QStringList>
16
17#include <memory>
18#include <sys/types.h> // dev_t among other definitions
19
20class KMountPointPrivate;
21
22/**
23 * @class KMountPoint kmountpoint.h <KMountPoint>
24 *
25 * The KMountPoint class provides information about mounted and unmounted disks.
26 * It provides a system independent interface to fstab.
27 *
28 * @author Waldo Bastian <bastian@kde.org>
29 */
30class KIOCORE_EXPORT KMountPoint : public QSharedData
31{
32public:
34
35 /**
36 * List of mount points.
37 */
38 class KIOCORE_EXPORT List : public QList<Ptr>
39 {
40 public:
41 List();
42 /**
43 * Find the mountpoint on which resides @p path
44 * For instance if /home is a separate partition, findByPath("/home/user/blah")
45 * will return /home
46 * @param path the path to check
47 * @return the mount point of the given file
48 */
49 Ptr findByPath(const QString &path) const;
50
51 /**
52 * Returns the mount point associated with @p device,
53 * i.e. the one where mountedFrom() == @p device
54 * (after symlink resolution).
55 * @return the mountpoint, or @c nullptr if this device doesn't exist or isn't mounted
56 */
57 Ptr findByDevice(const QString &device) const;
58 };
59
60public:
61 /**
62 * Flags that specify which additional details should be fetched for each mountpoint.
63 * @see DetailsNeededFlags
64 */
66 /**
67 * Only the basic details: mountedFrom, mountPoint, mountType.
68 */
70 /**
71 * Also fetch the options used when mounting, see KMountPoint::mountOptions().
72 */
74 /**
75 * Also fetch the device name (with symlinks resolved), see KMountPoint::realDeviceName().
76 */
78 };
79 /**
80 * Stores a combination of #DetailsNeededFlag values.
81 */
83
84 /**
85 * This function gives a list of all possible mountpoints. (fstab)
86 * @param infoNeeded Flags that specify which additional information
87 * should be fetched.
88 */
90
91 /**
92 * Returns a list of all current mountpoints.
93 *
94 * @param infoNeeded Flags that specify which additional information
95 * should be fetched.
96 *
97 * @note This method will return an empty list on @c Android
98 */
100
101 /**
102 * Where this filesystem gets mounted from.
103 * This can refer to a device, a remote server or something else.
104 */
105 QString mountedFrom() const;
106
107 /**
108 * Returns @c true if this mount point represents a network filesystem (e.g.\ NFS,
109 * CIFS, etc.), otherwise returns @c false.
110 *
111 * @since 5.86
112 */
113 bool isOnNetwork() const;
114
115 /**
116 * Returns the device ID (dev_t, major, minor) of this mount point. This
117 * ID is unique per device (including network mounts).
118 *
119 * @since 5.86
120 */
121 dev_t deviceId() const;
122
123 /**
124 * Canonical name of the device where the filesystem got mounted from.
125 * (Or empty, if not a device)
126 * Only available when the NeedRealDeviceName flag was set.
127 */
128 QString realDeviceName() const;
129
130 /**
131 * Path where the filesystem is mounted (if you used @ref currentMountPoints()),
132 * or can be mounted (if you used @ref possibleMountPoints()).
133 */
134 QString mountPoint() const;
135
136 /**
137 * Type of filesystem
138 */
139 QString mountType() const;
140
141 /**
142 * Options used to mount the filesystem.
143 * Only available if the @ref NeedMountOptions flag was set.
144 */
146
147 /**
148 * Returns @c true if the filesystem is "probably" slow, e.g.\ a network mount,
149 * @c false otherwise.
150 */
151 bool probablySlow() const;
152
153 enum FileSystemFlag {
154 SupportsChmod,
155 SupportsChown,
156 SupportsUTime,
157 SupportsSymlinks,
158 CaseInsensitive,
159 };
160
161 /**
162 * Checks the capabilities of the filesystem.
163 * @param flag the flag to check
164 * @return true if the filesystem has that flag, false if not
165 *
166 * The available flags are:
167 * @li SupportsChmod: returns true if the filesystem supports chmod
168 * (e.g. msdos filesystems return false)
169 * @li SupportsChown: returns true if the filesystem supports chown
170 * (e.g. msdos filesystems return false)
171 * @li SupportsUtime: returns true if the filesystems supports utime
172 * (e.g. msdos filesystems return false)
173 * @li SupportsSymlinks: returns true if the filesystems supports symlinks
174 * (e.g. msdos filesystems return false)
175 * @li CaseInsensitive: returns true if the filesystem treats
176 * "foo" and "FOO" as being the same file (true for msdos filesystems)
177 *
178 */
179 bool testFileSystemFlag(FileSystemFlag flag) const;
180
181 /**
182 * Destructor
183 */
185
186private:
187 /**
188 * Constructor
189 */
190 KIOCORE_NO_EXPORT KMountPoint();
191
192 friend KIOCORE_EXPORT QDebug operator<<(QDebug debug, const Ptr &mp);
193
194 friend KMountPointPrivate;
195 std::unique_ptr<KMountPointPrivate> d;
196};
197
198KIOCORE_EXPORT QDebug operator<<(QDebug debug, const KMountPoint::Ptr &mp);
199
200Q_DECLARE_OPERATORS_FOR_FLAGS(KMountPoint::DetailsNeededFlags)
201
202#endif // KMOUNTPOINT_H
List of mount points.
Definition kmountpoint.h:39
Ptr findByPath(const QString &path) const
Find the mountpoint on which resides path For instance if /home is a separate partition,...
Ptr findByDevice(const QString &device) const
Returns the mount point associated with device, i.e.
DetailsNeededFlag
Flags that specify which additional details should be fetched for each mountpoint.
Definition kmountpoint.h:65
@ NeedRealDeviceName
Also fetch the device name (with symlinks resolved), see KMountPoint::realDeviceName().
Definition kmountpoint.h:77
@ BasicInfoNeeded
Only the basic details: mountedFrom, mountPoint, mountType.
Definition kmountpoint.h:69
@ NeedMountOptions
Also fetch the options used when mounting, see KMountPoint::mountOptions().
Definition kmountpoint.h:73
QString realDeviceName() const
Canonical name of the device where the filesystem got mounted from.
QString mountType() const
Type of filesystem.
QString mountPoint() const
Path where the filesystem is mounted (if you used currentMountPoints()), or can be mounted (if you us...
~KMountPoint()
Destructor.
bool probablySlow() const
Returns true if the filesystem is "probably" slow, e.g. a network mount, false otherwise.
static List currentMountPoints(DetailsNeededFlags infoNeeded=BasicInfoNeeded)
Returns a list of all current mountpoints.
QStringList mountOptions() const
Options used to mount the filesystem.
QString mountedFrom() const
Where this filesystem gets mounted from.
QFlags< DetailsNeededFlag > DetailsNeededFlags
Stores a combination of DetailsNeededFlag values.
Definition kmountpoint.h:82
static List possibleMountPoints(DetailsNeededFlags infoNeeded=BasicInfoNeeded)
This function gives a list of all possible mountpoints.
dev_t deviceId() const
Returns the device ID (dev_t, major, minor) of this mount point.
bool isOnNetwork() const
Returns true if this mount point represents a network filesystem (e.g. NFS, CIFS, etc....
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 24 2025 11:49:36 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.