]> git.saurik.com Git - apt.git/commitdiff
Merge michael.vogt@canonical.com--2004/apt--status-fd--0
authorMatt Zimmerman <matt.zimmerman@canonical.com>
Wed, 19 Jan 2005 08:25:10 +0000 (08:25 +0000)
committerMatt Zimmerman <matt.zimmerman@canonical.com>
Wed, 19 Jan 2005 08:25:10 +0000 (08:25 +0000)
Patches applied:

 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--base-0
   tag of apt@packages.debian.org/apt--main--0--patch-32

 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-1

 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-2
   * changed version of the library

 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-3
   * merged with matt again

 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-4
   * merged with apt--main--0 and fixed permissions in po/

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-1
   tag of michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-4

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-2
   * merged with matt's tree

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-3
   * removed a stupid "<<<" merge in the changelog

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-4
   * star-merged with apt@packages.debian.org/apt--main--0

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-5
   * removed the "pre-fork/post-fork" change and put it into it's own branch, star-merged with matt so that it applies cleanly

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-6
   * cleaned a incorrect log-file merge

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-7
   * removed a conflict in =tagging-method

 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-8
   * cleaned up the delta so that it no longer contains unreleated whitespace changes

apt-pkg/contrib/fileutl.cc
apt-pkg/contrib/fileutl.h
apt-pkg/deb/dpkgpm.cc
apt-pkg/deb/dpkgpm.h
apt-pkg/packagemanager.h
debian/changelog
po/apt-all.pot

index 7c9f5c0dd5470b16520512a2e9d707778405fa5d..92181472cea55b904f0c9dc4dd6da940479e3383 100644 (file)
@@ -306,7 +306,7 @@ bool WaitFd(int Fd,bool write,unsigned long timeout)
 /* This is used if you want to cleanse the environment for the forked 
    child, it fixes up the important signals and nukes all of the fds,
    otherwise acts like normal fork. */
 /* This is used if you want to cleanse the environment for the forked 
    child, it fixes up the important signals and nukes all of the fds,
    otherwise acts like normal fork. */
-pid_t ExecFork()
+pid_t ExecFork(int dontCloseThisFd)
 {
    // Fork off the process
    pid_t Process = fork();
 {
    // Fork off the process
    pid_t Process = fork();
@@ -329,7 +329,8 @@ pid_t ExecFork()
       
       // Close all of our FDs - just in case
       for (int K = 3; K != 40; K++)
       
       // Close all of our FDs - just in case
       for (int K = 3; K != 40; K++)
-        fcntl(K,F_SETFD,FD_CLOEXEC);
+        if(K != dontCloseThisFd)
+           fcntl(K,F_SETFD,FD_CLOEXEC);
    }
    
    return Process;
    }
    
    return Process;
index 041aa33096c94d18a936420fcc7d1cd277682bbe..4716e261e6303a5831654e058753f00ebf660d47 100644 (file)
@@ -87,7 +87,7 @@ string SafeGetCWD();
 void SetCloseExec(int Fd,bool Close);
 void SetNonBlock(int Fd,bool Block);
 bool WaitFd(int Fd,bool write = false,unsigned long timeout = 0);
 void SetCloseExec(int Fd,bool Close);
 void SetNonBlock(int Fd,bool Block);
 bool WaitFd(int Fd,bool write = false,unsigned long timeout = 0);
-pid_t ExecFork();
+pid_t ExecFork(int dontCloseThisFd=-1);
 bool ExecWait(pid_t Pid,const char *Name,bool Reap = false);
 
 // File string manipulators
 bool ExecWait(pid_t Pid,const char *Name,bool Reap = false);
 
 // File string manipulators
index 85d46edbad1ded32bb30e8e71688720326f9fce7..61c48dcbb6c3869de404057163bdc95f97d70ee6 100644 (file)
@@ -326,7 +326,7 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
 // DPkgPM::Go - Run the sequence                                       /*{{{*/
 // ---------------------------------------------------------------------
 /* This globs the operations and calls dpkg */
 // DPkgPM::Go - Run the sequence                                       /*{{{*/
 // ---------------------------------------------------------------------
 /* This globs the operations and calls dpkg */
-bool pkgDPkgPM::Go()
+bool pkgDPkgPM::Go(int status_fd)
 {
    unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);   
    unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
 {
    unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);   
    unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
@@ -367,6 +367,17 @@ bool pkgDPkgPM::Go()
         }       
       }
       
         }       
       }
       
