diff options
author | David Zeuthen <davidz@redhat.com> | 2011-10-10 16:25:01 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2011-10-10 16:25:01 -0400 |
commit | 79e941f44b699fcd9a600935325fe51134eae9aa (patch) | |
tree | 7e1875feb7e58773621041b81c647ff24f840527 /src/udiskslinuxdrive.c | |
parent | 738908898cb789340db51366603edbd8ed5bd285 (diff) |
Support PC-style floppy drives
This is achieved by introducing properties
MediaAvailable
MediaChangeDetected
on the Drive interface.
Signed-off-by: David Zeuthen <davidz@redhat.com>
Diffstat (limited to 'src/udiskslinuxdrive.c')
-rw-r--r-- | src/udiskslinuxdrive.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/udiskslinuxdrive.c b/src/udiskslinuxdrive.c index 8ca3080..0a77ae3 100644 --- a/src/udiskslinuxdrive.c +++ b/src/udiskslinuxdrive.c @@ -214,7 +214,7 @@ set_media (UDisksDrive *iface, g_ptr_array_add (media_compat_array, NULL); media_in_drive = ""; - if (udisks_drive_get_size (iface) > 0) + if (udisks_drive_get_media_available (iface)) { for (n = 0; media_mapping[n].udev_property != NULL; n++) { @@ -320,6 +320,9 @@ udisks_linux_drive_update (UDisksLinuxDrive *drive, UDisksDrive *iface = UDISKS_DRIVE (drive); GUdevDevice *device; gchar *sort_key; + guint64 size; + gboolean media_available; + gboolean media_change_detected; device = udisks_linux_drive_object_get_device (object, TRUE /* get_hw */); if (device == NULL) @@ -415,6 +418,11 @@ udisks_linux_drive_update (UDisksLinuxDrive *drive, { udisks_drive_set_vendor (iface, vendor); } + /* workaround for missing ID_VENDOR for floppy drives */ + else if (g_str_has_prefix (name, "fd")) + { + udisks_drive_set_vendor (iface, ""); + } /* workaround for missing ID_VENDOR on virtio-blk */ else if (g_str_has_prefix (name, "vd")) { @@ -439,6 +447,11 @@ udisks_linux_drive_update (UDisksLinuxDrive *drive, { udisks_drive_set_model (iface, model); } + /* workaround for missing ID_MODEL for floppy drives */ + else if (g_str_has_prefix (name, "fd")) + { + udisks_drive_set_model (iface, "Floppy Drive"); + } /* workaround for missing ID_MODEL on virtio-blk */ else if (g_str_has_prefix (name, "vd")) { @@ -459,7 +472,12 @@ udisks_linux_drive_update (UDisksLinuxDrive *drive, /* common bits go here */ udisks_drive_set_media_removable (iface, g_udev_device_get_sysfs_attr_as_boolean (device, "removable")); - udisks_drive_set_size (iface, udisks_daemon_util_block_get_size (device)); + size = udisks_daemon_util_block_get_size (device, + &media_available, + &media_change_detected); + udisks_drive_set_size (iface, size); + udisks_drive_set_media_available (iface, media_available); + udisks_drive_set_media_change_detected (iface, media_change_detected); set_media (iface, device); set_rotation_rate (iface, device); set_connection_bus (iface, device); |