object that the partition entry belongs to.
-->
<property name="Table" type="o" access="read"/>
+
+ <!-- IsContainer:
+ Set to %TRUE if the partition itself is a container for other
+ partitions.
+
+ For example, for <literal>dos</literal> partition tables,
+ this applies to socalled <emphasis>extended partition</emphasis> (partitions of type
+ <constant>0x05</constant>, <constant>0x0f</constant> or <constant>0x85</constant>)
+ containing socalled <emphasis>logical partitions</emphasis>.
+ -->
+ <property name="IsContainer" type="b" access="read"/>
+
+ <!-- IsContained:
+ Set to %TRUE of the partition is contained in another partition.
+ See the #org.freedesktop.UDisks2.Partition:IsContainer property for more information.
+ -->
+ <property name="IsContained" type="b" access="read"/>
</interface>
<!-- ********************************************************************** -->
udisks_partition_get_name
udisks_partition_get_uuid
udisks_partition_get_table
+udisks_partition_get_is_container
+udisks_partition_get_is_contained
udisks_partition_dup_type_
udisks_partition_dup_flags
udisks_partition_dup_name
udisks_partition_dup_uuid
udisks_partition_dup_table
-udisks_partition_set_flags
-udisks_partition_set_name
udisks_partition_set_number
+udisks_partition_set_type_
udisks_partition_set_offset
udisks_partition_set_size
-udisks_partition_set_table
-udisks_partition_set_type_
+udisks_partition_set_flags
+udisks_partition_set_name
udisks_partition_set_uuid
+udisks_partition_set_table
+udisks_partition_set_is_container
+udisks_partition_set_is_contained
UDisksPartitionProxy
UDisksPartitionProxyClass
udisks_partition_proxy_new
const gchar *uuid = NULL;
const gchar *flags = NULL;
const gchar *table_object_path = "/";
+ gboolean is_container = FALSE;
+ gboolean is_contained = FALSE;
device = udisks_linux_block_object_get_device (object);
if (g_udev_device_has_property (device, "ID_PART_ENTRY_TYPE"))
makedev (disk_major, disk_minor));
}
}
+
+ if (g_strcmp0 (g_udev_device_get_property (device, "ID_PART_ENTRY_SCHEME"), "dos") == 0)
+ {
+ if (number <= 4)
+ {
+ gint type_as_int = strtol (type, NULL, 0);
+ if (type_as_int == 0x05 || type_as_int == 0x0f || type_as_int == 0x85)
+ {
+ is_container = TRUE;
+ }
+ }
+ else if (number >= 5)
+ {
+ is_contained = TRUE;
+ }
+ }
}
else
{
udisks_partition_set_name (UDISKS_PARTITION (partition), name);
udisks_partition_set_uuid (UDISKS_PARTITION (partition), uuid);
udisks_partition_set_table (UDISKS_PARTITION (partition), table_object_path);
+ udisks_partition_set_is_container (UDISKS_PARTITION (partition), is_container);
+ udisks_partition_set_is_contained (UDISKS_PARTITION (partition), is_contained);
g_free (name);
g_clear_object (&device);