## Unix Mounts Unix Mounts — UNIX mounts |

## Synopsis

    #include <gio/gunixmounts.h>

                        GUnixMountPoint;
                        GUnixMountEntry;
                        GUnixMountMonitor;
    void                g_unix_mount_free                   (GUnixMountEntry *mount_entry);
    gint                g_unix_mount_compare                (GUnixMountEntry *mount1,
                                                             GUnixMountEntry *mount2);
    const char *        g_unix_mount_get_mount_path         (GUnixMountEntry *mount_entry);
    const char *        g_unix_mount_get_device_path        (GUnixMountEntry *mount_entry);
    const char *        g_unix_mount_get_fs_type            (GUnixMountEntry *mount_entry);
    gboolean            g_unix_mount_is_readonly            (GUnixMountEntry *mount_entry);
    gboolean            g_unix_mount_is_system_internal     (GUnixMountEntry *mount_entry);
    GIcon *             g_unix_mount_guess_icon             (GUnixMountEntry *mount_entry);
    GIcon *             g_unix_mount_guess_symbolic_icon    (GUnixMountEntry *mount_entry);
    char *              g_unix_mount_guess_name             (GUnixMountEntry *mount_entry);
    gboolean            g_unix_mount_guess_can_eject        (GUnixMountEntry *mount_entry);
    gboolean            g_unix_mount_guess_should_display   (GUnixMountEntry *mount_entry);
    void                g_unix_mount_point_free             (GUnixMountPoint *mount_point);
    gint                g_unix_mount_point_compare          (GUnixMountPoint *mount1,
                                                             GUnixMountPoint *mount2);
    const char *        g_unix_mount_point_get_mount_path   (GUnixMountPoint *mount_point);
    const char *        g_unix_mount_point_get_device_path  (GUnixMountPoint *mount_point);
    const char *        g_unix_mount_point_get_fs_type      (GUnixMountPoint *mount_point);
    const char *        g_unix_mount_point_get_options      (GUnixMountPoint *mount_point);
    gboolean            g_unix_mount_point_is_readonly      (GUnixMountPoint *mount_point);
    gboolean            g_unix_mount_point_is_user_mountable
                                                            (GUnixMountPoint *mount_point);
    gboolean            g_unix_mount_point_is_loopback      (GUnixMountPoint *mount_point);
    GIcon *             g_unix_mount_point_guess_icon       (GUnixMountPoint *mount_point);
    GIcon *             g_unix_mount_point_guess_symbolic_icon
                                                            (GUnixMountPoint *mount_point);
    char *              g_unix_mount_point_guess_name       (GUnixMountPoint *mount_point);
    gboolean            g_unix_mount_point_guess_can_eject  (GUnixMountPoint *mount_point);
    GList *             g_unix_mount_points_get             (guint64 *time_read);
    GList *             g_unix_mounts_get                   (guint64 *time_read);
    GUnixMountEntry *   g_unix_mount_at                     (const char *mount_path,
                                                             guint64 *time_read);
    gboolean            g_unix_mounts_changed_since         (guint64 time);
    gboolean            g_unix_mount_points_changed_since   (guint64 time);
    GUnixMountMonitor * g_unix_mount_monitor_new            (void);
    void                g_unix_mount_monitor_set_rate_limit (GUnixMountMonitor *mount_monitor,
                                                             int limit_msec);
    gboolean            g_unix_is_mount_path_system_internal
                                                            (const char *mount_path);

## Object Hierarchy

      GObject
       +----GUnixMountMonitor

## Signals

      "mountpoints-changed"                            : Run Last
      "mounts-changed"                                 : Run Last

## Description

Routines for managing mounted UNIX mount points and paths.

Note that `<gio/gunixmounts.h>` belongs to the UNIX-specific GIO interfaces, thus you have to use the `gio-unix-2.0.pc` pkg-config file when using it.

## Details

### GUnixMountPoint

    typedef struct _GUnixMountPoint GUnixMountPoint;

