GnomeVFSVolume

GnomeVFSVolume — Abstraction for a mounted file system or a network location.

Synopsis




#define     GNOME_IS_VFS_VOLUME             (o)
#define     GNOME_IS_VFS_VOLUME_CLASS       (k)
#define     GNOME_VFS_TYPE_VOLUME
#define     GNOME_VFS_VOLUME                (o)
#define     GNOME_VFS_VOLUME_CLASS          (k)
            GnomeVFSVolume;
            GnomeVFSVolumeClass;
void        (*GnomeVFSVolumeOpCallback)     (gboolean succeeded,
                                             char *error,
                                             char *detailed_error,
                                             gpointer user_data);
enum        GnomeVFSVolumeType;
gint        gnome_vfs_volume_compare        (GnomeVFSVolume *a,
                                             GnomeVFSVolume *b);
void        gnome_vfs_volume_eject          (GnomeVFSVolume *volume,
                                             GnomeVFSVolumeOpCallback callback,
                                             gpointer user_data);
char*       gnome_vfs_volume_get_activation_uri
                                            (GnomeVFSVolume *volume);
char*       gnome_vfs_volume_get_device_path
                                            (GnomeVFSVolume *volume);
GnomeVFSDeviceType gnome_vfs_volume_get_device_type
                                            (GnomeVFSVolume *volume);
char*       gnome_vfs_volume_get_display_name
                                            (GnomeVFSVolume *volume);
GnomeVFSDrive* gnome_vfs_volume_get_drive   (GnomeVFSVolume *volume);
char*       gnome_vfs_volume_get_filesystem_type
                                            (GnomeVFSVolume *volume);
char*       gnome_vfs_volume_get_hal_udi    (GnomeVFSVolume *volume);
char*       gnome_vfs_volume_get_icon       (GnomeVFSVolume *volume);
gulong      gnome_vfs_volume_get_id         (GnomeVFSVolume *volume);
GType       gnome_vfs_volume_get_type       (void);
GnomeVFSVolumeType gnome_vfs_volume_get_volume_type
                                            (GnomeVFSVolume *volume);
gboolean    gnome_vfs_volume_handles_trash  (GnomeVFSVolume *volume);
gboolean    gnome_vfs_volume_is_mounted     (GnomeVFSVolume *volume);
gboolean    gnome_vfs_volume_is_read_only   (GnomeVFSVolume *volume);
gboolean    gnome_vfs_volume_is_user_visible
                                            (GnomeVFSVolume *volume);
GnomeVFSVolume* gnome_vfs_volume_ref        (GnomeVFSVolume *volume);
GType       gnome_vfs_volume_type_get_type  (void);
void        gnome_vfs_volume_unmount        (GnomeVFSVolume *volume,
                                             GnomeVFSVolumeOpCallback callback,
                                             gpointer user_data);
void        gnome_vfs_volume_unref          (GnomeVFSVolume *volume);
void        gnome_vfs_connect_to_server     (const char *uri,
                                             const char *display_name,
                                             const char *icon);

Object Hierarchy


  GObject
   +----GnomeVFSVolume

Description

Details

GNOME_IS_VFS_VOLUME()

#define GNOME_IS_VFS_VOLUME(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNOME_VFS_TYPE_VOLUME))

o :

GNOME_IS_VFS_VOLUME_CLASS()

#define GNOME_IS_VFS_VOLUME_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNOME_VFS_TYPE_VOLUME))

k :

GNOME_VFS_TYPE_VOLUME

#define GNOME_VFS_TYPE_VOLUME        (gnome_vfs_volume_get_type ())


GNOME_VFS_VOLUME()

#define GNOME_VFS_VOLUME(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GNOME_VFS_TYPE_VOLUME, GnomeVFSVolume))

o :

GNOME_VFS_VOLUME_CLASS()

#define GNOME_VFS_VOLUME_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), GNOME_VFS_TYPE_VOLUME, GnomeVFSVolumeClass))

k :

GnomeVFSVolume

typedef struct _GnomeVFSVolume GnomeVFSVolume;


GnomeVFSVolumeClass

typedef struct {
	GObjectClass parent_class;
} GnomeVFSVolumeClass;


GnomeVFSVolumeOpCallback ()

void        (*GnomeVFSVolumeOpCallback)     (gboolean succeeded,
                                             char *error,
                                             char *detailed_error,
                                             gpointer user_data);

Note that if succeeded is FALSE and error, detailed_error are both empty strings the client is not supposed to display a dialog as an external mount/umount/eject helper will have done so.

