--- osinfo/libosinfo.syms | 5 +++++ osinfo/osinfo_media.c | 43 +++++++++++++++++++++++++++++++++++++++++++ osinfo/osinfo_media.h | 2 ++ 3 files changed, 50 insertions(+) diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms index 5c423b9..2dba411 100644 --- a/osinfo/libosinfo.syms +++ b/osinfo/libosinfo.syms @@ -505,6 +505,11 @@ LIBOSINFO_0.2.11 { osinfo_install_script_get_needs_internet; } LIBOSINFO_0.2.10; +LIBOSINFO_0.2.12 { + global: + osinfo_media_get_volume_size; +} LIBOSINFO_0.2.11; + /* Symbols in next release... LIBOSINFO_0.0.2 { diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c index 96f9603..e86df11 100644 --- a/osinfo/osinfo_media.c +++ b/osinfo/osinfo_media.c @@ -156,6 +156,7 @@ enum { PROP_INSTALLER_REBOOTS, PROP_OS, PROP_LANGUAGES, + PROP_VOLUME_SIZE }; static void @@ -230,6 +231,11 @@ osinfo_media_get_property(GObject *object, g_value_set_pointer(value, osinfo_media_get_languages(media)); break; + case PROP_VOLUME_SIZE: + g_value_set_int64(value, + osinfo_media_get_volume_size(media)); + break; + default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); @@ -320,6 +326,12 @@ osinfo_media_set_property(GObject *object, osinfo_media_set_languages(media, g_value_get_pointer(value)); break; + case PROP_VOLUME_SIZE: + osinfo_entity_set_param_int64(OSINFO_ENTITY(media), + OSINFO_MEDIA_PROP_VOLUME_SIZE, + g_value_get_int64(value)); + break; + default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); @@ -547,6 +559,21 @@ osinfo_media_class_init(OsinfoMediaClass *klass) G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property(g_klass, PROP_LANGUAGES, pspec); + + /** + * OsinfoMedia:volume-size: + * + * Expected volume size, in bytes for ISO9660 image/device. + */ + pspec = g_param_spec_int64("volume-size", + "VolumeSize", + _("Expected ISO9660 volume size, in bytes"), + G_MININT, + G_MAXINT64, + 1 /* default value */, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property(g_klass, PROP_VOLUME_SIZE, pspec); } static void @@ -1217,6 +1244,22 @@ void osinfo_media_set_languages(OsinfoMedia *media, GList *languages) OSINFO_MEDIA_PROP_LANG, it->data); } + +/** + * osinfo_media_get_volume_size: + * @media: an #OsinfoMedia instance + * + * Returns: (transfer none): the ISO9660 volume size, in bytes or -1 if size is + * unknown or media is not a ISO9660 device/image. + */ +gint64 osinfo_media_get_volume_size(OsinfoMedia *media) +{ + g_return_val_if_fail(OSINFO_IS_MEDIA(media), -1); + + return osinfo_entity_get_param_value_int64_with_default + (OSINFO_ENTITY(media), OSINFO_MEDIA_PROP_VOLUME_SIZE, -1); +} + /* * Local variables: * indent-tabs-mode: nil diff --git a/osinfo/osinfo_media.h b/osinfo/osinfo_media.h index 8cf3e05..8ad39c4 100644 --- a/osinfo/osinfo_media.h +++ b/osinfo/osinfo_media.h @@ -86,6 +86,7 @@ typedef struct _OsinfoMediaPrivate OsinfoMediaPrivate; #define OSINFO_MEDIA_PROP_LANG_REGEX "l10n-language-regex" #define OSINFO_MEDIA_PROP_LANG_MAP "l10n-language-map" #define OSINFO_MEDIA_PROP_VARIANT "variant" +#define OSINFO_MEDIA_PROP_VOLUME_SIZE "volume-size" /* object */ struct _OsinfoMedia @@ -135,6 +136,7 @@ GList *osinfo_media_get_languages(OsinfoMedia *media); gboolean osinfo_media_get_installer(OsinfoMedia *media); gboolean osinfo_media_get_live(OsinfoMedia *media); gint osinfo_media_get_installer_reboots(OsinfoMedia *media); +gint64 osinfo_media_get_volume_size(OsinfoMedia *media); #endif /* __OSINFO_MEDIA_H__ */ /* -- 2.1.0 _______________________________________________ Libosinfo mailing list Libosinfo@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libosinfo