Defines a Unix mount point (e.g. `/dev`). This corresponds roughly to a fstab entry.

### GUnixMountEntry

    typedef struct _GUnixMountEntry GUnixMountEntry;

Defines a Unix mount entry (e.g. `/media/cdrom`). This corresponds roughly to a mtab entry.

### GUnixMountMonitor

    typedef struct _GUnixMountMonitor GUnixMountMonitor;

Watches GUnixMounts for changes.

### g_unix_mount_free ()

    void                g_unix_mount_free                   (GUnixMountEntry *mount_entry);

Frees a unix mount.

`mount_entry` : | a GUnixMountEntry.

### g_unix_mount_compare ()

    gint                g_unix_mount_compare                (GUnixMountEntry *mount1,
                                                             GUnixMountEntry *mount2);

Compares two unix mounts.

`mount1` : | first GUnixMountEntry to compare.
`mount2` : | second GUnixMountEntry to compare.
Returns : | 1, 0 or -1 if `mount1` is greater than, equal to, or less than `mount2`, respectively.

### g_unix_mount_get_mount_path ()

    const char *        g_unix_mount_get_mount_path         (GUnixMountEntry *mount_entry);

Gets the mount path for a unix mount.

`mount_entry` : | input GUnixMountEntry to get the mount path for.
Returns : | the mount path for `mount_entry`.

### g_unix_mount_get_device_path ()

    const char *        g_unix_mount_get_device_path        (GUnixMountEntry *mount_entry);

Gets the device path for a unix mount.

`mount_entry` : | a GUnixMount.
Returns : | a string containing the device path.

### g_unix_mount_get_fs_type ()

    const char *        g_unix_mount_get_fs_type            (GUnixMountEntry *mount_entry);

Gets the filesystem type for the unix mount.

`mount_entry` : | a GUnixMount.
Returns : | a string containing the file system type.

### g_unix_mount_is_readonly ()

    gboolean            g_unix_mount_is_readonly            (GUnixMountEntry *mount_entry);

Checks if a unix mount is mounted read only.

`mount_entry` : | a GUnixMount.
Returns : | `TRUE` if `mount_entry` is read only.

### g_unix_mount_is_system_internal ()

    gboolean            g_unix_mount_is_system_internal     (GUnixMountEntry *mount_entry);

Checks if a unix mount is a system path.

`mount_entry` : | a GUnixMount.
Returns : | `TRUE` if the unix mount is for a system path.

### g_unix_mount_guess_icon ()

    GIcon *             g_unix_mount_guess_icon             (GUnixMountEntry *mount_entry);

Guesses the icon of a Unix mount.

`mount_entry` : | a GUnixMountEntry
Returns : | a GIcon. [transfer full]

### g_unix_mount_guess_symbolic_icon ()

    GIcon *             g_unix_mount_guess_symbolic_icon    (GUnixMountEntry *mount_entry);

Guesses the symbolic icon of a Unix mount.

`mount_entry` : | a GUnixMountEntry
Returns : | a GIcon. [transfer full]

Since 2.34

### g_unix_mount_guess_name ()

    char *              g_unix_mount_guess_name             (GUnixMountEntry *mount_entry);

Guesses the name of a Unix mount. The result is a translated string.

`mount_entry` : | a GUnixMountEntry
Returns : | A newly allocated string that must be freed with `g_free()`

### g_unix_mount_guess_can_eject ()

    gboolean            g_unix_mount_guess_can_eject        (GUnixMountEntry *mount_entry);

Guesses whether a Unix mount can be ejected.

`mount_entry` : | a GUnixMountEntry
Returns : | `TRUE` if `mount_entry` is deemed to be ejectable.

### g_unix_mount_guess_should_display ()

    gboolean            g_unix_mount_guess_should_display   (GUnixMountEntry *mount_entry);

Guesses whether a Unix mount should be displayed in the UI.

`mount_entry` : | a GUnixMountEntry
Returns : | `TRUE` if `mount_entry` is deemed to be displayable.