succeeded : whether the volume operation succeeded
error : a string identifying the error that occurred, if succeeded is FALSE. Otherwise NULL.
detailed_error : a string more specifically identifying the error that occurred, if succeeded is FALSE. Otherwise NULL.
user_data : the user data that was passed when registering the callback.

Since 2.6


enum GnomeVFSVolumeType

typedef enum {
	GNOME_VFS_VOLUME_TYPE_MOUNTPOINT,
	GNOME_VFS_VOLUME_TYPE_VFS_MOUNT,
	GNOME_VFS_VOLUME_TYPE_CONNECTED_SERVER
} GnomeVFSVolumeType;


gnome_vfs_volume_compare ()

gint        gnome_vfs_volume_compare        (GnomeVFSVolume *a,
                                             GnomeVFSVolume *b);

Compares two GnomeVFSVolume objects a and b. Two GnomeVFSVolume objects referring to different volumes are guaranteed to not return 0 when comparing them, if they refer to the same volume 0 is returned.

The resulting gint should be used to determine the order in which a and b are displayed in graphical user interfces.

The comparison algorithm first of all peeks the device type of a and b, they will be sorted in the following order:

  • Magnetic and opto-magnetic volumes (ZIP, floppy)

  • Optical volumes (CD, DVD)

  • External volumes (USB sticks, music players)

  • Mounted hard disks

  • Network mounts

  • Other volumes

Afterwards, the display name of a and b is compared using a locale-sensitive sorting algorithm, which involves g_utf8_collate_key().

If two volumes have the same display name, their unique ID is compared which can be queried using gnome_vfs_volume_get_id().

a : a GnomeVFSVolume.
b : a GnomeVFSVolume.
Returns : 0 if the volumes refer to the same GnomeVFSVolume, a negative value if a should be displayed before b, or a positive value if a should be displayed after b.

Since 2.6


gnome_vfs_volume_eject ()

void        gnome_vfs_volume_eject          (GnomeVFSVolume *volume,
                                             GnomeVFSVolumeOpCallback callback,
                                             gpointer user_data);

Requests ejection of a GnomeVFSVolume.

Before the unmount operation is executed, the GnomeVFSVolume::pre-unmount signal is emitted.

If the volume is a mount point (its type is GNOME_VFS_VOLUME_TYPE_MOUNTPOINT), it is unmounted, and if it refers to a disc, it is also ejected.

If the volume is a special VFS mount, i.e. its type is GNOME_VFS_VOLUME_TYPE_VFS_MOUNT, it is ejected.

If the volume is a connected server, it is removed from the list of connected servers.

Otherwise, no further action is done.

volume : the GnomeVFSVolume that should be ejected.
callback : the GnomeVFSVolumeOpCallback that should be invoked after ejecting of volume.
user_data : the user data to pass to callback.

Since 2.6


gnome_vfs_volume_get_activation_uri ()

char*       gnome_vfs_volume_get_activation_uri
                                            (GnomeVFSVolume *volume);

Returns the activation URI of a GnomeVFSVolume.

The returned URI usually refers to a valid location. You can check the validity of the location by calling gnome_vfs_uri_new() with the URI, and checking whether the return value is not NULL.

volume : a GnomeVFSVolume.
Returns : a newly allocated string for activation uri of volume.

Since 2.6


gnome_vfs_volume_get_device_path ()

char*       gnome_vfs_volume_get_device_path
                                            (GnomeVFSVolume *volume);

Returns the device path of a GnomeVFSVolume.

For HAL volumes, this returns the value of the volume's "block.device" key. For UNIX mounts, it returns the mntent's mnt_fsname entry.

Otherwise, it returns NULL.

volume : a GnomeVFSVolume.
Returns : a newly allocated string for device path of volume.

Since 2.6


gnome_vfs_volume_get_device_type ()

GnomeVFSDeviceType gnome_vfs_volume_get_device_type
                                            (GnomeVFSVolume *volume);

Returns the GnomeVFSDeviceType of the volume.

volume : a GnomeVFSVolume.
Returns : the device type for volume.

Since 2.6


gnome_vfs_volume_get_display_name ()

char*       gnome_vfs_volume_get_display_name
                                            (GnomeVFSVolume *volume);

Returns the display name of the volume.

volume : a GnomeVFSVolume.
Returns : a newly allocated string for display name of volume.

Since 2.6


gnome_vfs_volume_get_drive ()

GnomeVFSDrive* gnome_vfs_volume_get_drive   (GnomeVFSVolume *volume);

