00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef LIBHAL_STORAGE_H
00029 #define LIBHAL_STORAGE_H
00030
00031 #include <libhal.h>
00032
00033 #if defined(__cplusplus)
00034 extern "C" {
00035 #endif
00036
00043 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00044 struct LibHalDrive_s;
00045 typedef struct LibHalDrive_s LibHalDrive;
00046 struct LibHalVolume_s;
00047 typedef struct LibHalVolume_s LibHalVolume;
00048 struct LibHalStoragePolicy_s;
00049 typedef struct LibHalStoragePolicy_s LibHalStoragePolicy;
00050 #endif
00051
00052
00053 typedef enum {
00054 LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK = 0x10000,
00055 LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE = 0x10001,
00056 LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI = 0x10002,
00057 LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB = 0x10003,
00058 LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394 = 0x10004,
00059 LIBHAL_STORAGE_ICON_DRIVE_DISK = 0x10100,
00060 LIBHAL_STORAGE_ICON_DRIVE_DISK_IDE = 0x10101,
00061 LIBHAL_STORAGE_ICON_DRIVE_DISK_SCSI = 0x10102,
00062 LIBHAL_STORAGE_ICON_DRIVE_DISK_USB = 0x10103,
00063 LIBHAL_STORAGE_ICON_DRIVE_DISK_IEEE1394 = 0x10104,
00064 LIBHAL_STORAGE_ICON_DRIVE_CDROM = 0x10200,
00065 LIBHAL_STORAGE_ICON_DRIVE_CDROM_IDE = 0x10201,
00066 LIBHAL_STORAGE_ICON_DRIVE_CDROM_SCSI = 0x10202,
00067 LIBHAL_STORAGE_ICON_DRIVE_CDROM_USB = 0x10203,
00068 LIBHAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394 = 0x10204,
00069 LIBHAL_STORAGE_ICON_DRIVE_FLOPPY = 0x10300,
00070 LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IDE = 0x10301,
00071 LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI = 0x10302,
00072 LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_USB = 0x10303,
00073 LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394 = 0x10304,
00074 LIBHAL_STORAGE_ICON_DRIVE_TAPE = 0x10400,
00075 LIBHAL_STORAGE_ICON_DRIVE_COMPACT_FLASH = 0x10500,
00076 LIBHAL_STORAGE_ICON_DRIVE_MEMORY_STICK = 0x10600,
00077 LIBHAL_STORAGE_ICON_DRIVE_SMART_MEDIA = 0x10700,
00078 LIBHAL_STORAGE_ICON_DRIVE_SD_MMC = 0x10800,
00079 LIBHAL_STORAGE_ICON_DRIVE_CAMERA = 0x10900,
00080 LIBHAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER = 0x10a00,
00081 LIBHAL_STORAGE_ICON_DRIVE_ZIP = 0x10b00,
00082 LIBHAL_STORAGE_ICON_DRIVE_JAZ = 0x10c00,
00083 LIBHAL_STORAGE_ICON_DRIVE_FLASH_KEY = 0x10d00,
00084
00085 LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK = 0x20000,
00086 LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE = 0x20001,
00087 LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI = 0x20002,
00088 LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB = 0x20003,
00089 LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394 = 0x20004,
00090 LIBHAL_STORAGE_ICON_VOLUME_DISK = 0x20100,
00091 LIBHAL_STORAGE_ICON_VOLUME_DISK_IDE = 0x20101,
00092 LIBHAL_STORAGE_ICON_VOLUME_DISK_SCSI = 0x20102,
00093 LIBHAL_STORAGE_ICON_VOLUME_DISK_USB = 0x20103,
00094 LIBHAL_STORAGE_ICON_VOLUME_DISK_IEEE1394 = 0x20104,
00095 LIBHAL_STORAGE_ICON_VOLUME_CDROM = 0x20200,
00096 LIBHAL_STORAGE_ICON_VOLUME_CDROM_IDE = 0x20201,
00097 LIBHAL_STORAGE_ICON_VOLUME_CDROM_SCSI = 0x20202,
00098 LIBHAL_STORAGE_ICON_VOLUME_CDROM_USB = 0x20203,
00099 LIBHAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394 = 0x20204,
00100 LIBHAL_STORAGE_ICON_VOLUME_FLOPPY = 0x20300,
00101 LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IDE = 0x20301,
00102 LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI = 0x20302,
00103 LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_USB = 0x20303,
00104 LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394 = 0x20304,
00105 LIBHAL_STORAGE_ICON_VOLUME_TAPE = 0x20400,
00106 LIBHAL_STORAGE_ICON_VOLUME_COMPACT_FLASH = 0x20500,
00107 LIBHAL_STORAGE_ICON_VOLUME_MEMORY_STICK = 0x20600,
00108 LIBHAL_STORAGE_ICON_VOLUME_SMART_MEDIA = 0x20700,
00109 LIBHAL_STORAGE_ICON_VOLUME_SD_MMC = 0x20800,
00110 LIBHAL_STORAGE_ICON_VOLUME_CAMERA = 0x20900,
00111 LIBHAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER = 0x20a00,
00112 LIBHAL_STORAGE_ICON_VOLUME_ZIP = 0x20b00,
00113 LIBHAL_STORAGE_ICON_VOLUME_JAZ = 0x20c00,
00114 LIBHAL_STORAGE_ICON_VOLUME_FLASH_KEY = 0x20d00,
00115
00116 LIBHAL_STORAGE_ICON_DISC_CDROM = 0x30000,
00117 LIBHAL_STORAGE_ICON_DISC_CDR = 0x30001,
00118 LIBHAL_STORAGE_ICON_DISC_CDRW = 0x30002,
00119 LIBHAL_STORAGE_ICON_DISC_DVDROM = 0x30003,
00120 LIBHAL_STORAGE_ICON_DISC_DVDRAM = 0x30004,
00121 LIBHAL_STORAGE_ICON_DISC_DVDR = 0x30005,
00122 LIBHAL_STORAGE_ICON_DISC_DVDRW = 0x30006,
00123 LIBHAL_STORAGE_ICON_DISC_DVDPLUSR = 0x30007,
00124 LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW = 0x30008,
00125 LIBHAL_STORAGE_ICON_DISC_DVDPLUSRWDL = 0x30009,
00126 LIBHAL_STORAGE_ICON_DISC_BDROM = 0x3000a,
00127 LIBHAL_STORAGE_ICON_DISC_BDR = 0x3000b,
00128 LIBHAL_STORAGE_ICON_DISC_BDRE = 0x3000c,
00129 LIBHAL_STORAGE_ICON_DISC_HDDVDROM = 0x3000d,
00130 LIBHAL_STORAGE_ICON_DISC_HDDVDR = 0x3000e,
00131 LIBHAL_STORAGE_ICON_DISC_HDDVDRW = 0x3000f
00132 } LibHalStoragePolicyIcon;
00133
00134 typedef struct {
00135 LibHalStoragePolicyIcon icon;
00136 const char *icon_path;
00137 } LibHalStoragePolicyIconPair;
00138
00139 LibHalStoragePolicy *libhal_storage_policy_new (void);
00140 void libhal_storage_policy_free (LibHalStoragePolicy *policy);
00141
00142 void libhal_storage_policy_set_icon_path (LibHalStoragePolicy *policy,
00143 LibHalStoragePolicyIcon icon,
00144 const char *path);
00145
00146 void libhal_storage_policy_set_icon_mapping (LibHalStoragePolicy *policy,
00147 LibHalStoragePolicyIconPair *pairs);
00148 const char *libhal_storage_policy_lookup_icon (LibHalStoragePolicy *policy,
00149 LibHalStoragePolicyIcon icon);
00150
00151 typedef enum {
00152 LIBHAL_DRIVE_BUS_UNKNOWN = 0x00,
00153 LIBHAL_DRIVE_BUS_IDE = 0x01,
00154 LIBHAL_DRIVE_BUS_SCSI = 0x02,
00155 LIBHAL_DRIVE_BUS_USB = 0x03,
00156 LIBHAL_DRIVE_BUS_IEEE1394 = 0x04,
00157 LIBHAL_DRIVE_BUS_CCW = 0x05
00158 } LibHalDriveBus;
00159
00160 typedef enum {
00161 LIBHAL_DRIVE_TYPE_REMOVABLE_DISK = 0x00,
00162 LIBHAL_DRIVE_TYPE_DISK = 0x01,
00163 LIBHAL_DRIVE_TYPE_CDROM = 0x02,
00164 LIBHAL_DRIVE_TYPE_FLOPPY = 0x03,
00165 LIBHAL_DRIVE_TYPE_TAPE = 0x04,
00166 LIBHAL_DRIVE_TYPE_COMPACT_FLASH = 0x05,
00167 LIBHAL_DRIVE_TYPE_MEMORY_STICK = 0x06,
00168 LIBHAL_DRIVE_TYPE_SMART_MEDIA = 0x07,
00169 LIBHAL_DRIVE_TYPE_SD_MMC = 0x08,
00170 LIBHAL_DRIVE_TYPE_CAMERA = 0x09,
00171 LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a,
00172 LIBHAL_DRIVE_TYPE_ZIP = 0x0b,
00173 LIBHAL_DRIVE_TYPE_JAZ = 0x0c,
00174 LIBHAL_DRIVE_TYPE_FLASHKEY = 0x0d
00175 } LibHalDriveType;
00176
00177 typedef enum {
00178 LIBHAL_DRIVE_CDROM_CAPS_CDROM = 0x0001,
00179 LIBHAL_DRIVE_CDROM_CAPS_CDR = 0x0002,
00180 LIBHAL_DRIVE_CDROM_CAPS_CDRW = 0x0004,
00181 LIBHAL_DRIVE_CDROM_CAPS_DVDRAM = 0x0008,
00182 LIBHAL_DRIVE_CDROM_CAPS_DVDROM = 0x0010,
00183 LIBHAL_DRIVE_CDROM_CAPS_DVDR = 0x0020,
00184 LIBHAL_DRIVE_CDROM_CAPS_DVDRW = 0x0040,
00185 LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR = 0x0080,
00186 LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW = 0x0100,
00187 LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL = 0x0200,
00188 LIBHAL_DRIVE_CDROM_CAPS_BDROM = 0x0400,
00189 LIBHAL_DRIVE_CDROM_CAPS_BDR = 0x0800,
00190 LIBHAL_DRIVE_CDROM_CAPS_BDRE = 0x1000,
00191 LIBHAL_DRIVE_CDROM_CAPS_HDDVDROM = 0x2000,
00192 LIBHAL_DRIVE_CDROM_CAPS_HDDVDR = 0x4000,
00193 LIBHAL_DRIVE_CDROM_CAPS_HDDVDRW = 0x8000
00194 } LibHalDriveCdromCaps;
00195
00196 LibHalDrive *libhal_drive_from_udi (LibHalContext *hal_ctx,
00197 const char *udi);
00198 LibHalDrive *libhal_drive_from_device_file (LibHalContext *hal_ctx,
00199 const char *device_file);
00200 void libhal_drive_free (LibHalDrive *drive);
00201
00202 dbus_bool_t libhal_drive_is_hotpluggable (LibHalDrive *drive);
00203 dbus_bool_t libhal_drive_uses_removable_media (LibHalDrive *drive);
00204 dbus_bool_t libhal_drive_no_partitions_hint (LibHalDrive *drive);
00205 dbus_bool_t libhal_drive_requires_eject (LibHalDrive *drive);
00206 LibHalDriveType libhal_drive_get_type (LibHalDrive *drive);
00207 LibHalDriveBus libhal_drive_get_bus (LibHalDrive *drive);
00208 LibHalDriveCdromCaps libhal_drive_get_cdrom_caps (LibHalDrive *drive);
00209 unsigned int libhal_drive_get_device_major (LibHalDrive *drive);
00210 unsigned int libhal_drive_get_device_minor (LibHalDrive *drive);
00211 const char *libhal_drive_get_type_textual (LibHalDrive *drive);
00212 const char *libhal_drive_get_device_file (LibHalDrive *drive);
00213 const char *libhal_drive_get_udi (LibHalDrive *drive);
00214 const char *libhal_drive_get_serial (LibHalDrive *drive);
00215 const char *libhal_drive_get_firmware_version (LibHalDrive *drive);
00216 const char *libhal_drive_get_model (LibHalDrive *drive);
00217 const char *libhal_drive_get_vendor (LibHalDrive *drive);
00218 const char *libhal_drive_get_physical_device_udi (LibHalDrive *drive);
00219
00220 const char *libhal_drive_get_dedicated_icon_drive (LibHalDrive *drive);
00221 const char *libhal_drive_get_dedicated_icon_volume (LibHalDrive *drive);
00222
00223 char *libhal_drive_policy_compute_display_name (LibHalDrive *drive,
00224 LibHalVolume *volume,
00225 LibHalStoragePolicy *policy);
00226 char *libhal_drive_policy_compute_icon_name (LibHalDrive *drive,
00227 LibHalVolume *volume,
00228 LibHalStoragePolicy *policy);
00229
00230 dbus_bool_t libhal_drive_policy_is_mountable (LibHalDrive *drive,
00231 LibHalStoragePolicy *policy);
00232 const char *libhal_drive_policy_get_desired_mount_point (LibHalDrive *drive,
00233 LibHalStoragePolicy *policy);
00234 const char *libhal_drive_policy_get_mount_options (LibHalDrive *drive,
00235 LibHalStoragePolicy *policy);
00236 const char *libhal_drive_policy_get_mount_fs (LibHalDrive *drive,
00237 LibHalStoragePolicy *policy);
00238
00239 char **libhal_drive_find_all_volumes (LibHalContext *hal_ctx,
00240 LibHalDrive *drive,
00241 int *num_volumes);
00242
00243
00244 char *libhal_drive_policy_default_get_mount_root (LibHalContext *hal_ctx);
00245 dbus_bool_t libhal_drive_policy_default_use_managed_keyword (LibHalContext *hal_ctx);
00246 char *libhal_drive_policy_default_get_managed_keyword_primary (LibHalContext *hal_ctx);
00247 char *libhal_drive_policy_default_get_managed_keyword_secondary (LibHalContext *hal_ctx);
00248
00249
00250 typedef enum {
00251 LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM,
00252 LIBHAL_VOLUME_USAGE_PARTITION_TABLE,
00253 LIBHAL_VOLUME_USAGE_RAID_MEMBER,
00254 LIBHAL_VOLUME_USAGE_CRYPTO,
00255 LIBHAL_VOLUME_USAGE_UNKNOWN
00256 } LibHalVolumeUsage;
00257
00258 typedef enum {
00259 LIBHAL_VOLUME_DISC_TYPE_CDROM = 0x00,
00260 LIBHAL_VOLUME_DISC_TYPE_CDR = 0x01,
00261 LIBHAL_VOLUME_DISC_TYPE_CDRW = 0x02,
00262 LIBHAL_VOLUME_DISC_TYPE_DVDROM = 0x03,
00263 LIBHAL_VOLUME_DISC_TYPE_DVDRAM = 0x04,
00264 LIBHAL_VOLUME_DISC_TYPE_DVDR = 0x05,
00265 LIBHAL_VOLUME_DISC_TYPE_DVDRW = 0x06,
00266 LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR = 0x07,
00267 LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW = 0x08,
00268 LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR_DL = 0x09,
00269 LIBHAL_VOLUME_DISC_TYPE_BDROM = 0x0a,
00270 LIBHAL_VOLUME_DISC_TYPE_BDR = 0x0b,
00271 LIBHAL_VOLUME_DISC_TYPE_BDRE = 0x0c,
00272 LIBHAL_VOLUME_DISC_TYPE_HDDVDROM = 0x0d,
00273 LIBHAL_VOLUME_DISC_TYPE_HDDVDR = 0x0e,
00274 LIBHAL_VOLUME_DISC_TYPE_HDDVDRW = 0x0f
00275 } LibHalVolumeDiscType;
00276
00277 LibHalVolume *libhal_volume_from_udi (LibHalContext *hal_ctx,
00278 const char *udi);
00279 LibHalVolume *libhal_volume_from_device_file (LibHalContext *hal_ctx,
00280 const char *device_file);
00281 void libhal_volume_free (LibHalVolume *volume);
00282 dbus_uint64_t libhal_volume_get_size (LibHalVolume *volume);
00283
00284 const char *libhal_volume_get_udi (LibHalVolume *volume);
00285 const char *libhal_volume_get_device_file (LibHalVolume *volume);
00286 unsigned int libhal_volume_get_device_major (LibHalVolume *volume);
00287 unsigned int libhal_volume_get_device_minor (LibHalVolume *volume);
00288 const char *libhal_volume_get_fstype (LibHalVolume *volume);
00289 const char *libhal_volume_get_fsversion (LibHalVolume *volume);
00290 LibHalVolumeUsage libhal_volume_get_fsusage (LibHalVolume *volume);
00291 dbus_bool_t libhal_volume_is_mounted (LibHalVolume *volume);
00292 dbus_bool_t libhal_volume_is_partition (LibHalVolume *volume);
00293 dbus_bool_t libhal_volume_is_disc (LibHalVolume *volume);
00294 unsigned int libhal_volume_get_partition_number (LibHalVolume *volume);
00295 const char *libhal_volume_get_label (LibHalVolume *volume);
00296 const char *libhal_volume_get_mount_point (LibHalVolume *volume);
00297 const char *libhal_volume_get_uuid (LibHalVolume *volume);
00298 const char *libhal_volume_get_storage_device_udi (LibHalVolume *volume);
00299
00300 const char *libhal_volume_crypto_get_backing_volume_udi (LibHalVolume *volume);
00301 char *libhal_volume_crypto_get_clear_volume_udi (LibHalContext *hal_ctx, LibHalVolume *volume);
00302
00303
00304 dbus_bool_t libhal_volume_disc_has_audio (LibHalVolume *volume);
00305 dbus_bool_t libhal_volume_disc_has_data (LibHalVolume *volume);
00306 dbus_bool_t libhal_volume_disc_is_blank (LibHalVolume *volume);
00307 dbus_bool_t libhal_volume_disc_is_rewritable (LibHalVolume *volume);
00308 dbus_bool_t libhal_volume_disc_is_appendable (LibHalVolume *volume);
00309 LibHalVolumeDiscType libhal_volume_get_disc_type (LibHalVolume *volume);
00310
00311 int libhal_volume_get_msdos_part_table_type (LibHalVolume *volume);
00312
00313 dbus_bool_t libhal_volume_should_ignore (LibHalVolume *volume);
00314
00315 char *libhal_volume_policy_compute_size_as_string (LibHalVolume *volume);
00316
00317 char *libhal_volume_policy_compute_display_name (LibHalDrive *drive,
00318 LibHalVolume *volume,
00319 LibHalStoragePolicy *policy);
00320 char *libhal_volume_policy_compute_icon_name (LibHalDrive *drive,
00321 LibHalVolume *volume,
00322 LibHalStoragePolicy *policy);
00323
00324 dbus_bool_t libhal_volume_policy_should_be_visible (LibHalDrive *drive,
00325 LibHalVolume *volume,
00326 LibHalStoragePolicy *policy,
00327 const char *target_mount_point);
00328
00329 dbus_bool_t libhal_volume_policy_is_mountable (LibHalDrive *drive,
00330 LibHalVolume *volume,
00331 LibHalStoragePolicy *policy);
00332 const char *libhal_volume_policy_get_desired_mount_point (LibHalDrive *drive,
00333 LibHalVolume *volume,
00334 LibHalStoragePolicy *policy);
00335 const char *libhal_volume_policy_get_mount_options (LibHalDrive *drive,
00336 LibHalVolume *volume,
00337 LibHalStoragePolicy *policy);
00338 const char *libhal_volume_policy_get_mount_fs (LibHalDrive *drive,
00339 LibHalVolume *volume,
00340 LibHalStoragePolicy *policy);
00341
00344 #if defined(__cplusplus)
00345 }
00346 #endif
00347
00348 #endif