[Libosinfo] [PATCH 03/12] media: Extract volume size from ISO9660 device/image
Fabiano Fidêncio
fidencio at redhat.com
Mon Mar 16 08:45:58 UTC 2015
On Sun, 2015-03-15 at 16:04 +0000, Zeeshan Ali (Khattak) wrote:
> When creating a media object from an ISO9660 device/image, extract
> volume size too along with other other information.
> ---
> osinfo/osinfo_media.c | 19 ++++++++++++++++---
> 1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c
> index e86df11..d9f3e0b 100644
> --- a/osinfo/osinfo_media.c
> +++ b/osinfo/osinfo_media.c
> @@ -46,11 +46,15 @@ struct _PrimaryVolumeDescriptor {
> guint8 ignored[8];
> gchar system[MAX_SYSTEM]; /* System ID */
> gchar volume[MAX_VOLUME]; /* Volume ID */
> - guint8 ignored2[246];
> + guint8 ignored2[8];
> + gint32 volume_space_size[2];
> + guint8 ignored3[40];
> + gint16 logical_blk_size[2];
> + guint8 ignored4[186];
> gchar publisher[MAX_PUBLISHER]; /* Publisher ID */
> - guint8 ignored3[128];
> + guint8 ignored5[128];
> gchar application[MAX_APPLICATION]; /* Application ID */
> - guint8 ignored4[1346];
> + guint8 ignored6[1346];
> };
>
> /* the PrimaryVolumeDescriptor struct must exactly 2048 bytes long
> @@ -677,6 +681,8 @@ static void on_svd_read(GObject *source,
> GError *error = NULL;
> CreateFromLocationAsyncData *data;
> gssize ret;
> + guint8 index;
> + gint64 vol_size;
>
> data = (CreateFromLocationAsyncData *)user_data;
>
> @@ -745,6 +751,13 @@ static void on_svd_read(GObject *source,
> OSINFO_MEDIA_PROP_APPLICATION_ID,
> data->pvd.application);
>
> + index = (G_BYTE_ORDER == G_LITTLE_ENDIAN)? 0 : 1;
Please, add an extra space before the "?".
> + vol_size = ((gint64) data->pvd.volume_space_size[index]) *
> + data->pvd.logical_blk_size[index];
> + osinfo_entity_set_param_int64(OSINFO_ENTITY(media),
> + OSINFO_MEDIA_PROP_VOLUME_SIZE,
> + vol_size);
> +
> EXIT:
> if (error != NULL)
> g_simple_async_result_take_error(data->res, error);
Best Regards,
--
Fabiano Fidêncio
More information about the Libosinfo
mailing list