GnomeVFS - Filesystem Abstraction library | ||||
---|---|---|---|---|
#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);
#define GNOME_IS_VFS_VOLUME(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNOME_VFS_TYPE_VOLUME))
o : |
#define GNOME_IS_VFS_VOLUME_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNOME_VFS_TYPE_VOLUME))
k : |
#define GNOME_VFS_VOLUME(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNOME_VFS_TYPE_VOLUME, GnomeVFSVolume))
o : |
#define GNOME_VFS_VOLUME_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GNOME_VFS_TYPE_VOLUME, GnomeVFSVolumeClass))
k : |
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
typedef enum { GNOME_VFS_VOLUME_TYPE_MOUNTPOINT, GNOME_VFS_VOLUME_TYPE_VFS_MOUNT, GNOME_VFS_VOLUME_TYPE_CONNECTED_SERVER } GnomeVFSVolumeType;
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
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
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
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
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
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
GnomeVFSDrive* gnome_vfs_volume_get_drive (GnomeVFSVolume *volume);
volume : |
a GnomeVFSVolume. |
Returns : | the drive for the volume .
|
Since 2.6
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
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
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
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
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
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
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
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
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
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
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
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
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()
.
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