[3/3] msi: Move some helpers to the module where they are used.

Hans Leidekker hans at codeweavers.com
Wed Feb 3 02:20:56 CST 2010


---
 dlls/msi/helpers.c |  232 ---------------------------------------------------
 dlls/msi/msipriv.h |    1 -
 dlls/msi/package.c |  233 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 232 insertions(+), 234 deletions(-)

diff --git a/dlls/msi/helpers.c b/dlls/msi/helpers.c
index 8356923..e3009f7 100644
--- a/dlls/msi/helpers.c
+++ b/dlls/msi/helpers.c
@@ -440,238 +440,6 @@ void msi_free_action_script(MSIPACKAGE *package, UINT script)
     package->script->ActionCount[script] = 0;
 }
 
-static void remove_tracked_tempfiles(MSIPACKAGE* package)
-{
-    struct list *item, *cursor;
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->tempfiles )
-    {
-        MSITEMPFILE *temp = LIST_ENTRY( item, MSITEMPFILE, entry );
-
-        list_remove( &temp->entry );
-        TRACE("deleting temp file %s\n", debugstr_w( temp->Path ));
-        if (!DeleteFileW( temp->Path ))
-            ERR("failed to delete %s\n", debugstr_w( temp->Path ));
-        msi_free( temp->Path );
-        msi_free( temp );
-    }
-}
-
-static void free_feature( MSIFEATURE *feature )
-{
-    struct list *item, *cursor;
-
-    LIST_FOR_EACH_SAFE( item, cursor, &feature->Children )
-    {
-        FeatureList *fl = LIST_ENTRY( item, FeatureList, entry );
-        list_remove( &fl->entry );
-        msi_free( fl );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &feature->Components )
-    {
-        ComponentList *cl = LIST_ENTRY( item, ComponentList, entry );
-        list_remove( &cl->entry );
-        msi_free( cl );
-    }
-    msi_free( feature->Feature );
-    msi_free( feature->Feature_Parent );
-    msi_free( feature->Directory );
-    msi_free( feature->Description );
-    msi_free( feature->Title );
-    msi_free( feature );
-}
-
-static void free_extension( MSIEXTENSION *ext )
-{
-    struct list *item, *cursor;
-
-    LIST_FOR_EACH_SAFE( item, cursor, &ext->verbs )
-    {
-        MSIVERB *verb = LIST_ENTRY( item, MSIVERB, entry );
-
-        list_remove( &verb->entry );
-        msi_free( verb->Verb );
-        msi_free( verb->Command );
-        msi_free( verb->Argument );
-        msi_free( verb );
-    }
-
-    msi_free( ext->Extension );
-    msi_free( ext->ProgIDText );
-    msi_free( ext );
-}
-
-/* Called when the package is being closed */
-void ACTION_free_package_structures( MSIPACKAGE* package)
-{
-    INT i;
-    struct list *item, *cursor;
-
-    TRACE("Freeing package action data\n");
-
-    remove_tracked_tempfiles(package);
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->features )
-    {
-        MSIFEATURE *feature = LIST_ENTRY( item, MSIFEATURE, entry );
-        list_remove( &feature->entry );
-        free_feature( feature );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->folders )
-    {
-        MSIFOLDER *folder = LIST_ENTRY( item, MSIFOLDER, entry );
-
-        list_remove( &folder->entry );
-        msi_free( folder->Parent );
-        msi_free( folder->Directory );
-        msi_free( folder->TargetDefault );
-        msi_free( folder->SourceLongPath );
-        msi_free( folder->SourceShortPath );
-        msi_free( folder->ResolvedTarget );
-        msi_free( folder->ResolvedSource );
-        msi_free( folder->Property );
-        msi_free( folder );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->components )
-    {
-        MSICOMPONENT *comp = LIST_ENTRY( item, MSICOMPONENT, entry );
-
-        list_remove( &comp->entry );
-        msi_free( comp->Component );
-        msi_free( comp->ComponentId );
-        msi_free( comp->Directory );
-        msi_free( comp->Condition );
-        msi_free( comp->KeyPath );
-        msi_free( comp->FullKeypath );
-        msi_free( comp );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->files )
-    {
-        MSIFILE *file = LIST_ENTRY( item, MSIFILE, entry );
-
-        list_remove( &file->entry );
-        msi_free( file->File );
-        msi_free( file->FileName );
-        msi_free( file->ShortName );
-        msi_free( file->LongName );
-        msi_free( file->Version );
-        msi_free( file->Language );
-        msi_free( file->TargetPath );
-        msi_free( file );
-    }
-
-    /* clean up extension, progid, class and verb structures */
-    LIST_FOR_EACH_SAFE( item, cursor, &package->classes )
-    {
-        MSICLASS *cls = LIST_ENTRY( item, MSICLASS, entry );
-
-        list_remove( &cls->entry );
-        msi_free( cls->clsid );
-        msi_free( cls->Context );
-        msi_free( cls->Description );
-        msi_free( cls->FileTypeMask );
-        msi_free( cls->IconPath );
-        msi_free( cls->DefInprocHandler );
-        msi_free( cls->DefInprocHandler32 );
-        msi_free( cls->Argument );
-        msi_free( cls->ProgIDText );
-        msi_free( cls );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->extensions )
-    {
-        MSIEXTENSION *ext = LIST_ENTRY( item, MSIEXTENSION, entry );
-
-        list_remove( &ext->entry );
-        free_extension( ext );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->progids )
-    {
-        MSIPROGID *progid = LIST_ENTRY( item, MSIPROGID, entry );
-
-        list_remove( &progid->entry );
-        msi_free( progid->ProgID );
-        msi_free( progid->Description );
-        msi_free( progid->IconPath );
-        msi_free( progid );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->mimes )
-    {
-        MSIMIME *mt = LIST_ENTRY( item, MSIMIME, entry );
-
-        list_remove( &mt->entry );
-        msi_free( mt->clsid );
-        msi_free( mt->ContentType );
-        msi_free( mt );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->appids )
-    {
-        MSIAPPID *appid = LIST_ENTRY( item, MSIAPPID, entry );
-
-        list_remove( &appid->entry );
-        msi_free( appid->AppID );
-        msi_free( appid->RemoteServerName );
-        msi_free( appid->LocalServer );
-        msi_free( appid->ServiceParameters );
-        msi_free( appid->DllSurrogate );
-        msi_free( appid );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->sourcelist_info )
-    {
-        MSISOURCELISTINFO *info = LIST_ENTRY( item, MSISOURCELISTINFO, entry );
-
-        list_remove( &info->entry );
-        msi_free( info->value );
-	msi_free( info );
-    }
-
-    LIST_FOR_EACH_SAFE( item, cursor, &package->sourcelist_media )
-    {
-        MSIMEDIADISK *info = LIST_ENTRY( item, MSIMEDIADISK, entry );
-
-        list_remove( &info->entry );
-        msi_free( info->volume_label );
-        msi_free( info->disk_prompt );
-	msi_free( info );
-    }
-
-    if (package->script)
-    {
-        for (i = 0; i < TOTAL_SCRIPTS; i++)
-            msi_free_action_script(package, i);
-
-        for (i = 0; i < package->script->UniqueActionsCount; i++)
-            msi_free(package->script->UniqueActions[i]);
-
-        msi_free(package->script->UniqueActions);
-        msi_free(package->script);
-    }
-
-    if (package->patch)
-    {
-        msi_free(package->patch->patchcode);
-        msi_free(package->patch->transforms);
-        msi_free(package->patch);
-    }
-
-    msi_free(package->BaseURL);
-    msi_free(package->PackagePath);
-    msi_free(package->ProductCode);
-    msi_free(package->ActionFormat);
-    msi_free(package->LastAction);
-
-    /* cleanup control event subscriptions */
-    ControlEvent_CleanupSubscriptions(package);
-}
-
 /*
  *  build_directory_name()
  *
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index ac247ac..43486e0 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -689,7 +689,6 @@ extern UINT msi_check_patch_applicable( MSIPACKAGE *package, MSISUMMARYINFO *si
 
 /* action internals */
 extern UINT MSI_InstallPackage( MSIPACKAGE *, LPCWSTR, LPCWSTR );
