Add public rpmfi function for retrieving digest algorithm of the set
authorPanu Matilainen <pmatilai@redhat.com>
Thu, 11 Dec 2008 08:17:48 +0000 (10:17 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Thu, 11 Dec 2008 08:17:48 +0000 (10:17 +0200)
- the information is already available through rpmfiFDigest() but that
  requires valid iteration index to be active, whereas the digest algo
  is per info set, not per file

lib/fsm.c
lib/rpmfi.c
lib/rpmfi.h

index 21d82ed..09c588d 100644 (file)
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -539,7 +539,7 @@ int fsmSetup(FSM_t fsm, fileStage goal,
        fdSetCpioPos(fsm->cfd, 0);
     }
     fsm->iter = mapInitIterator(ts, te, fi);
-    fsm->digestalgo = fi->digestalgo;
+    fsm->digestalgo = rpmfiDigestAlgo(fi);
 
     if (fsm->goal == FSM_PKGINSTALL || fsm->goal == FSM_PKGBUILD) {
        void * ptr;
index 9a04cfb..839d019 100644 (file)
@@ -267,6 +267,11 @@ const unsigned char * rpmfiMD5(rpmfi fi)
     return (algo == PGPHASHALGO_MD5) ? digest : NULL;
 }
 
+pgpHashAlgo rpmfiDigestAlgo(rpmfi fi)
+{
+    return fi ? fi->digestalgo : 0;
+}
+
 const unsigned char * rpmfiFDigestIndex(rpmfi fi, int ix, pgpHashAlgo *algo, size_t *len)
 {
     const unsigned char *digest = NULL;
index a9d99cb..920583f 100644 (file)
@@ -207,6 +207,13 @@ rpm_mode_t rpmfiFMode(rpmfi fi);
 rpmfileState rpmfiFState(rpmfi fi);
 
 /** \ingroup rpmfi
+ * Return digest algorithm of a file info set.
+ * @param fi           file info set
+ * @return             digest algorithm of file info set, 0 on invalid
+ */
+pgpHashAlgo rpmfiDigestAlgo(rpmfi fi);
+
+/** \ingroup rpmfi
  * Return current file (binary) digest of file info set.
  * @param fi           file info set
  * @retval algo                digest hash algoritm used (pass NULL to ignore)