### g_unix_mount_point_free ()

    void                g_unix_mount_point_free             (GUnixMountPoint *mount_point);

Frees a unix mount point.

`mount_point` : | unix mount point to free.

### g_unix_mount_point_compare ()

    gint                g_unix_mount_point_compare          (GUnixMountPoint *mount1,
                                                             GUnixMountPoint *mount2);

Compares two unix mount points.

`mount1` : | a GUnixMount.
`mount2` : | a GUnixMount.
Returns : | 1, 0 or -1 if `mount1` is greater than, equal to, or less than `mount2`, respectively.

### g_unix_mount_point_get_mount_path ()

    const char *        g_unix_mount_point_get_mount_path   (GUnixMountPoint *mount_point);

Gets the mount path for a unix mount point.

`mount_point` : | a GUnixMountPoint.
Returns : | a string containing the mount path.

### g_unix_mount_point_get_device_path ()

    const char *        g_unix_mount_point_get_device_path  (GUnixMountPoint *mount_point);

Gets the device path for a unix mount point.

`mount_point` : | a GUnixMountPoint.
Returns : | a string containing the device path.

### g_unix_mount_point_get_fs_type ()

    const char *        g_unix_mount_point_get_fs_type      (GUnixMountPoint *mount_point);

Gets the file system type for the mount point.

`mount_point` : | a GUnixMountPoint.
Returns : | a string containing the file system type.

### g_unix_mount_point_get_options ()

    const char *        g_unix_mount_point_get_options      (GUnixMountPoint *mount_point);

Gets the options for the mount point.

`mount_point` : | a GUnixMountPoint.
Returns : | a string containing the options.

Since 2.32

### g_unix_mount_point_is_readonly ()

    gboolean            g_unix_mount_point_is_readonly      (GUnixMountPoint *mount_point);

Checks if a unix mount point is read only.

`mount_point` : | a GUnixMountPoint.
Returns : | `TRUE` if a mount point is read only.

### g_unix_mount_point_is_user_mountable ()

    gboolean            g_unix_mount_point_is_user_mountable
                                                            (GUnixMountPoint *mount_point);

Checks if a unix mount point is mountable by the user.

`mount_point` : | a GUnixMountPoint.
Returns : | `TRUE` if the mount point is user mountable.

### g_unix_mount_point_is_loopback ()

    gboolean            g_unix_mount_point_is_loopback      (GUnixMountPoint *mount_point);

Checks if a unix mount point is a loopback device.

`mount_point` : | a GUnixMountPoint.
Returns : | `TRUE` if the mount point is a loopback. `FALSE` otherwise.

### g_unix_mount_point_guess_icon ()

    GIcon *             g_unix_mount_point_guess_icon       (GUnixMountPoint *mount_point);

Guesses the icon of a Unix mount point.

`mount_point` : | a GUnixMountPoint
Returns : | a GIcon. [transfer full]

### g_unix_mount_point_guess_symbolic_icon ()

    GIcon *             g_unix_mount_point_guess_symbolic_icon
                                                            (GUnixMountPoint *mount_point);

Guesses the symbolic icon of a Unix mount point.

`mount_point` : | a GUnixMountPoint
Returns : | a GIcon. [transfer full]

Since 2.34

### g_unix_mount_point_guess_name ()

    char *              g_unix_mount_point_guess_name       (GUnixMountPoint *mount_point);

Guesses the name of a Unix mount point. The result is a translated string.

`mount_point` : | a GUnixMountPoint
Returns : | A newly allocated string that must be freed with `g_free()`

### g_unix_mount_point_guess_can_eject ()

    gboolean            g_unix_mount_point_guess_can_eject  (GUnixMountPoint *mount_point);

Guesses whether a Unix mount point can be ejected.

`mount_point` : | a GUnixMountPoint
Returns : | `TRUE` if `mount_point` is deemed to be ejectable.

