mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16:14 +01:00
Add g_drive_get_identifier and g_drive_enumerate_identifiers
2008-01-24 Alexander Larsson <alexl@redhat.com> * gdrive.[ch]: Add g_drive_get_identifier and g_drive_enumerate_identifiers * gvolume.[ch]: Add g_volume_get_identifier and g_volume_enumerate_identifiers * gio.symbols: Add symbols * gunixvolume.c: Implement identifiers for unix backend svn path=/trunk/; revision=6364
This commit is contained in:
parent
270df8d3c8
commit
753428dcf8
@ -1,3 +1,19 @@
|
||||
2008-01-24 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gdrive.[ch]:
|
||||
Add g_drive_get_identifier and
|
||||
g_drive_enumerate_identifiers
|
||||
|
||||
* gvolume.[ch]:
|
||||
Add g_volume_get_identifier and
|
||||
g_volume_enumerate_identifiers
|
||||
|
||||
* gio.symbols:
|
||||
Add symbols
|
||||
|
||||
* gunixvolume.c:
|
||||
Implement identifiers for unix backend
|
||||
|
||||
2008-01-24 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* gfile.[ch]:
|
||||
|
32
gio/gdrive.c
32
gio/gdrive.c
@ -474,5 +474,37 @@ g_drive_poll_for_media_finish (GDrive *drive,
|
||||
return (* iface->poll_for_media_finish) (drive, result, error);
|
||||
}
|
||||
|
||||
char *
|
||||
g_drive_get_identifier (GDrive *drive,
|
||||
const char *kind)
|
||||
{
|
||||
GDriveIface *iface;
|
||||
|
||||
g_return_val_if_fail (G_IS_DRIVE (drive), NULL);
|
||||
g_return_val_if_fail (kind != NULL, NULL);
|
||||
|
||||
iface = G_DRIVE_GET_IFACE (drive);
|
||||
|
||||
if (iface->get_identifier == NULL)
|
||||
return NULL;
|
||||
|
||||
return (* iface->get_identifier) (drive, kind);
|
||||
}
|
||||
|
||||
char **
|
||||
g_drive_enumerate_identifiers (GDrive *drive)
|
||||
{
|
||||
GDriveIface *iface;
|
||||
|
||||
g_return_val_if_fail (G_IS_DRIVE (drive), NULL);
|
||||
iface = G_DRIVE_GET_IFACE (drive);
|
||||
|
||||
if (iface->enumerate_identifiers == NULL)
|
||||
return NULL;
|
||||
|
||||
return (* iface->enumerate_identifiers) (drive);
|
||||
}
|
||||
|
||||
|
||||
#define __G_DRIVE_C__
|
||||
#include "gioaliasdef.c"
|
||||
|
@ -98,6 +98,10 @@ struct _GDriveIface
|
||||
gboolean (*poll_for_media_finish) (GDrive *drive,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
|
||||
char * (*get_identifier) (GDrive *drive,
|
||||
const char *kind);
|
||||
char ** (*enumerate_identifiers) (GDrive *drive);
|
||||
};
|
||||
|
||||
GType g_drive_get_type (void) G_GNUC_CONST;
|
||||
@ -126,6 +130,9 @@ void g_drive_poll_for_media (GDrive *drive,
|
||||
gboolean g_drive_poll_for_media_finish (GDrive *drive,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
char * g_drive_get_identifier (GDrive *drive,
|
||||
const char *kind);
|
||||
char ** g_drive_enumerate_identifiers (GDrive *drive);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -194,6 +194,8 @@ g_drive_eject
|
||||
g_drive_eject_finish
|
||||
g_drive_poll_for_media
|
||||
g_drive_poll_for_media_finish
|
||||
g_drive_get_identifier
|
||||
g_drive_enumerate_identifiers
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -702,6 +704,8 @@ g_volume_mount
|
||||
g_volume_mount_finish
|
||||
g_volume_eject
|
||||
g_volume_eject_finish
|
||||
g_volume_get_identifier
|
||||
g_volume_enumerate_identifiers
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -49,6 +49,9 @@ struct _GUnixVolume {
|
||||
char *mount_path;
|
||||
gboolean can_eject;
|
||||
|
||||
char *identifier;
|
||||
char *identifier_type;
|
||||
|
||||
char *name;
|
||||
GIcon *icon;
|
||||
};
|
||||
@ -77,6 +80,8 @@ g_unix_volume_finalize (GObject *object)
|
||||
g_free (volume->name);
|
||||
g_free (volume->mount_path);
|
||||
g_free (volume->device_path);
|
||||
g_free (volume->identifier);
|
||||
g_free (volume->identifier_type);
|
||||
|
||||
if (G_OBJECT_CLASS (g_unix_volume_parent_class)->finalize)
|
||||
(*G_OBJECT_CLASS (g_unix_volume_parent_class)->finalize) (object);
|
||||
@ -121,6 +126,29 @@ _g_unix_volume_new (GVolumeMonitor *volume_monitor,
|
||||
|
||||
volume->name = g_unix_mount_point_guess_name (mountpoint);
|
||||
volume->icon = g_unix_mount_point_guess_icon (mountpoint);
|
||||
|
||||
|
||||
if (strcmp (g_unix_mount_point_get_fs_type (mountpoint), "nfs") == 0)
|
||||
{
|
||||
volume->identifier_type = g_strdup (G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT);
|
||||
volume->identifier = g_strdup (volume->device_path);
|
||||
}
|
||||
else if (g_str_has_prefix (volume->device_path, "LABEL="))
|
||||
{
|
||||
volume->identifier_type = g_strdup (G_VOLUME_IDENTIFIER_KIND_LABEL);
|
||||
volume->identifier = g_strdup (volume->device_path + 6);
|
||||
}
|
||||
else if (g_str_has_prefix (volume->device_path, "UUID="))
|
||||
{
|
||||
volume->identifier_type = g_strdup (G_VOLUME_IDENTIFIER_KIND_UUID);
|
||||
volume->identifier = g_strdup (volume->device_path + 5);
|
||||
}
|
||||
else if (g_path_is_absolute (volume->device_path))
|
||||
{
|
||||
volume->identifier_type = g_strdup (G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
|
||||
volume->identifier = g_strdup (volume->device_path);
|
||||
}
|
||||
|
||||
return volume;
|
||||
}
|
||||
|
||||
@ -402,6 +430,39 @@ g_unix_volume_eject_finish (GVolume *volume,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static char *
|
||||
g_unix_volume_get_identifier (GVolume *volume,
|
||||
const char *kind)
|
||||
{
|
||||
GUnixVolume *unix_volume = G_UNIX_VOLUME (volume);
|
||||
|
||||
if (strcmp (kind, unix_volume->identifier_type) == 0)
|
||||
return g_strdup (unix_volume->identifier);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char **
|
||||
g_unix_volume_enumerate_identifiers (GVolume *volume)
|
||||
{
|
||||
GUnixVolume *unix_volume = G_UNIX_VOLUME (volume);
|
||||
char **res;
|
||||
|
||||
if (unix_volume->identifier_type)
|
||||
{
|
||||
res = g_new (char *, 2);
|
||||
res[0] = g_strdup (unix_volume->identifier_type);
|
||||
res[1] = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
res = g_new (char *, 1);
|
||||
res[0] = NULL;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
g_unix_volume_volume_iface_init (GVolumeIface *iface)
|
||||
{
|
||||
@ -416,4 +477,6 @@ g_unix_volume_volume_iface_init (GVolumeIface *iface)
|
||||
iface->mount_finish = g_unix_volume_mount_finish;
|
||||
iface->eject = g_unix_volume_eject;
|
||||
iface->eject_finish = g_unix_volume_eject_finish;
|
||||
iface->get_identifier = g_unix_volume_get_identifier;
|
||||
iface->enumerate_identifiers = g_unix_volume_enumerate_identifiers;
|
||||
}
|
||||
|
@ -420,5 +420,37 @@ g_volume_eject_finish (GVolume *volume,
|
||||
return (* iface->eject_finish) (volume, result, error);
|
||||
}
|
||||
|
||||
char *
|
||||
g_volume_get_identifier (GVolume *volume,
|
||||
const char *kind)
|
||||
{
|
||||
GVolumeIface *iface;
|
||||
|
||||
g_return_val_if_fail (G_IS_VOLUME (volume), NULL);
|
||||
g_return_val_if_fail (kind != NULL, NULL);
|
||||
|
||||
iface = G_VOLUME_GET_IFACE (volume);
|
||||
|
||||
if (iface->get_identifier == NULL)
|
||||
return NULL;
|
||||
|
||||
return (* iface->get_identifier) (volume, kind);
|
||||
}
|
||||
|
||||
char **
|
||||
g_volume_enumerate_identifiers (GVolume *volume)
|
||||
{
|
||||
GVolumeIface *iface;
|
||||
|
||||
g_return_val_if_fail (G_IS_VOLUME (volume), NULL);
|
||||
iface = G_VOLUME_GET_IFACE (volume);
|
||||
|
||||
if (iface->enumerate_identifiers == NULL)
|
||||
return NULL;
|
||||
|
||||
return (* iface->enumerate_identifiers) (volume);
|
||||
}
|
||||
|
||||
|
||||
#define __G_VOLUME_C__
|
||||
#include "gioaliasdef.c"
|
||||
|
@ -34,6 +34,13 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define G_VOLUME_IDENTIFIER_KIND_HAL_UDI "hal-udi"
|
||||
#define G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE "unix-device"
|
||||
#define G_VOLUME_IDENTIFIER_KIND_LABEL "label"
|
||||
#define G_VOLUME_IDENTIFIER_KIND_UUID "uuid"
|
||||
#define G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT "nfs-mount"
|
||||
|
||||
|
||||
#define G_TYPE_VOLUME (g_volume_get_type ())
|
||||
#define G_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_VOLUME, GVolume))
|
||||
#define G_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_VOLUME))
|
||||
@ -94,33 +101,41 @@ struct _GVolumeIface
|
||||
gboolean (*eject_finish) (GVolume *volume,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
|
||||
char * (*get_identifier) (GVolume *volume,
|
||||
const char *kind);
|
||||
char ** (*enumerate_identifiers) (GVolume *volume);
|
||||
};
|
||||
|
||||
GType g_volume_get_type (void) G_GNUC_CONST;
|
||||
|
||||
char * g_volume_get_name (GVolume *volume);
|
||||
GIcon * g_volume_get_icon (GVolume *volume);
|
||||
char * g_volume_get_uuid (GVolume *volume);
|
||||
GDrive * g_volume_get_drive (GVolume *volume);
|
||||
GMount * g_volume_get_mount (GVolume *volume);
|
||||
gboolean g_volume_can_mount (GVolume *volume);
|
||||
gboolean g_volume_can_eject (GVolume *volume);
|
||||
void g_volume_mount (GVolume *volume,
|
||||
GMountOperation *mount_operation,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean g_volume_mount_finish (GVolume *volume,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
void g_volume_eject (GVolume *volume,
|
||||
GMountUnmountFlags flags,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean g_volume_eject_finish (GVolume *volume,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
char * g_volume_get_name (GVolume *volume);
|
||||
GIcon * g_volume_get_icon (GVolume *volume);
|
||||
char * g_volume_get_uuid (GVolume *volume);
|
||||
GDrive * g_volume_get_drive (GVolume *volume);
|
||||
GMount * g_volume_get_mount (GVolume *volume);
|
||||
gboolean g_volume_can_mount (GVolume *volume);
|
||||
gboolean g_volume_can_eject (GVolume *volume);
|
||||
void g_volume_mount (GVolume *volume,
|
||||
GMountOperation *mount_operation,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean g_volume_mount_finish (GVolume *volume,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
void g_volume_eject (GVolume *volume,
|
||||
GMountUnmountFlags flags,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
gboolean g_volume_eject_finish (GVolume *volume,
|
||||
GAsyncResult *result,
|
||||
GError **error);
|
||||
char * g_volume_get_identifier (GVolume *volume,
|
||||
const char *kind);
|
||||
char ** g_volume_enumerate_identifiers (GVolume *volume);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user