Просмотр исходного кода

* apt-pkg/packagemanager.{cc,h}:
- move DoInstallPostFork() out of the header into the .cc file

Michael Vogt лет назад: 19
Родитель
Сommit
1d6386f350
2 измененных файлов с 22 добавлено и 15 удалено
  1. 21 1
      apt-pkg/packagemanager.cc
  2. 1 14
      apt-pkg/packagemanager.h

+ 21 - 1
apt-pkg/packagemanager.cc

@@ -25,7 +25,7 @@
     
 #include <apti18n.h>    
 #include <iostream>
-									/*}}}*/
+#include <fcntl.h> 
 
 using namespace std;
 
@@ -624,6 +624,26 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
    return Completed;
 }
 									/*}}}*/
+// PM::DoInstallPostFork - Does install part that happens after the fork /*{{{*/
+// ---------------------------------------------------------------------
+pkgPackageManager::OrderResult 
+pkgPackageManager::DoInstallPostFork(int statusFd)
+{
+      if(statusFd > 0)
+         // FIXME: use SetCloseExec here once it taught about throwing
+	 //        exceptions instead of doing _exit(100) on failure
+	 fcntl(statusFd,F_SETFD,FD_CLOEXEC); 
+      bool goResult = Go(statusFd);
+      if(goResult == false) 
+	 return Failed;
+
+      // if all was fine update the state file
+      if(Res == Completed) {
+	 Cache.writeStateFile(NULL);
+      }
+      return Res;
+};
+
 // PM::DoInstall - Does the installation				/*{{{*/
 // ---------------------------------------------------------------------
 /* This uses the filenames in FileNames and the information in the

+ 1 - 14
apt-pkg/packagemanager.h

@@ -90,20 +90,7 @@ class pkgPackageManager : protected pkgCache::Namespace
    };
 
    // stuff that needs to be done after the fork
-   OrderResult DoInstallPostFork(int statusFd=-1) {
-      if(statusFd > 0)
-	 SetCloseExec(statusFd, true);
-      bool goResult = Go(statusFd);
-      if(goResult == false) 
-	 return Failed;
-
-      // if all was fine update the state file
-      if(Res == Completed) {
-	 Cache.writeStateFile(NULL);
-      }
-      return Res;
-   };
-
+   OrderResult DoInstallPostFork(int statusFd=-1);
    bool FixMissing();
    
    pkgPackageManager(pkgDepCache *Cache);