diff options
Diffstat (limited to 'libmsi')
| -rw-r--r-- | libmsi/libmsi-query.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/libmsi/libmsi-query.c b/libmsi/libmsi-query.c index 17b80d2..848fbfa 100644 --- a/libmsi/libmsi-query.c +++ b/libmsi/libmsi-query.c @@ -532,7 +532,7 @@ static void msi_set_record_type_string( LibmsiRecord *rec, unsigned field, libmsi_record_set_string( rec, field, szType ); } -unsigned _libmsi_query_get_column_info( LibmsiQuery *query, LibmsiColInfo info, LibmsiRecord **prec ) +LibmsiResult _libmsi_query_get_column_info( LibmsiQuery *query, LibmsiColInfo info, LibmsiRecord **prec ) { unsigned r = LIBMSI_RESULT_FUNCTION_FAILED, i, count = 0, type; LibmsiRecord *rec; @@ -571,26 +571,28 @@ unsigned _libmsi_query_get_column_info( LibmsiQuery *query, LibmsiColInfo info, return LIBMSI_RESULT_SUCCESS; } -LibmsiResult libmsi_query_get_column_info(LibmsiQuery *query, LibmsiColInfo info, LibmsiRecord **prec) +LibmsiRecord * +libmsi_query_get_column_info (LibmsiQuery *query, LibmsiColInfo info, GError **error) { + LibmsiRecord *rec; unsigned r; - TRACE("%d %d %p\n", query, info, prec); - - if( !prec ) - return LIBMSI_RESULT_INVALID_PARAMETER; + TRACE("%p %d\n", query, info); - if( info != LIBMSI_COL_INFO_NAMES && info != LIBMSI_COL_INFO_TYPES ) - return LIBMSI_RESULT_INVALID_PARAMETER; + if (info != LIBMSI_COL_INFO_NAMES && info != LIBMSI_COL_INFO_TYPES) + return NULL; - if( !query ) - return LIBMSI_RESULT_INVALID_HANDLE; + if (!query) + return NULL; g_object_ref(query); - r = _libmsi_query_get_column_info( query, info, prec ); + r = _libmsi_query_get_column_info( query, info, &rec); g_object_unref(query); - return r; + if (r != LIBMSI_RESULT_SUCCESS) + g_set_error_literal (error, LIBMSI_RESULT_ERROR, r, G_STRFUNC); + + return rec; } void |
