瀏覽代碼

dpkg: Refactor deconfiguration queueing into enqueue_deconfigure()

Guillem Jover 14 年之前
父節點
當前提交
66aad043c3
共有 2 個文件被更改,包括 16 次插入8 次删除
  1. 15 8
      src/archives.c
  2. 1 0
      src/archives.h

+ 15 - 8
src/archives.c

@@ -981,6 +981,20 @@ tar_deferred_extract(struct fileinlist *files, struct pkginfo *pkg)
   }
 }
 
+void
+enqueue_deconfigure(struct pkginfo *pkg, struct pkginfo *pkg_removal)
+{
+  struct pkg_deconf_list *newdeconf;
+
+  ensure_package_clientdata(pkg);
+  pkg->clientdata->istobe = itb_deconfigure;
+  newdeconf = m_malloc(sizeof(struct pkg_deconf_list));
+  newdeconf->next = deconfigure;
+  newdeconf->pkg = pkg;
+  newdeconf->pkg_removal = pkg_removal;
+  deconfigure = newdeconf;
+}
+
 /**
  * Try if we can deconfigure the package and queue it if so.
  *
@@ -1002,8 +1016,6 @@ try_deconfigure_can(bool (*force_p)(struct deppossi *), struct pkginfo *pkg,
                     struct deppossi *pdep, const char *action,
                     struct pkginfo *removal, const char *why)
 {
-  struct pkg_deconf_list *newdeconf;
-
   if (force_p && force_p(pdep)) {
     warning(_("ignoring dependency problem with %s:\n%s"), action, why);
     return 2;
@@ -1020,12 +1032,7 @@ try_deconfigure_can(bool (*force_p)(struct deppossi *), struct pkginfo *pkg,
         return 0;
       }
     }
-    pkg->clientdata->istobe= itb_deconfigure;
-    newdeconf = m_malloc(sizeof(struct pkg_deconf_list));
-    newdeconf->next= deconfigure;
-    newdeconf->pkg= pkg;
-    newdeconf->pkg_removal = removal;
-    deconfigure= newdeconf;
+    enqueue_deconfigure(pkg, removal);
     return 1;
   } else {
     fprintf(stderr, _("dpkg: no, cannot proceed with %s (--auto-deconfigure will help):\n%s"),

+ 1 - 0
src/archives.h

@@ -43,6 +43,7 @@ extern struct varbuf fnametmpvb;
 extern struct varbuf fnamenewvb;
 extern struct pkg_deconf_list *deconfigure;
 
+void enqueue_deconfigure(struct pkginfo *pkg, struct pkginfo *pkg_removal);
 void enqueue_conflictor(struct pkginfo *pkg, struct pkginfo *pkg_fixbyrm);
 
 void cu_pathname(int argc, void **argv);