volume : a GnomeVFSVolume.
Returns : the drive for the volume.

Since 2.6


gnome_vfs_volume_get_filesystem_type ()

char*       gnome_vfs_volume_get_filesystem_type
                                            (GnomeVFSVolume *volume);

Returns a string describing the file system on volume, or NULL if no information on the underlying file system is available.

The file system may be used to provide special functionality that depends on the file system type, for instance to determine whether trashing is supported (cf. gnome_vfs_volume_handles_trash()).

For HAL mounts, this returns the value of the "volume.fstype" key, for traditional UNIX mounts it is set to the mntent's mnt_type key, for connected servers, NULL is returned.

As of GnomeVFS 2.15.4, the following file systems are recognized by GnomeVFS:

Table 3. Recognized File Systems

File System Display Name Supports Trash
affs AFFS Volume No
afs AFS Network Volume No
auto Auto-detected Volume No
cd9660 CD-ROM Drive No
cdda CD Digital Audio No
cdrom CD-ROM Drive No
devfs Hardware Device Volume No
encfs EncFS Volume Yes
ext2 Ext2 Linux Volume Yes
ext2fs Ext2 Linux Volume Yes
ext3 Ext3 Linux Volume Yes
fat MSDOS Volume Yes
ffs BSD Volume Yes
hfs MacOS Volume Yes
hfsplus MacOS Volume No
iso9660 CDROM Volume No
hsfs Hsfs CDROM Volume No
jfs JFS Volume Yes
hpfs Windows NT Volume No
kernfs System Volume No
lfs BSD Volume Yes
linprocfs System Volume No
mfs Memory Volume Yes
minix Minix Volume No
msdos MSDOS Volume No
msdosfs MSDOS Volume No
nfs NFS Network Volume Yes
ntfs Windows NT Volume No
nwfs Netware Volume No
proc System Volume No
procfs System Volume No
ptyfs System Volume No
reiser4 Reiser4 Linux Volume Yes
reiserfs ReiserFS Linux Volume Yes
smbfs Windows Shared Volume Yes
supermount SuperMount Volume No
udf DVD Volume No
ufs Solaris/BSD Volume Yes
udfs Udfs Solaris Volume Yes
pcfs Pcfs Solaris Volume Yes
samfs Sun SAM-QFS Volume Yes
tmpfs Temporary Volume Yes
umsdos Enhanced DOS Volume No
vfat Windows VFAT Volume Yes
xenix Xenix Volume No
xfs XFS Linux Volume Yes
xiafs XIAFS Volume No
cifs CIFS Volume Yes


volume : a GnomeVFSVolume.
Returns : a newly allocated string for filesystem type of volume.

Since 2.6


gnome_vfs_volume_get_hal_udi ()

char*       gnome_vfs_volume_get_hal_udi    (GnomeVFSVolume *volume);

Returns the HAL UDI of a GnomeVFSVolume.

For HAL volumes, this matches the value of the "info.udi" key, for other volumes it is NULL.

volume : a GnomeVFSVolume.
Returns : a newly allocated string for unique device id of volume, or NULL.

Since 2.6


gnome_vfs_volume_get_icon ()

char*       gnome_vfs_volume_get_icon       (GnomeVFSVolume *volume);

volume : a GnomeVFSVolume.
Returns : a newly allocated string for the icon filename of volume.

Since 2.6


gnome_vfs_volume_get_id ()

gulong      gnome_vfs_volume_get_id         (GnomeVFSVolume *volume);

Returns the ID of the volume,

Two GnomeVFSVolumes are guaranteed to refer to the same volume if they have the same ID.

volume : a GnomeVFSVolume.
Returns : the id for the volume.

Since 2.6


gnome_vfs_volume_get_type ()

GType       gnome_vfs_volume_get_type       (void);

Returns :

gnome_vfs_volume_get_volume_type ()

GnomeVFSVolumeType gnome_vfs_volume_get_volume_type
                                            (GnomeVFSVolume *volume);

Returns the GnomeVFSVolumeType of the volume.

volume : a GnomeVFSVolume.
Returns : the volume type for volume.

Since 2.6


gnome_vfs_volume_handles_trash ()

gboolean    gnome_vfs_volume_handles_trash  (GnomeVFSVolume *volume);

Returns whether the file system on a volume supports trashing of files.

If the volume has an AutoFS file system (i.e. gnome_vfs_volume_get_device_type() returns GNOME_VFS_DEVICE_TYPE_AUTOFS), or if the volume is mounted read-only (gnome_vfs_volume_is_read_only() returns TRUE), it is assumed to not support trashing of files.