+      // if we got a status_fd argument, we pass it to apt
+      char status_fd_buf[20];
+      if(status_fd > 0) 
+      {
+        Args[n++] = "--status-fd";
+        Size += strlen(Args[n-1]);
+        snprintf(status_fd_buf,20,"%i",status_fd);
+        Args[n++] = status_fd_buf;
+        Size += strlen(Args[n-1]);
+      } 
+
       switch (I->Op)
       {
         case Item::Remove:
       switch (I->Op)
       {
         case Item::Remove:
@@ -440,7 +451,11 @@ bool pkgDPkgPM::Go()
       sighandler_t old_SIGINT = signal(SIGINT,SIG_IGN);
                     
       // Fork dpkg
       sighandler_t old_SIGINT = signal(SIGINT,SIG_IGN);
                     
       // Fork dpkg
-      pid_t Child = ExecFork();
+      pid_t Child;
+      if(status_fd > 0)
+        Child = ExecFork(status_fd);
+      else
+        Child = ExecFork();
             
       // This is the child
       if (Child == 0)
             
       // This is the child
       if (Child == 0)
index 5d60b32d2c18a7ccccba8daea72fac918b1285a7..b59b9dc939b8a3b19109752e71e9bc630283950b 100644 (file)
@@ -45,7 +45,7 @@ class pkgDPkgPM : public pkgPackageManager
    virtual bool Install(PkgIterator Pkg,string File);
    virtual bool Configure(PkgIterator Pkg);
    virtual bool Remove(PkgIterator Pkg,bool Purge = false);
    virtual bool Install(PkgIterator Pkg,string File);
    virtual bool Configure(PkgIterator Pkg);
    virtual bool Remove(PkgIterator Pkg,bool Purge = false);
-   virtual bool Go();
+   virtual bool Go(int status_fd=-1);
    virtual void Reset();
    
    public:
    virtual void Reset();
    
    public:
index ba84c5ed78d47ca14c96bb05fab584edae0b3fb1..43f2c4acea2429b8cf45cba0f7681eb0c31421a6 100644 (file)
@@ -68,7 +68,7 @@ class pkgPackageManager : protected pkgCache::Namespace
    virtual bool Install(PkgIterator /*Pkg*/,string /*File*/) {return false;};
    virtual bool Configure(PkgIterator /*Pkg*/) {return false;};
    virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;};
    virtual bool Install(PkgIterator /*Pkg*/,string /*File*/) {return false;};
    virtual bool Configure(PkgIterator /*Pkg*/) {return false;};
    virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;};
-   virtual bool Go() {return true;};
+   virtual bool Go(int statusFd=-1) {return true;};
    virtual void Reset() {};
    
    public:
    virtual void Reset() {};
    
    public:
index d0dae01d2ce3ede2637c5bbbbd24620d8436c535..6731bd3d285346d01063dc172e307eea14a88e5b 100644 (file)
@@ -1,7 +1,9 @@
 apt (0.6.30) unstable; urgency=low
 
   * Add ppc64 to buildlib/archtable
 apt (0.6.30) unstable; urgency=low
 
   * Add ppc64 to buildlib/archtable
-
+  * Merge michael.vogt@canonical.com--2004/apt--status-fd--0
+    - Support preserving dpkg status file descriptor, to support
+      better integration with synaptic
  --
 
 apt (0.6.29) hoary; urgency=low
  --
 
 apt (0.6.29) hoary; urgency=low
index dfafb2c4f137083de7cb1d8c844424a31b18260f..4d0e156585bb3975b2d18bb398cd97cf89d48b65 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-12-23 12:36+0100\n"
+"POT-Creation-Date: 2004-12-20 10:20+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1495,7 +1495,7 @@ msgstr ""
 msgid "Server closed the connection"
 msgstr ""
 
 msgid "Server closed the connection"
 msgstr ""
 
-#: methods/ftp.cc:338 methods/rsh.cc:190 apt-pkg/contrib/fileutl.cc:452
+#: methods/ftp.cc:338 methods/rsh.cc:190 apt-pkg/contrib/fileutl.cc:453
 msgid "Read error"
 msgstr ""
 
 msgid "Read error"
 msgstr ""
 
@@ -1895,54 +1895,54 @@ msgstr ""
 msgid "Could not get lock %s"
 msgstr ""
 
 msgid "Could not get lock %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:358
+#: apt-pkg/contrib/fileutl.cc:359
 #, c-format
 msgid "Waited, for %s but it wasn't there"
 msgstr ""
 
 #, c-format
 msgid "Waited, for %s but it wasn't there"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:368
+#: apt-pkg/contrib/fileutl.cc:369
 #, c-format
 msgid "Sub-process %s received a segmentation fault."
 msgstr ""
 
 #, c-format
 msgid "Sub-process %s received a segmentation fault."
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:371
+#: apt-pkg/contrib/fileutl.cc:372
 #, c-format
 msgid "Sub-process %s returned an error code (%u)"
 msgstr ""
 
 #, c-format
 msgid "Sub-process %s returned an error code (%u)"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:373
+#: apt-pkg/contrib/fileutl.cc:374
 #, c-format
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
 #, c-format
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:417
+#: apt-pkg/contrib/fileutl.cc:418
 #, c-format
 msgid "Could not open file %s"
 msgstr ""
 
 #, c-format
 msgid "Could not open file %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:473
+#: apt-pkg/contrib/fileutl.cc:474
 #, c-format
 msgid "read, still have %lu to read but none left"
 msgstr ""
 
 #, c-format
 msgid "read, still have %lu to read but none left"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:491
+#: apt-pkg/contrib/fileutl.cc:492
 msgid "Write error"
 msgstr ""
 
 msgid "Write error"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:503
+#: apt-pkg/contrib/fileutl.cc:504
 #, c-format
 msgid "write, still have %lu to write but couldn't"
 msgstr ""
 
 #, c-format
 msgid "write, still have %lu to write but couldn't"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:578
+#: apt-pkg/contrib/fileutl.cc:579
 msgid "Problem closing the file"
 msgstr ""
 
 msgid "Problem closing the file"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:584
+#: apt-pkg/contrib/fileutl.cc:585
 msgid "Problem unlinking the file"
 msgstr ""
 
 msgid "Problem unlinking the file"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:595
+#: apt-pkg/contrib/fileutl.cc:596
 msgid "Problem syncing the file"
 msgstr ""
 
 msgid "Problem syncing the file"
 msgstr ""