summaryrefslogtreecommitdiffstats
path: root/libmsi/libmsi-summary-info.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-15 17:08:39 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:06 +0100
commitf1f6327ce6d9d693e22b222eaeee50fe137ec596 (patch)
tree42398a4c25e7ceae05f58d66c3d5fc8f8ae359a8 /libmsi/libmsi-summary-info.c
parentab8e8a0cd0f9b5611f07c71a94ec17ffd9bd4e84 (diff)
downloadmsitools-f1f6327ce6d9d693e22b222eaeee50fe137ec596.tar.gz
msitools-f1f6327ce6d9d693e22b222eaeee50fe137ec596.tar.xz
msitools-f1f6327ce6d9d693e22b222eaeee50fe137ec596.zip
Add libmsi_summary_info_get_property_type()
Diffstat (limited to 'libmsi/libmsi-summary-info.c')
-rw-r--r--libmsi/libmsi-summary-info.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/libmsi/libmsi-summary-info.c b/libmsi/libmsi-summary-info.c
index cc257ea..eba98d3 100644
--- a/libmsi/libmsi-summary-info.c
+++ b/libmsi/libmsi-summary-info.c
@@ -595,6 +595,37 @@ LibmsiResult libmsi_summary_info_get_property_count (LibmsiSummaryInfo *si, unsi
return LIBMSI_RESULT_SUCCESS;
}
+LibmsiPropertyType
+libmsi_summary_info_get_property_type (LibmsiSummaryInfo *self,
+ LibmsiProperty prop,
+ GError **error)
+{
+ g_return_val_if_fail (LIBMSI_SUMMARY_INFO (self), FALSE);
+ g_return_val_if_fail (!error || *error == NULL, FALSE);
+
+ if (prop >= MSI_MAX_PROPS) {
+ g_set_error (error, LIBMSI_RESULT_ERROR, LIBMSI_RESULT_UNKNOWN_PROPERTY,
+ "Unknown property");
+ return LIBMSI_PROPERTY_TYPE_EMPTY;
+ }
+
+ switch (self->property[prop].vt) {
+ case OLEVT_I2:
+ case OLEVT_I4:
+ return LIBMSI_PROPERTY_TYPE_INT;
+ case OLEVT_LPSTR:
+ return LIBMSI_PROPERTY_TYPE_STRING;
+ case OLEVT_FILETIME:
+ return LIBMSI_PROPERTY_TYPE_FILETIME;
+ case OLEVT_EMPTY:
+ return LIBMSI_PROPERTY_TYPE_EMPTY;
+ default:
+ g_set_error (error, LIBMSI_RESULT_ERROR, LIBMSI_RESULT_FUNCTION_FAILED,
+ "Unknown type");
+ return LIBMSI_PROPERTY_TYPE_EMPTY;
+ }
+}
+
static void _summary_info_get_property (LibmsiSummaryInfo *si, unsigned uiProperty,
unsigned *puiDataType, int *pintvalue,
guint64 *pftValue, char *szValueBuf,