]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/dpkgpm.cc
* merged apt--tasks, this brings in the latest changes from apt--mvo as well
[apt.git] / apt-pkg / deb / dpkgpm.cc
index fe8fbca748b5fc05b63bda2be3ff86881983a58a..93dff390d83c4fd37bf189c09e46c54757ede2a4 100644 (file)
@@ -375,8 +375,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
       },
       // Purge operation
       { 
       },
       // Purge operation
       { 
-        {"config-files", _("Preparing for remove with config %s")},
-        {"not-installed", _("Removed with config %s")},
+        {"config-files", _("Preparing to completely remove %s")},
+        {"not-installed", _("Completely removed %s")},
         {NULL, NULL}
       },
    };
         {NULL, NULL}
       },
    };
@@ -474,6 +474,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
         case Item::Install:
         Args[n++] = "--unpack";
         Size += strlen(Args[n-1]);
         case Item::Install:
         Args[n++] = "--unpack";
         Size += strlen(Args[n-1]);
+        Args[n++] = "--auto-deconfigure";
+        Size += strlen(Args[n-1]);
         break;
       }
       
         break;
       }
       
@@ -623,8 +625,14 @@ bool pkgDPkgPM::Go(int OutStatusFd)
            'status: conffile-prompt: conffile : 'current-conffile' 'new-conffile' useredited distedited
            
         */
            'status: conffile-prompt: conffile : 'current-conffile' 'new-conffile' useredited distedited
            
         */
-        char* list[4];
-        TokSplitString(':', line, list, 5);
+        char* list[5];
+        if(!TokSplitString(':', line, list, sizeof(list)/sizeof(list[0])))
+           // FIXME: dpkg sends multiline error messages sometimes (see
+           //        #374195 for a example. we should support this by
+           //        either patching dpkg to not send multiline over the
+           //        statusfd or by rewriting the code here to deal with
+           //        it. for now we just ignore it and not crash
+           continue;
         char *pkg = list[1];
         char *action = _strstrip(list[2]);
 
         char *pkg = list[1];
         char *action = _strstrip(list[2]);