Otherwise, if the volume provides file system information, it is determined whether the file system supports trashing of files. See gnome_vfs_volume_get_filesystem_type() for details which volumes provide file system information, and which file systems currently support a trash.

volume : a GnomeVFSVolume.
Returns : TRUE if volume handles trash, FALSE otherwise.

Since 2.6


gnome_vfs_volume_is_mounted ()

gboolean    gnome_vfs_volume_is_mounted     (GnomeVFSVolume *volume);

Returns whether the file system on a volume is currently mounted.

For HAL volumes, this reflects the value of the "volume.is_mounted" key, for traditional UNIX mounts and connected servers, TRUE is returned, because their existence implies that they are mounted.

volume : a GnomeVFSVolume.
Returns : TRUE if the volume is mounted, FALSE otherwise.

Since 2.6


gnome_vfs_volume_is_read_only ()

gboolean    gnome_vfs_volume_is_read_only   (GnomeVFSVolume *volume);

Returns whether the file system on a volume is read-only.

For HAL volumes, the "volume.is_mounted_read_only" key is authoritative, for traditional UNIX mounts it returns TRUE if the mount was done with the "ro" option. For servers, FALSE is returned.

volume : a GnomeVFSVolume.
Returns : TRUE if the volume is read-only to the user, FALSE otherwise.

Since 2.6


gnome_vfs_volume_is_user_visible ()

gboolean    gnome_vfs_volume_is_user_visible
                                            (GnomeVFSVolume *volume);

Returns whether the volume is visible to the user. This should be used by applications to determine whether it is included in user interfaces listing available volumes.

volume : a GnomeVFSVolume.
Returns : TRUE if volume is visible to the user, FALSE otherwise.

Since 2.6


gnome_vfs_volume_ref ()

GnomeVFSVolume* gnome_vfs_volume_ref        (GnomeVFSVolume *volume);

Increases the refcount of the volume by 1, if it is not NULL.

volume : a GnomeVFSVolume, or NULL.
Returns : the volume with its refcount increased by one, or NULL if volume is NULL.

Since 2.6


gnome_vfs_volume_type_get_type ()

GType       gnome_vfs_volume_type_get_type  (void);

Returns :

gnome_vfs_volume_unmount ()

void        gnome_vfs_volume_unmount        (GnomeVFSVolume *volume,
                                             GnomeVFSVolumeOpCallback callback,
                                             gpointer user_data);

Note that gnome_vfs_volume_unmount() may also invoke gnome_vfs_volume_eject(), if the volume signals that it should be ejected when it is unmounted. This may be true for CD-ROMs, USB sticks and other devices, depending on the backend providing the volume.

volume : the GnomeVFSVolume that should be unmounted.
callback : the GnomeVFSVolumeOpCallback that should be invoked after unmounting volume.
user_data : the user data to pass to callback.

Since 2.6


gnome_vfs_volume_unref ()

void        gnome_vfs_volume_unref          (GnomeVFSVolume *volume);

Decreases the refcount of the volume by 1, if it is not NULL.

volume : a GnomeVFSVolume, or NULL.

Since 2.6


gnome_vfs_connect_to_server ()

void        gnome_vfs_connect_to_server     (const char *uri,
                                             const char *display_name,
                                             const char *icon);

This function adds a server connection to the specified uri, which is displayed in user interfaces with the specified display_name and icon.

If this function is invoked successfully, the created server shows up in the list of mounted volumes of the GnomeVFSVolumeMonitor, which can be queried using gnome_vfs_volume_monitor_get_mounted_volumes().

Note

This function does not have a return value. Hence, you can't easily detect whether the specified server was successfully created. The actual creation and consumption of the new server through the GnomeVFSVolumeMonitor is done asynchronously.

uri, display_name, and icon can be freely chosen, but should be meaningful:

uri should refer to a valid location. You can check the validity of the location by calling gnome_vfs_uri_new() with uri, and checking whether the return value is not NULL.

The display_name should be queried from the user, and an empty string should not be considered valid.

icon typically references an icon from the icon theme. Some implementations currently use gnome-fs-smb, gnome-fs-ssh, gnome-fs-ftp and gnome-fs-share, depending on the type of the server referenced by uri. The icon naming conventions might change in the future, though. Obeying the freedesktop.org Icon Naming Specification is suggested.

uri : The string representation of the server to connect to.
display_name : The display name that is used to identify the server connection.
icon : The icon that is used to identify the server connection.

Since 2.6