---
 install.cc | 53 +++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 37 insertions(+), 16 deletions(-)

diff --git a/install.cc b/install.cc
index 51ec4b5..cec31a9 100644
--- a/install.cc
+++ b/install.cc
@@ -93,7 +93,13 @@ class Installer
   private:
     bool extract_replace_on_reboot(archive *, const std::string&,
                                    const std::string&, std::string);
-
+    bool _installOne (packagemeta &pkgm,
+                      const std::string& prefixURL,
+                      const std::string& prefixPath,
+                      HWND owner,
+                      io_stream *pkgfile,
+                      archive *tarstream,
+                      io_stream *lst);
 };
 
 Installer::Installer() : errors(0)
@@ -529,13 +535,39 @@ Installer::installOne (packagemeta &pkgm, const 
packageversion &ver,
         }
     }
 
+  package_bytes = source.size;
+  Log (LOG_PLAIN) << "Extracting from " << source.Cached () << endLog;
+
+  bool error_in_this_package = _installOne(pkgm, prefixURL, prefixPath, owner,
+                                           pkgfile, tarstream, lst);
+
+  if (lst)
+    delete lst;
+  delete tarstream;
+
+  total_bytes_sofar += package_bytes;
+  progress (0);
+
+  int df = diskfull (get_root_dir ().c_str ());
+  Progress.SetBar3 (df);
+
+  if (ver.Type () == package_binary && !error_in_this_package)
+    pkgm.installed = ver;
+}
+
+bool
+Installer::_installOne (packagemeta &pkgm,
+                        const std::string& prefixURL,
+                        const std::string& prefixPath,
+                        HWND owner,
+                        io_stream *pkgfile,
+                        archive *tarstream,
+                        io_stream *lst)
+{
   bool error_in_this_package = false;
   bool ignoreInUseErrors = false;
   bool ignoreExtractErrors = unattended_mode;
 
-  package_bytes = source.size;
-  Log (LOG_PLAIN) << "Extracting from " << source.Cached () << endLog;
-
   std::string fn;
   while ((fn = tarstream->next_file_name ()).size ())
     {
@@ -725,18 +757,7 @@ Installer::installOne (packagemeta &pkgm, const 
packageversion &ver,
       num_installs++;
     }
 
-  if (lst)
-    delete lst;
-  delete tarstream;
-
-  total_bytes_sofar += package_bytes;
-  progress (0);
-
-  int df = diskfull (get_root_dir ().c_str ());
-  Progress.SetBar3 (df);
-
-  if (ver.Type () == package_binary && !error_in_this_package)
-    pkgm.installed = ver;
+  return error_in_this_package;
 }
 
 static void
-- 
2.32.0

Reply via email to