The following commit has been merged in the master branch:
commit 50391de87ac2b0269ef3e2f64fb41e913baff415
Author: Guillem Jover <guil...@debian.org>
Date:   Fri Jun 25 18:20:26 2010 +0200

    libdpkg: Remove 'valid' member from struct pkginfoperfile
    
    The two struct pkginfoperfile inside struct pkginfo are always valid,
    as blankpackage does a blankpackageperfile on each. So there's no
    actual need for the boolean member, neither for validity checks all
    over the place and possible subsequent redundant initializations.
    
    This is due to commit 5f100a01af636c14a600bf53b22e2ca3f2fcc546.

diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
index 676af25..3eaaf25 100644
--- a/dpkg-deb/build.c
+++ b/dpkg-deb/build.c
@@ -280,7 +280,6 @@ void do_build(const char *const *argv) {
     warns= 0; errs= 0;
     parsedb(controlfile, pdb_recordavailable|pdb_rejectstatus,
             &checkedinfo, stderr, &warns);
-    assert(checkedinfo->available.valid);
     if (strspn(checkedinfo->name,
                "abcdefghijklmnopqrstuvwxyz0123456789+-.")
         != strlen(checkedinfo->name))
diff --git a/dselect/pkgdepcon.cc b/dselect/pkgdepcon.cc
index 7a902a9..9caa9ee 100644
--- a/dselect/pkgdepcon.cc
+++ b/dselect/pkgdepcon.cc
@@ -53,24 +53,22 @@ pkginfoperfile *packagelist::findinfo(pkginfo *pkg) {
   r= useavailable(pkg) ? &pkg->available : &pkg->installed;
   if (debug)
     fprintf(debug,"packagelist[%p]::findinfo(%s) 
useavailable=%d\n",this,pkg->name,useavailable(pkg));
-  if (!r->valid) blankpackageperfile(r);
+
   return r;
 }
   
 int packagelist::checkdependers(pkginfo *pkg, int changemade) {
   struct deppossi *possi;
   
-  if (pkg->available.valid) {
-    for (possi= pkg->available.depended; possi; possi= possi->nextrev) {
-      if (!useavailable(possi->up->up)) continue;
-      changemade = max(changemade, resolvedepcon(possi->up));
-    }
+  for (possi = pkg->available.depended; possi; possi = possi->nextrev) {
+    if (!useavailable(possi->up->up))
+      continue;
+    changemade = max(changemade, resolvedepcon(possi->up));
   }
-  if (pkg->installed.valid) {
-    for (possi= pkg->installed.depended; possi; possi= possi->nextrev) {
-      if (useavailable(possi->up->up)) continue;
-      changemade = max(changemade, resolvedepcon(possi->up));
-    }
+  for (possi = pkg->installed.depended; possi; possi = possi->nextrev) {
+    if (useavailable(possi->up->up))
+      continue;
+    changemade = max(changemade, resolvedepcon(possi->up));
   }
   return changemade;
 }
@@ -274,7 +272,7 @@ int packagelist::resolvedepcon(dependency *depends) {
         foundany= 0;
         if (possi->ed->clientdata) foundany= 1;
         if (dep_update_best_to_change_stop(best, possi->ed)) goto mustdeselect;
-        for (provider= possi->ed->available.valid ? 
possi->ed->available.depended : 0;
+        for (provider = possi->ed->available.depended;
              provider;
              provider= provider->nextrev) {
           if (provider->up->type != dep_provides) continue;
@@ -340,8 +338,7 @@ int packagelist::resolvedepcon(dependency *depends) {
     if (depends->up != depends->list->ed) {
       r= deselect_one_of(depends->up, depends->list->ed, depends);  if (r) 
return r;
     }
-    for (provider= depends->list->ed->available.valid ?
-                   depends->list->ed->available.depended : 0;
+    for (provider = depends->list->ed->available.depended;
          provider;
          provider= provider->nextrev) {
       if (provider->up->type != dep_provides) continue;
@@ -398,37 +395,34 @@ packagelist::deppossatisfied(deppossi *possi, 
perpackagestate **fixbyupgrade)
   if (possi->verrel != dvr_none)
     return false;
   deppossi *provider;
-  if (possi->ed->installed.valid) {
-    for (provider= possi->ed->installed.depended;
-         provider;
-         provider= provider->nextrev) {
-      if (provider->up->type == dep_provides &&
-          provider->up->up->clientdata &&
-          !useavailable(provider->up->up) &&
-          would_like_to_install(provider->up->up->clientdata->selected,
-                                provider->up->up))
-        return true;
-    }
+
+  for (provider = possi->ed->installed.depended;
+       provider;
+       provider = provider->nextrev) {
+    if (provider->up->type == dep_provides &&
+        provider->up->up->clientdata &&
+        !useavailable(provider->up->up) &&
+        would_like_to_install(provider->up->up->clientdata->selected,
+                              provider->up->up))
+      return true;
   }
-  if (possi->ed->available.valid) {
-    for (provider= possi->ed->available.depended;
-         provider;
-         provider= provider->nextrev) {
-      if (provider->up->type != dep_provides ||
-          !provider->up->up->clientdata ||
-          !would_like_to_install(provider->up->up->clientdata->selected,
-                                 provider->up->up))
-        continue;
-      if (useavailable(provider->up->up))
-        return true;
-      if (fixbyupgrade && !*fixbyupgrade &&
-          (!(provider->up->up->status == pkginfo::stat_installed ||
-             provider->up->up->status == pkginfo::stat_triggerspending ||
-             provider->up->up->status == pkginfo::stat_triggersawaited) ||
-           versioncompare(&provider->up->up->available.version,
-                          &provider->up->up->installed.version) > 1))
-        *fixbyupgrade= provider->up->up->clientdata;
-    }
+  for (provider = possi->ed->available.depended;
+       provider;
+       provider = provider->nextrev) {
+    if (provider->up->type != dep_provides ||
+        !provider->up->up->clientdata ||
+        !would_like_to_install(provider->up->up->clientdata->selected,
+                               provider->up->up))
+      continue;
+    if (useavailable(provider->up->up))
+      return true;
+    if (fixbyupgrade && !*fixbyupgrade &&
+        (!(provider->up->up->status == pkginfo::stat_installed ||
+           provider->up->up->status == pkginfo::stat_triggerspending ||
+           provider->up->up->status == pkginfo::stat_triggersawaited) ||
+         versioncompare(&provider->up->up->available.version,
+                        &provider->up->up->installed.version) > 1))
+      *fixbyupgrade = provider->up->up->clientdata;
   }
   return false;
 }
diff --git a/dselect/pkglist.cc b/dselect/pkglist.cc
index 25f902b..ea9b15a 100644
--- a/dselect/pkglist.cc
+++ b/dselect/pkglist.cc
@@ -176,8 +176,6 @@ void packagelist::ensurestatsortinfo() {
         fprintf(debug,"packagelist[%p]::ensurestatsortinfos() i=%d pkg=%s\n",
                 this,index,table[index]->pkg->name);
       pkg= table[index]->pkg;
-      if (!pkg->installed.valid) blankpackageperfile(&pkg->installed);
-      if (!pkg->available.valid) blankpackageperfile(&pkg->available);
       switch (pkg->status) {
       case pkginfo::stat_unpacked:
       case pkginfo::stat_halfconfigured:
@@ -397,7 +395,6 @@ packagelist::packagelist(keybindings *kb) : baselist(kb) {
         pkg->want != pkginfo::want_install) {
       pkg->clientdata= 0; continue;
     }
-    if (!pkg->available.valid) blankpackageperfile(&pkg->available);
     // treat all unknown packages as already seen
     state->direct= state->original= (pkg->want == pkginfo::want_unknown ? 
pkginfo::want_purge : pkg->want);
     if (readwrite && state->original == pkginfo::want_unknown) {
diff --git a/dselect/pkgsublist.cc b/dselect/pkgsublist.cc
index 7d89862..bb7dc49 100644
--- a/dselect/pkgsublist.cc
+++ b/dselect/pkgsublist.cc
@@ -149,7 +149,7 @@ packagelist::add(dependency *depends, showpriority 
displayimportance)
       // providers aren't relevant if a version was specified, or
       // if we're looking at a provider relationship already
       deppossi *provider;
-      for (provider= possi->ed->available.valid ? 
possi->ed->available.depended : 0;
+      for (provider = possi->ed->available.depended;
            provider;
            provider=provider->nextrev) {
         if (provider->up->type != dep_provides) continue;
diff --git a/lib/dpkg/database.c b/lib/dpkg/database.c
index 675b963..c5282cc 100644
--- a/lib/dpkg/database.c
+++ b/lib/dpkg/database.c
@@ -71,8 +71,6 @@ void blankpackage(struct pkginfo *pigp) {
   pigp->section= NULL;
   blankversion(&pigp->configversion);
   pigp->files= NULL;
-  pigp->installed.valid = false;
-  pigp->available.valid = false;
   pigp->clientdata= NULL;
   pigp->trigaw.head = pigp->trigaw.tail = NULL;
   pigp->othertrigaw_head = NULL;
@@ -90,7 +88,6 @@ void blankpackageperfile(struct pkginfoperfile *pifp) {
   blankversion(&pifp->version);
   pifp->conffiles= NULL;
   pifp->arbs= NULL;
-  pifp->valid = true;
 }
 
 static int nes(const char *s) { return s && *s; }
@@ -109,8 +106,6 @@ informative(struct pkginfo *pkg, struct pkginfoperfile 
*info)
        informativeversion(&pkg->configversion)))
     /* We ignore Section and Priority, as these tend to hang around. */
     return true;
-  if (!info->valid)
-    return false;
   if (info->depends ||
       nes(info->description) ||
       nes(info->maintainer) ||
diff --git a/lib/dpkg/dpkg-db.h b/lib/dpkg/dpkg-db.h
index 0cd14b1..4491108 100644
--- a/lib/dpkg/dpkg-db.h
+++ b/lib/dpkg/dpkg-db.h
@@ -102,7 +102,6 @@ struct filedetails {
 };
 
 struct pkginfoperfile { /* pif */
-  bool valid;
   struct dependency *depends;
   struct deppossi *depended;
   bool essential; /* The ‘essential’ flag, true = yes, false = no (absent). */
diff --git a/lib/dpkg/dump.c b/lib/dpkg/dump.c
index 8a9cf69..448737c 100644
--- a/lib/dpkg/dump.c
+++ b/lib/dpkg/dump.c
@@ -101,7 +101,7 @@ void w_section(struct varbuf *vb,
 void w_charfield(struct varbuf *vb,
                  const struct pkginfo *pigp, const struct pkginfoperfile *pifp,
                  enum fwriteflags flags, const struct fieldinfo *fip) {
-  const char *value= pifp->valid ? PKGPFIELD(pifp,fip->integer,const char*) : 
NULL;
+  const char *value = PKGPFIELD(pifp, fip->integer, const char *);
   if (!value || !*value) return;
   if (flags&fw_printheader) {
     varbufaddstr(vb,fip->name);
@@ -139,7 +139,7 @@ void w_filecharf(struct varbuf *vb,
 void w_booleandefno(struct varbuf *vb,
                     const struct pkginfo *pigp, const struct pkginfoperfile 
*pifp,
                     enum fwriteflags flags, const struct fieldinfo *fip) {
-  bool value = pifp->valid ? PKGPFIELD(pifp, fip->integer, bool) : false;
+  bool value = PKGPFIELD(pifp, fip->integer, bool);
   if (!(flags&fw_printheader)) {
     varbufaddstr(vb, value ? "yes" : "no");
     return;
@@ -244,7 +244,6 @@ void w_dependency(struct varbuf *vb,
   const char *depdel;
   struct dependency *dyp;
 
-  if (!pifp->valid) return;
   if (flags&fw_printheader)
     sprintf(fnbuf,"%s: ",fip->name);
   else
@@ -266,7 +265,8 @@ void w_conffiles(struct varbuf *vb,
                  enum fwriteflags flags, const struct fieldinfo *fip) {
   struct conffile *i;
 
-  if (!pifp->valid || !pifp->conffiles || pifp == &pigp->available) return;
+  if (!pifp->conffiles || pifp == &pigp->available)
+    return;
   if (flags&fw_printheader)
     varbufaddstr(vb,"Conffiles:\n");
   for (i=pifp->conffiles; i; i= i->next) {
@@ -286,7 +286,7 @@ w_trigpend(struct varbuf *vb,
 {
   struct trigpend *tp;
 
-  if (!pifp->valid || pifp == &pigp->available || !pigp->trigpend_head)
+  if (pifp == &pigp->available || !pigp->trigpend_head)
     return;
 
   assert(pigp->status >= stat_triggersawaited &&
@@ -309,7 +309,7 @@ w_trigaw(struct varbuf *vb,
 {
   struct trigaw *ta;
 
-  if (!pifp->valid || pifp == &pigp->available || !pigp->trigaw.head)
+  if (pifp == &pigp->available || !pigp->trigaw.head)
     return;
 
   assert(pigp->status > stat_configfiles &&
@@ -333,11 +333,11 @@ void varbufrecord(struct varbuf *vb,
   for (fip= fieldinfos; fip->name; fip++) {
     fip->wcall(vb,pigp,pifp,fw_printheader,fip);
   }
-  if (pifp->valid) {
-    for (afp= pifp->arbs; afp; afp= afp->next) {
-      varbufaddstr(vb,afp->name); varbufaddstr(vb,": ");
-      varbufaddstr(vb,afp->value); varbufaddc(vb,'\n');
-    }
+  for (afp = pifp->arbs; afp; afp = afp->next) {
+    varbufaddstr(vb, afp->name);
+    varbufaddstr(vb, ": ");
+    varbufaddstr(vb, afp->value);
+    varbufaddc(vb, '\n');
   }
 }
 
@@ -387,7 +387,6 @@ writedb(const char *filename, bool available, bool mustsync)
     pifp= available ? &pigp->available : &pigp->installed;
     /* Don't dump records which have no useful content. */
     if (!informative(pigp,pifp)) continue;
-    if (!pifp->valid) blankpackageperfile(pifp);
     varbufrecord(&vb,pigp,pifp);
     varbufaddc(&vb,'\n'); varbufaddc(&vb,0);
     if (fputs(vb.buf,file) < 0)
diff --git a/lib/dpkg/parse.c b/lib/dpkg/parse.c
index b8ee07a..fa0a712 100644
--- a/lib/dpkg/parse.c
+++ b/lib/dpkg/parse.c
@@ -144,7 +144,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
   for (;;) { /* loop per package */
     memset(fieldencountered, 0, sizeof(fieldencountered));
     blankpackage(&newpig);
-    blankpackageperfile(newpifp);
+
 /* Skip adjacent new lines */
     while(!EOF_mmap(dataptr, endptr)) {
       c= getc_mmap(dataptr); if (c!='\n' && c!=MSDOS_EOF_CHAR ) break;
@@ -332,8 +332,6 @@ int parsedb(const char *filename, enum parsedbflags flags,
        versioncompare(&newpifp->version, &pifp->version) < 0)
       continue;
 
-    if (!pifp->valid) blankpackageperfile(pifp);
-
     /* Copy the priority and section across, but don't overwrite existing
      * values if the pdb_weakclassification flag is set.
      */
@@ -461,7 +459,6 @@ void copy_dependency_links(struct pkginfo *pkg,
     dyp->up= pkg;
     for (dop= dyp->list; dop; dop= dop->next) {
       addtopifp= available ? &dop->ed->available : &dop->ed->installed;
-      if (!addtopifp->valid) blankpackageperfile(addtopifp);
       dop->nextrev= addtopifp->depended;
       dop->backrev= NULL;
       if (addtopifp->depended)
diff --git a/lib/dpkg/pkg-format.c b/lib/dpkg/pkg-format.c
index 725cbe2..25d8a95 100644
--- a/lib/dpkg/pkg-format.c
+++ b/lib/dpkg/pkg-format.c
@@ -206,10 +206,6 @@ pkg_format_show(const struct pkg_format_node *head,
 {
        struct varbuf vb = VARBUF_INIT, fb = VARBUF_INIT, wb = VARBUF_INIT;
 
-       /* Make sure we have package info available, even if it's all empty. */
-       if (!pif->valid)
-               blankpackageperfile(pif);
-
        while (head) {
                int ok;
                char fmt[16];
@@ -239,7 +235,7 @@ pkg_format_show(const struct pkg_format_node *head,
                                        break;
                                }
 
-                       if (!fip->name && pif->valid) {
+                       if (!fip->name) {
                                const struct arbitraryfield *afp;
 
                                for (afp = pif->arbs; afp; afp = afp->next)
diff --git a/src/enquiry.c b/src/enquiry.c
index b41b2be..af45426 100644
--- a/src/enquiry.c
+++ b/src/enquiry.c
@@ -364,7 +364,6 @@ void predeppackage(const char *const *argv) {
          !pkg && possi;
          possi=possi->next) {
       trypkg= possi->ed;
-      if (!trypkg->available.valid) continue;
       if (trypkg->files && versionsatisfied(&trypkg->available,possi)) {
         if (trypkg->clientdata->istobe == itb_normal) { pkg= trypkg; break; }
       }
@@ -374,7 +373,8 @@ void predeppackage(const char *const *argv) {
            provider=provider->next) {
         if (provider->up->type != dep_provides) continue;
         trypkg= provider->up->up;
-        if (!trypkg->available.valid || !trypkg->files) continue;
+        if (!trypkg->files)
+          continue;
         if (trypkg->clientdata->istobe == itb_normal) { pkg= trypkg; break; }
       }
     }
diff --git a/src/packages.c b/src/packages.c
index b3cfe2f..95c5ef5 100644
--- a/src/packages.c
+++ b/src/packages.c
@@ -338,7 +338,6 @@ static int deppossi_ok_found(struct pkginfo *possdependee,
   case stat_triggersawaited:
   case stat_triggerspending:
   case stat_installed:
-    assert(possdependee->installed.valid);
     if (checkversion && 
!versionsatisfied(&possdependee->installed,checkversion)) {
       varbufprintf(oemsgs, _("  Version of %s on system is %s.\n"),
                   possdependee->name,
@@ -521,7 +520,6 @@ int dependencies_ok(struct pkginfo *pkg, struct pkginfo 
*removing,
   ok= 2; /* 2=ok, 1=defer, 0=halt */
   debug(dbg_depcon,"checking dependencies of %s (- %s)",
         pkg->name, removing ? removing->name : "<none>");
-  assert(pkg->installed.valid);
 
   anycannotfixbytrig = 0;
   canfixbytrig = NULL;
@@ -542,17 +540,18 @@ int dependencies_ok(struct pkginfo *pkg, struct pkginfo 
*removing,
                                &matched,possi,&interestingwarnings,&oemsgs);
       if (thisf > found) found= thisf;
       if (found != 3 && possi->verrel == dvr_none) {
-        if (possi->ed->installed.valid) {
-          for (provider= possi->ed->installed.depended;
-               found != 3 && provider;
-               provider= provider->nextrev) {
-            if (provider->up->type != dep_provides) continue;
-            debug(dbg_depcondetail,"     checking provider 
%s",provider->up->up->name);
-            thisf= deppossi_ok_found(provider->up->up,pkg,removing,possi->ed,
-                                     &possfixbytrig,
-                                     &matched, NULL, &interestingwarnings, 
&oemsgs);
-            if (thisf > found) found= thisf;
-          }
+        for (provider = possi->ed->installed.depended;
+             found != 3 && provider;
+             provider = provider->nextrev) {
+          if (provider->up->type != dep_provides)
+            continue;
+          debug(dbg_depcondetail, "     checking provider %s",
+                provider->up->up->name);
+          thisf = deppossi_ok_found(provider->up->up, pkg, removing, possi->ed,
+                                    &possfixbytrig, &matched, NULL,
+                                    &interestingwarnings, &oemsgs);
+          if (thisf > found)
+            found = thisf;
         }
       }
       debug(dbg_depcondetail,"    found %d",found);
diff --git a/src/pkg-show.c b/src/pkg-show.c
index f32e406..c1b8789 100644
--- a/src/pkg-show.c
+++ b/src/pkg-show.c
@@ -36,7 +36,7 @@ limiteddescription(struct pkginfo *pkg,
 {
        const char *pdesc, *p;
 
-       pdesc = pkg->installed.valid ? pkg->installed.description : NULL;
+       pdesc = pkg->installed.description;
        if (!pdesc)
                pdesc = _("(no description available)");
        p = strchr(pdesc, '\n');
diff --git a/src/processarc.c b/src/processarc.c
index 5d898af..b261bf7 100644
--- a/src/processarc.c
+++ b/src/processarc.c
@@ -261,9 +261,6 @@ void process_archive(const char *filename) {
     forcibleerr(fc_architecture,
                 _("package architecture (%s) does not match system (%s)"),
                 pkg->available.architecture,architecture);
-    
-  if (!pkg->installed.valid) blankpackageperfile(&pkg->installed);
-  assert(pkg->available.valid);
 
   for (deconpil= deconfigure;
        deconpil;
@@ -295,13 +292,12 @@ void process_archive(const char *filename) {
       break;
     case dep_provides:
       /* Look for things that conflict with what we provide. */
-      if (dsearch->list->ed->installed.valid) {
-        for (psearch= dsearch->list->ed->installed.depended;
-             psearch;
-             psearch= psearch->nextrev) {
-          if (psearch->up->type != dep_conflicts) continue;
-          check_conflict(psearch->up, pkg, pfilename);
-        }
+      for (psearch = dsearch->list->ed->installed.depended;
+           psearch;
+           psearch = psearch->nextrev) {
+        if (psearch->up->type != dep_conflicts)
+          continue;
+        check_conflict(psearch->up, pkg, pfilename);
       }
       break;
     case dep_suggests:
diff --git a/src/query.c b/src/query.c
index 7f8d769..3f2b03f 100644
--- a/src/query.c
+++ b/src/query.c
@@ -89,7 +89,7 @@ list1package(struct pkginfo *pkg, bool *head, struct 
pkg_array *array)
        const char *pdesc;
        int plen, vlen, dlen;
 
-       pdesc = pkg->installed.valid ? pkg->installed.description : NULL;
+       pdesc = pkg->installed.description;
        if (!pdesc) pdesc= _("(no description available)");
 
        plen = strlen(array->pkgs[i]->name);
@@ -124,7 +124,7 @@ Desired=Unknown/Install/Remove/Purge/Hold\n\
     printf("\n");
     *head = true;
   }
-  if (!pkg->installed.valid) blankpackageperfile(&pkg->installed);
+
   limiteddescription(pkg,dw,&pdesc,&l);
   printf(format,
          "uihrp"[pkg->want],
diff --git a/src/remove.c b/src/remove.c
index 08650ed..1ee8e77 100644
--- a/src/remove.c
+++ b/src/remove.c
@@ -94,7 +94,6 @@ void deferred_remove(struct pkginfo *pkg) {
     return;
   }
 
-  assert(pkg->installed.valid);
   if (pkg->installed.essential && pkg->status != stat_configfiles)
     forcibleerr(fc_removeessential, _("This is an essential package -"
                 " it should not be removed."));

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to