### g_unix_mount_points_get ()

    GList *             g_unix_mount_points_get             (guint64 *time_read);

Gets a GList of GUnixMountPoint containing the unix mount points. If `time_read` is set, it will be filled with the mount timestamp, allowing for checking if the mounts have changed with `g_unix_mount_points_changed_since()`.

`time_read` : | guint64 to contain a timestamp. [out][allow-none]
Returns : | a GList of the UNIX mountpoints. [element-type GUnixMountPoint][transfer full]

### g_unix_mounts_get ()

    GList *             g_unix_mounts_get                   (guint64 *time_read);

Gets a GList of GUnixMountEntry containing the unix mounts. If `time_read` is set, it will be filled with the mount timestamp, allowing for checking if the mounts have changed with `g_unix_mounts_changed_since()`.

`time_read` : | guint64 to contain a timestamp, or `NULL`. [out][allow-none]
Returns : | a GList of the UNIX mounts. [element-type GUnixMountEntry][transfer full]

### g_unix_mount_at ()

    GUnixMountEntry *   g_unix_mount_at                     (const char *mount_path,
                                                             guint64 *time_read);

Gets a GUnixMountEntry for a given mount path. If `time_read` is set, it will be filled with a unix timestamp for checking if the mounts have changed since with `g_unix_mounts_changed_since()`.

`mount_path` : | path for a possible unix mount.
`time_read` : | guint64 to contain a timestamp. [out][allow-none]
Returns : | a GUnixMountEntry. [transfer full]

### g_unix_mounts_changed_since ()

    gboolean            g_unix_mounts_changed_since         (guint64 time);

Checks if the unix mounts have changed since a given unix time.

`time` : | guint64 to contain a timestamp.
Returns : | `TRUE` if the mounts have changed since `time`.

### g_unix_mount_points_changed_since ()

    gboolean            g_unix_mount_points_changed_since   (guint64 time);

Checks if the unix mount points have changed since a given unix time.

`time` : | guint64 to contain a timestamp.
Returns : | `TRUE` if the mount points have changed since `time`.

### g_unix_mount_monitor_new ()

    GUnixMountMonitor * g_unix_mount_monitor_new            (void);

Gets a new GUnixMountMonitor. The default rate limit for which the monitor will report consecutive changes for the mount and mount point entry files is the default for a GFileMonitor. Use `g_unix_mount_monitor_set_rate_limit()` to change this.

Returns : | a GUnixMountMonitor.

### g_unix_mount_monitor_set_rate_limit ()

    void                g_unix_mount_monitor_set_rate_limit (GUnixMountMonitor *mount_monitor,
                                                             int limit_msec);

Sets the rate limit to which the `mount_monitor` will report consecutive change events to the mount and mount point entry files.

`mount_monitor` : | a GUnixMountMonitor
`limit_msec` : | a integer with the limit in milliseconds to poll for changes.

Since 2.18

### g_unix_is_mount_path_system_internal ()

    gboolean            g_unix_is_mount_path_system_internal
                                                            (const char *mount_path);

Determines if `mount_path` is considered an implementation of the OS. This is primarily used for hiding mountable and mounted volumes that only are used in the OS and has little to no relevance to the casual user.

`mount_path` : | a mount path, e.g. `/media/disk` or `/usr`
Returns : | `TRUE` if `mount_path` is considered an implementation detail of the OS.

## Signal Details

### The `"mountpoints-changed"` signal

    void                user_function                      (GUnixMountMonitor *monitor,
                                                            gpointer           user_data)      : Run Last

Emitted when the unix mount points have changed.

`monitor` : | the object on which the signal is emitted
`user_data` : | user data set when the signal handler was connected.

### The `"mounts-changed"` signal

    void                user_function                      (GUnixMountMonitor *monitor,
                                                            gpointer           user_data)      : Run Last

Emitted when the unix mounts have changed.

`monitor` : | the object on which the signal is emitted
`user_data` : | user data set when the signal handler was connected.