From f12b9cea99475fae63ab87c3f60dba379a1f450f Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Mon, 3 Nov 2008 22:16:30 -0600 Subject: [PATCH] msi: Factor out the table insertion code. --- dlls/msi/tests/format.c | 119 ++++++++++++---------------------------- 1 file changed, 34 insertions(+), 85 deletions(-) diff --git a/dlls/msi/tests/format.c b/dlls/msi/tests/format.c index 00d3856c820..c4be4294650 100644 --- a/dlls/msi/tests/format.c +++ b/dlls/msi/tests/format.c @@ -108,97 +108,46 @@ static UINT create_custom_action_table( MSIHANDLE hdb ) "PRIMARY KEY `Action`)" ); } -static UINT add_feature_entry( MSIHANDLE hdb, const char *values ) -{ - char insert[] = "INSERT INTO `Feature` (`Feature`, `Feature_Parent`, " - "`Title`, `Description`, `Display`, `Level`, `Directory_`, `Attributes`) VALUES( %s )"; - char *query; - UINT sz, r; +#define make_add_entry(type, qtext) \ + static UINT add##_##type##_##entry( MSIHANDLE hdb, const char *values ) \ + { \ + char insert[] = qtext; \ + char *query; \ + UINT sz, r; \ + sz = strlen(values) + sizeof insert; \ + query = HeapAlloc(GetProcessHeap(),0,sz); \ + sprintf(query,insert,values); \ + r = run_query( hdb, query ); \ + HeapFree(GetProcessHeap(), 0, query); \ + return r; \ + } - sz = strlen(values) + sizeof insert; - query = HeapAlloc(GetProcessHeap(),0,sz); - sprintf(query,insert,values); - r = run_query( hdb, query ); - HeapFree(GetProcessHeap(), 0, query); - return r; -} +make_add_entry(feature, + "INSERT INTO `Feature` " + "(`Feature`, `Feature_Parent`, `Title`, `Description`, " + "`Display`, `Level`, `Directory_`, `Attributes`) VALUES( %s )") -static UINT add_component_entry( MSIHANDLE hdb, const char *values ) -{ - char insert[] = "INSERT INTO `Component` " - "(`Component`, `ComponentId`, `Directory_`, `Attributes`, `Condition`, `KeyPath`) " - "VALUES( %s )"; - char *query; - UINT sz, r; +make_add_entry(component, + "INSERT INTO `Component` " + "(`Component`, `ComponentId`, `Directory_`, " + "`Attributes`, `Condition`, `KeyPath`) VALUES( %s )") - sz = strlen(values) + sizeof insert; - query = HeapAlloc(GetProcessHeap(),0,sz); - sprintf(query,insert,values); - r = run_query( hdb, query ); - HeapFree(GetProcessHeap(), 0, query); - return r; -} +make_add_entry(feature_components, + "INSERT INTO `FeatureComponents` " + "(`Feature_`, `Component_`) VALUES( %s )") -static UINT add_feature_components_entry( MSIHANDLE hdb, const char *values ) -{ - char insert[] = "INSERT INTO `FeatureComponents` " - "(`Feature_`, `Component_`) " - "VALUES( %s )"; - char *query; - UINT sz, r; +make_add_entry(file, + "INSERT INTO `File` " + "(`File`, `Component_`, `FileName`, `FileSize`, " + "`Version`, `Language`, `Attributes`, `Sequence`) VALUES( %s )") - sz = strlen(values) + sizeof insert; - query = HeapAlloc(GetProcessHeap(),0,sz); - sprintf(query,insert,values); - r = run_query( hdb, query ); - HeapFree(GetProcessHeap(), 0, query); - return r; -} +make_add_entry(directory, + "INSERT INTO `Directory` " + "(`Directory`,`Directory_Parent`,`DefaultDir`) VALUES( %s )") -static UINT add_file_entry( MSIHANDLE hdb, const char *values ) -{ - char insert[] = "INSERT INTO `File` " - "(`File`, `Component_`, `FileName`, `FileSize`, `Version`, `Language`, `Attributes`, `Sequence`) " - "VALUES( %s )"; - char *query; - UINT sz, r; - - sz = strlen(values) + sizeof insert; - query = HeapAlloc(GetProcessHeap(),0,sz); - sprintf(query,insert,values); - r = run_query( hdb, query ); - HeapFree(GetProcessHeap(), 0, query); - return r; -} - -static UINT add_directory_entry( MSIHANDLE hdb, const char *values ) -{ - char insert[] = "INSERT INTO `Directory` (`Directory`,`Directory_Parent`,`DefaultDir`) VALUES( %s )"; - char *query; - UINT sz, r; - - sz = strlen(values) + sizeof insert; - query = HeapAlloc(GetProcessHeap(),0,sz); - sprintf(query,insert,values); - r = run_query( hdb, query ); - HeapFree(GetProcessHeap(), 0, query); - return r; -} - -static UINT add_custom_action_entry( MSIHANDLE hdb, const char *values ) -{ - char insert[] = "INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, " - "`Target`) VALUES( %s )"; - char *query; - UINT sz, r; - - sz = strlen(values) + sizeof insert; - query = HeapAlloc(GetProcessHeap(),0,sz); - sprintf(query,insert,values); - r = run_query( hdb, query ); - HeapFree(GetProcessHeap(), 0, query); - return r; -} +make_add_entry(custom_action, + "INSERT INTO `CustomAction` " + "(`Action`, `Type`, `Source`, `Target`) VALUES( %s )") static UINT set_summary_info(MSIHANDLE hdb) {