Implement rpmteSetDependsOn and rpmteDependsOn using a rpmte
authorFlorian Festi <ffesti@redhat.com>
Wed, 25 Mar 2009 15:29:09 +0000 (16:29 +0100)
committerFlorian Festi <ffesti@redhat.com>
Thu, 26 Mar 2009 11:15:27 +0000 (12:15 +0100)
lib/depends.c
lib/rpmte.c
lib/rpmte.h

index a06db56..825e472 100644 (file)
@@ -95,7 +95,9 @@ static int removePackage(rpmts ts, Header h, rpmalKey depends)
        ts->order = xrealloc(ts->order, sizeof(*ts->order) * ts->orderAlloced);
     }
 
-    p = rpmteNew(ts, h, TR_REMOVED, NULL, NULL, -1, depends);
+    p = rpmteNew(ts, h, TR_REMOVED, NULL, NULL, -1, RPMAL_NOMATCH);
+    rpmteSetDependsOn(p, depends);
+
     ts->order[ts->orderCount] = p;
     ts->orderCount++;
 
index bda5411..7217d55 100644 (file)
@@ -36,6 +36,7 @@ struct rpmte_s {
     int osScore;               /*!< (TR_ADDED) Os score. */
     int isSource;              /*!< (TR_ADDED) source rpm? */
 
+    rpmte depends;              /*!< Package updated by this package (ERASE te) */
     rpmte parent;              /*!< Parent transaction element. */
     int degree;                        /*!< No. of immediate children. */
     int npreds;                        /*!< No. of predecessors. */
@@ -565,10 +566,13 @@ rpmalKey rpmteSetAddedKey(rpmte te, rpmalKey npkgKey)
     return opkgKey;
 }
 
+void rpmteSetDependsOn(rpmte te, rpmte depends) {
+    te->depends = depends;
+}
 
-rpmalKey rpmteDependsOnKey(rpmte te)
+rpmte rpmteDependsOn(rpmte te)
 {
-    return (te != NULL && te->type == TR_REMOVED ? te->pkgKey : RPMAL_NOMATCH);
+    return te->depends;
 }
 
 int rpmteDBOffset(rpmte te)
@@ -879,12 +883,11 @@ int rpmteMarkFailed(rpmte te, rpmts ts)
     rpmtsi pi = rpmtsiInit(ts);
     int rc = 0;
     rpmte p;
-    rpmalKey key = rpmteAddedKey(te);
 
     te->failed = 1;
     /* XXX we can do a much better here than this... */
     while ((p = rpmtsiNext(pi, TR_REMOVED))) {
-       if (rpmteDependsOnKey(p) == key) {
+       if (rpmteDependsOn(p) == te) {
            p->failed = 1;
        }
     }
index a5e939e..6f43c34 100644 (file)
@@ -299,11 +299,18 @@ rpmalKey rpmteSetAddedKey(rpmte te,
                rpmalKey npkgKey);
 
 /** \ingroup rpmte
- * Retrieve dependent pkgKey of TR_REMOVED transaction element.
+ * Set dependent element of TR_REMOVED transaction element.
  * @param te           transaction element
- * @return             dependent pkgKey
+ * @param depends       dependent transaction element
  */
-rpmalKey rpmteDependsOnKey(rpmte te);
+void rpmteSetDependsOn(rpmte te, rpmte depends);
+
+/** \ingroup rpmte
+ * Retrieve dependent element of TR_REMOVED transaction element.
+ * @param te           transaction element
+ * @return             dependent transaction element
+ */
+rpmte rpmteDependsOn(rpmte te);
 
 /** \ingroup rpmte
  * Retrieve rpmdb instance of TR_REMOVED transaction element.