1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module gio.UnixMountEntry;
26 
27 private import gio.IconIF;
28 private import gio.c.functions;
29 public  import gio.c.types;
30 private import glib.ListG;
31 private import glib.Str;
32 private import gobject.ObjectG;
33 public  import gtkc.giotypes;
34 
35 
36 /**
37  * Defines a Unix mount entry (e.g. <filename>/media/cdrom</filename>).
38  * This corresponds roughly to a mtab entry.
39  */
40 public class UnixMountEntry
41 {
42 	/** the main Gtk struct */
43 	protected GUnixMountEntry* gUnixMountEntry;
44 	protected bool ownedRef;
45 
46 	/** Get the main Gtk struct */
47 	public GUnixMountEntry* getUnixMountEntryStruct(bool transferOwnership = false)
48 	{
49 		if (transferOwnership)
50 			ownedRef = false;
51 		return gUnixMountEntry;
52 	}
53 
54 	/** the main Gtk struct as a void* */
55 	protected void* getStruct()
56 	{
57 		return cast(void*)gUnixMountEntry;
58 	}
59 
60 	/**
61 	 * Sets our main struct and passes it to the parent class.
62 	 */
63 	public this (GUnixMountEntry* gUnixMountEntry, bool ownedRef = false)
64 	{
65 		this.gUnixMountEntry = gUnixMountEntry;
66 		this.ownedRef = ownedRef;
67 	}
68 
69 
70 	/** */
71 	public static GType getType()
72 	{
73 		return g_unix_mount_entry_get_type();
74 	}
75 
76 	/**
77 	 * Determines if @mount_path is considered an implementation of the
78 	 * OS. This is primarily used for hiding mountable and mounted volumes
79 	 * that only are used in the OS and has little to no relevance to the
80 	 * casual user.
81 	 *
82 	 * Params:
83 	 *     mountPath = a mount path, e.g. `/media/disk` or `/usr`
84 	 *
85 	 * Returns: %TRUE if @mount_path is considered an implementation detail
86 	 *     of the OS.
87 	 */
88 	public static bool isMountPathSystemInternal(string mountPath)
89 	{
90 		return g_unix_is_mount_path_system_internal(Str.toStringz(mountPath)) != 0;
91 	}
92 
93 	/**
94 	 * Gets a #GUnixMountEntry for a given mount path. If @time_read
95 	 * is set, it will be filled with a unix timestamp for checking
96 	 * if the mounts have changed since with g_unix_mounts_changed_since().
97 	 *
98 	 * Params:
99 	 *     mountPath = path for a possible unix mount.
100 	 *     timeRead = guint64 to contain a timestamp.
101 	 *
102 	 * Returns: a #GUnixMountEntry.
103 	 */
104 	public static UnixMountEntry at(string mountPath, out ulong timeRead)
105 	{
106 		auto p = g_unix_mount_at(Str.toStringz(mountPath), &timeRead);
107 
108 		if(p is null)
109 		{
110 			return null;
111 		}
112 
113 		return ObjectG.getDObject!(UnixMountEntry)(cast(GUnixMountEntry*) p, true);
114 	}
115 
116 	/**
117 	 * Compares two unix mounts.
118 	 *
119 	 * Params:
120 	 *     mount2 = second #GUnixMountEntry to compare.
121 	 *
122 	 * Returns: 1, 0 or -1 if @mount1 is greater than, equal to,
123 	 *     or less than @mount2, respectively.
124 	 */
125 	public int compare(UnixMountEntry mount2)
126 	{
127 		return g_unix_mount_compare(gUnixMountEntry, (mount2 is null) ? null : mount2.getUnixMountEntryStruct());
128 	}
129 
130 	/**
131 	 * Frees a unix mount.
132 	 */
133 	public void free()
134 	{
135 		g_unix_mount_free(gUnixMountEntry);
136 	}
137 
138 	/**
139 	 * Gets the device path for a unix mount.
140 	 *
141 	 * Returns: a string containing the device path.
142 	 */
143 	public string getDevicePath()
144 	{
145 		return Str.toString(g_unix_mount_get_device_path(gUnixMountEntry));
146 	}
147 
148 	/**
149 	 * Gets the filesystem type for the unix mount.
150 	 *
151 	 * Returns: a string containing the file system type.
152 	 */
153 	public string getFsType()
154 	{
155 		return Str.toString(g_unix_mount_get_fs_type(gUnixMountEntry));
156 	}
157 
158 	/**
159 	 * Gets the mount path for a unix mount.
160 	 *
161 	 * Returns: the mount path for @mount_entry.
162 	 */
163 	public string getMountPath()
164 	{
165 		return Str.toString(g_unix_mount_get_mount_path(gUnixMountEntry));
166 	}
167 
168 	/**
169 	 * Guesses whether a Unix mount can be ejected.
170 	 *
171 	 * Returns: %TRUE if @mount_entry is deemed to be ejectable.
172 	 */
173 	public bool guessCanEject()
174 	{
175 		return g_unix_mount_guess_can_eject(gUnixMountEntry) != 0;
176 	}
177 
178 	/**
179 	 * Guesses the icon of a Unix mount.
180 	 *
181 	 * Returns: a #GIcon
182 	 */
183 	public IconIF guessIcon()
184 	{
185 		auto p = g_unix_mount_guess_icon(gUnixMountEntry);
186 
187 		if(p is null)
188 		{
189 			return null;
190 		}
191 
192 		return ObjectG.getDObject!(IconIF)(cast(GIcon*) p, true);
193 	}
194 
195 	/**
196 	 * Guesses the name of a Unix mount.
197 	 * The result is a translated string.
198 	 *
199 	 * Returns: A newly allocated string that must
200 	 *     be freed with g_free()
201 	 */
202 	public string guessName()
203 	{
204 		auto retStr = g_unix_mount_guess_name(gUnixMountEntry);
205 
206 		scope(exit) Str.freeString(retStr);
207 		return Str.toString(retStr);
208 	}
209 
210 	/**
211 	 * Guesses whether a Unix mount should be displayed in the UI.
212 	 *
213 	 * Returns: %TRUE if @mount_entry is deemed to be displayable.
214 	 */
215 	public bool guessShouldDisplay()
216 	{
217 		return g_unix_mount_guess_should_display(gUnixMountEntry) != 0;
218 	}
219 
220 	/**
221 	 * Guesses the symbolic icon of a Unix mount.
222 	 *
223 	 * Returns: a #GIcon
224 	 *
225 	 * Since: 2.34
226 	 */
227 	public IconIF guessSymbolicIcon()
228 	{
229 		auto p = g_unix_mount_guess_symbolic_icon(gUnixMountEntry);
230 
231 		if(p is null)
232 		{
233 			return null;
234 		}
235 
236 		return ObjectG.getDObject!(IconIF)(cast(GIcon*) p, true);
237 	}
238 
239 	/**
240 	 * Checks if a unix mount is mounted read only.
241 	 *
242 	 * Returns: %TRUE if @mount_entry is read only.
243 	 */
244 	public bool isReadonly()
245 	{
246 		return g_unix_mount_is_readonly(gUnixMountEntry) != 0;
247 	}
248 
249 	/**
250 	 * Checks if a Unix mount is a system mount. This is the Boolean OR of
251 	 * g_unix_is_system_fs_type(), g_unix_is_system_device_path() and
252 	 * g_unix_is_mount_path_system_internal() on @mount_entry’s properties.
253 	 *
254 	 * The definition of what a ‘system’ mount entry is may change over time as new
255 	 * file system types and device paths are ignored.
256 	 *
257 	 * Returns: %TRUE if the unix mount is for a system path.
258 	 */
259 	public bool isSystemInternal()
260 	{
261 		return g_unix_mount_is_system_internal(gUnixMountEntry) != 0;
262 	}
263 
264 	/**
265 	 * Checks if the unix mount points have changed since a given unix time.
266 	 *
267 	 * Params:
268 	 *     time = guint64 to contain a timestamp.
269 	 *
270 	 * Returns: %TRUE if the mount points have changed since @time.
271 	 */
272 	public static bool pointsChangedSince(ulong time)
273 	{
274 		return g_unix_mount_points_changed_since(time) != 0;
275 	}
276 
277 	/**
278 	 * Gets a #GList of #GUnixMountPoint containing the unix mount points.
279 	 * If @time_read is set, it will be filled with the mount timestamp,
280 	 * allowing for checking if the mounts have changed with
281 	 * g_unix_mount_points_changed_since().
282 	 *
283 	 * Params:
284 	 *     timeRead = guint64 to contain a timestamp.
285 	 *
286 	 * Returns: a #GList of the UNIX mountpoints.
287 	 */
288 	public static ListG mountPointsGet(out ulong timeRead)
289 	{
290 		auto p = g_unix_mount_points_get(&timeRead);
291 
292 		if(p is null)
293 		{
294 			return null;
295 		}
296 
297 		return new ListG(cast(GList*) p, true);
298 	}
299 
300 	/**
301 	 * Checks if the unix mounts have changed since a given unix time.
302 	 *
303 	 * Params:
304 	 *     time = guint64 to contain a timestamp.
305 	 *
306 	 * Returns: %TRUE if the mounts have changed since @time.
307 	 */
308 	public static bool mountsChangedSince(ulong time)
309 	{
310 		return g_unix_mounts_changed_since(time) != 0;
311 	}
312 
313 	/**
314 	 * Gets a #GList of #GUnixMountEntry containing the unix mounts.
315 	 * If @time_read is set, it will be filled with the mount
316 	 * timestamp, allowing for checking if the mounts have changed
317 	 * with g_unix_mounts_changed_since().
318 	 *
319 	 * Params:
320 	 *     timeRead = guint64 to contain a timestamp, or %NULL
321 	 *
322 	 * Returns: a #GList of the UNIX mounts.
323 	 */
324 	public static ListG mountsGet(out ulong timeRead)
325 	{
326 		auto p = g_unix_mounts_get(&timeRead);
327 
328 		if(p is null)
329 		{
330 			return null;
331 		}
332 
333 		return new ListG(cast(GList*) p, true);
334 	}
335 
336 	/**
337 	 * Makes a copy of @mount_entry.
338 	 *
339 	 * Returns: a new #GUnixMountEntry
340 	 *
341 	 * Since: 2.54
342 	 */
343 	public UnixMountEntry copy()
344 	{
345 		auto p = g_unix_mount_copy(gUnixMountEntry);
346 
347 		if(p is null)
348 		{
349 			return null;
350 		}
351 
352 		return ObjectG.getDObject!(UnixMountEntry)(cast(GUnixMountEntry*) p, true);
353 	}
354 
355 	/**
356 	 * Gets a #GUnixMountEntry for a given file path. If @time_read
357 	 * is set, it will be filled with a unix timestamp for checking
358 	 * if the mounts have changed since with g_unix_mounts_changed_since().
359 	 *
360 	 * Params:
361 	 *     filePath = file path on some unix mount.
362 	 *     timeRead = guint64 to contain a timestamp.
363 	 *
364 	 * Returns: a #GUnixMountEntry.
365 	 *
366 	 * Since: 2.52
367 	 */
368 	public static UnixMountEntry mountFor(string filePath, out ulong timeRead)
369 	{
370 		auto p = g_unix_mount_for(Str.toStringz(filePath), &timeRead);
371 
372 		if(p is null)
373 		{
374 			return null;
375 		}
376 
377 		return ObjectG.getDObject!(UnixMountEntry)(cast(GUnixMountEntry*) p, true);
378 	}
379 
380 	/**
381 	 * Gets a comma-separated list of mount options for the unix mount. For example,
382 	 * `rw,relatime,seclabel,data=ordered`.
383 	 *
384 	 * This is similar to g_unix_mount_point_get_options(), but it takes
385 	 * a #GUnixMountEntry as an argument.
386 	 *
387 	 * Returns: a string containing the options, or %NULL if not
388 	 *     available.
389 	 *
390 	 * Since: 2.58
391 	 */
392 	public string getOptions()
393 	{
394 		return Str.toString(g_unix_mount_get_options(gUnixMountEntry));
395 	}
396 
397 	/**
398 	 * Gets the root of the mount within the filesystem. This is useful e.g. for
399 	 * mounts created by bind operation, or btrfs subvolumes.
400 	 *
401 	 * For example, the root path is equal to "/" for mount created by
402 	 * "mount /dev/sda1 /mnt/foo" and "/bar" for
403 	 * "mount --bind /mnt/foo/bar /mnt/bar".
404 	 *
405 	 * Returns: a string containing the root, or %NULL if not supported.
406 	 *
407 	 * Since: 2.60
408 	 */
409 	public string getRootPath()
410 	{
411 		return Str.toString(g_unix_mount_get_root_path(gUnixMountEntry));
412 	}
413 }