summaryrefslogtreecommitdiffstats
path: root/libmsi/libmsi-summary-info.c
diff options
context:
space:
mode:
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,