-extern void ACTION_free_package_structures( MSIPACKAGE* );
 extern UINT ACTION_DialogBox( MSIPACKAGE*, LPCWSTR);
 extern UINT ACTION_ForceReboot(MSIPACKAGE *package);
 extern UINT MSI_Sequence( MSIPACKAGE *package, LPCWSTR szTable, INT iSequenceMode );
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 120972f..53804e2 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -49,6 +49,237 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msi);
 
+static void remove_tracked_tempfiles( MSIPACKAGE *package )
+{
+    struct list *item, *cursor;
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->tempfiles )
+    {
+        MSITEMPFILE *temp = LIST_ENTRY( item, MSITEMPFILE, entry );
+
+        list_remove( &temp->entry );
+        TRACE("deleting temp file %s\n", debugstr_w( temp->Path ));
+        if (!DeleteFileW( temp->Path ))
+            ERR("failed to delete %s\n", debugstr_w( temp->Path ));
+        msi_free( temp->Path );
+        msi_free( temp );
+    }
+}
+
+static void free_feature( MSIFEATURE *feature )
+{
+    struct list *item, *cursor;
+
+    LIST_FOR_EACH_SAFE( item, cursor, &feature->Children )
+    {
+        FeatureList *fl = LIST_ENTRY( item, FeatureList, entry );
+        list_remove( &fl->entry );
+        msi_free( fl );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &feature->Components )
+    {
+        ComponentList *cl = LIST_ENTRY( item, ComponentList, entry );
+        list_remove( &cl->entry );
+        msi_free( cl );
+    }
+    msi_free( feature->Feature );
+    msi_free( feature->Feature_Parent );
+    msi_free( feature->Directory );
+    msi_free( feature->Description );
+    msi_free( feature->Title );
+    msi_free( feature );
+}
+
+static void free_extension( MSIEXTENSION *ext )
+{
+    struct list *item, *cursor;
+
+    LIST_FOR_EACH_SAFE( item, cursor, &ext->verbs )
+    {
+        MSIVERB *verb = LIST_ENTRY( item, MSIVERB, entry );
+
+        list_remove( &verb->entry );
+        msi_free( verb->Verb );
+        msi_free( verb->Command );
+        msi_free( verb->Argument );
+        msi_free( verb );
+    }
+
+    msi_free( ext->Extension );
+    msi_free( ext->ProgIDText );
+    msi_free( ext );
+}
+
+static void free_package_structures( MSIPACKAGE *package )
+{
+    INT i;
+    struct list *item, *cursor;
+
+    TRACE("Freeing package action data\n");
+
+    remove_tracked_tempfiles(package);
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->features )
+    {
+        MSIFEATURE *feature = LIST_ENTRY( item, MSIFEATURE, entry );
+        list_remove( &feature->entry );
+        free_feature( feature );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->folders )
+    {
+        MSIFOLDER *folder = LIST_ENTRY( item, MSIFOLDER, entry );
+
+        list_remove( &folder->entry );
+        msi_free( folder->Parent );
+        msi_free( folder->Directory );
+        msi_free( folder->TargetDefault );
+        msi_free( folder->SourceLongPath );
+        msi_free( folder->SourceShortPath );
+        msi_free( folder->ResolvedTarget );
+        msi_free( folder->ResolvedSource );
+        msi_free( folder->Property );
+        msi_free( folder );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->components )
+    {
+        MSICOMPONENT *comp = LIST_ENTRY( item, MSICOMPONENT, entry );
+
+        list_remove( &comp->entry );
+        msi_free( comp->Component );
+        msi_free( comp->ComponentId );
+        msi_free( comp->Directory );
+        msi_free( comp->Condition );
+        msi_free( comp->KeyPath );
+        msi_free( comp->FullKeypath );
+        msi_free( comp );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->files )
+    {
+        MSIFILE *file = LIST_ENTRY( item, MSIFILE, entry );
+
+        list_remove( &file->entry );
+        msi_free( file->File );
+        msi_free( file->FileName );
+        msi_free( file->ShortName );
+        msi_free( file->LongName );
+        msi_free( file->Version );
+        msi_free( file->Language );
+        msi_free( file->TargetPath );
+        msi_free( file );
+    }
+
+    /* clean up extension, progid, class and verb structures */
+    LIST_FOR_EACH_SAFE( item, cursor, &package->classes )
+    {
+        MSICLASS *cls = LIST_ENTRY( item, MSICLASS, entry );
+
+        list_remove( &cls->entry );
+        msi_free( cls->clsid );
+        msi_free( cls->Context );
+        msi_free( cls->Description );
+        msi_free( cls->FileTypeMask );
+        msi_free( cls->IconPath );
+        msi_free( cls->DefInprocHandler );
+        msi_free( cls->DefInprocHandler32 );
+        msi_free( cls->Argument );
+        msi_free( cls->ProgIDText );
+        msi_free( cls );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->extensions )
+    {
+        MSIEXTENSION *ext = LIST_ENTRY( item, MSIEXTENSION, entry );
+
+        list_remove( &ext->entry );
+        free_extension( ext );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->progids )
+    {
+        MSIPROGID *progid = LIST_ENTRY( item, MSIPROGID, entry );
+
+        list_remove( &progid->entry );
+        msi_free( progid->ProgID );
+        msi_free( progid->Description );
+        msi_free( progid->IconPath );
+        msi_free( progid );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->mimes )
+    {
+        MSIMIME *mt = LIST_ENTRY( item, MSIMIME, entry );
+
+        list_remove( &mt->entry );
+        msi_free( mt->clsid );
+        msi_free( mt->ContentType );
+        msi_free( mt );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->appids )
+    {
+        MSIAPPID *appid = LIST_ENTRY( item, MSIAPPID, entry );
+
+        list_remove( &appid->entry );
+        msi_free( appid->AppID );
+        msi_free( appid->RemoteServerName );
+        msi_free( appid->LocalServer );
+        msi_free( appid->ServiceParameters );
+        msi_free( appid->DllSurrogate );
+        msi_free( appid );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->sourcelist_info )
+    {
+        MSISOURCELISTINFO *info = LIST_ENTRY( item, MSISOURCELISTINFO, entry );
+
+        list_remove( &info->entry );
+        msi_free( info->value );
+        msi_free( info );
+    }
+
+    LIST_FOR_EACH_SAFE( item, cursor, &package->sourcelist_media )
+    {
+        MSIMEDIADISK *info = LIST_ENTRY( item, MSIMEDIADISK, entry );
+
+        list_remove( &info->entry );
+        msi_free( info->volume_label );
+        msi_free( info->disk_prompt );
+        msi_free( info );
+    }
+
+    if (package->script)
+    {
+        for (i = 0; i < TOTAL_SCRIPTS; i++)
+            msi_free_action_script( package, i );
+
+        for (i = 0; i < package->script->UniqueActionsCount; i++)
+            msi_free( package->script->UniqueActions[i] );
+
+        msi_free( package->script->UniqueActions );
+        msi_free( package->script );
+    }
+
+    if (package->patch)
+    {
+        msi_free( package->patch->patchcode );
+        msi_free( package->patch->transforms );
+        msi_free( package->patch );
+    }
+
+    msi_free( package->BaseURL );
+    msi_free( package->PackagePath );
+    msi_free( package->ProductCode );
+    msi_free( package->ActionFormat );
+    msi_free( package->LastAction );
+
+    /* cleanup control event subscriptions */
+    ControlEvent_CleanupSubscriptions( package );
+}
+
 static void MSI_FreePackage( MSIOBJECTHDR *arg)
 {
     MSIPACKAGE *package= (MSIPACKAGE*) arg;
@@ -57,7 +288,7 @@ static void MSI_FreePackage( MSIOBJECTHDR *arg)
         msi_dialog_destroy( package->dialog );
 
     msiobj_release( &package->db->hdr );
-    ACTION_free_package_structures(package);
+    free_package_structures(package);
 }
 
 static UINT create_temp_property_table(MSIPACKAGE *package)
-- 
1.6.3.3




More information about the wine-patches mailing list