RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   10-Jun-2009 20:21:09
  Branch: HEAD                             Handle: 2009061018210801

  Modified files:
    rpm                     CHANGES
    rpm/build               files.c

  Log:
    - add the Fedorable tag(s) for file digests.

  Summary:
    Revision    Changes     Path
    1.3016      +1  -0      rpm/CHANGES
    1.358       +53 -38     rpm/build/files.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3015 -r1.3016 CHANGES
  --- rpm/CHANGES       6 Jun 2009 20:35:11 -0000       1.3015
  +++ rpm/CHANGES       10 Jun 2009 18:21:08 -0000      1.3016
  @@ -1,5 +1,6 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: add the Fedorable tag(s) for file digests.
       - jbj: reserve ~1K in  RPMSIGTAG_PADDING for now.
       - jbj: squirrel: capture stdout in an iob.
       - jbj: squirrel: add --with-squirrel for embedding squirrel.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
  ============================================================================
  $ cvs diff -u -r1.357 -r1.358 files.c
  --- rpm/build/files.c 30 May 2009 15:41:07 -0000      1.357
  +++ rpm/build/files.c 10 Jun 2009 18:21:09 -0000      1.358
  @@ -1254,6 +1254,57 @@
       xx = headerDel(h, he, 0);
   }
   
  +static rpmuint32_t getDigestAlgo(Header h, int isSrc)
  +     /*...@modifies h @*/
  +{
  +    HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
  +    static rpmuint32_t source_file_dalgo = 0;
  +    static rpmuint32_t binary_file_dalgo = 0;
  +    static int oneshot = 0;
  +    rpmuint32_t dalgo = 0;
  +    int xx;
  +
  +    if (!oneshot) {
  +     source_file_dalgo =
  +             rpmExpandNumeric("%{?_build_source_file_digest_algo}");
  +     binary_file_dalgo =
  +             rpmExpandNumeric("%{?_build_binary_file_digest_algo}");
  +     oneshot++;
  +    }
  +
  +    dalgo = (isSrc ? source_file_dalgo : binary_file_dalgo);
  +    switch (dalgo) {
  +    case PGPHASHALGO_SHA1:
  +    case PGPHASHALGO_MD2:
  +    case PGPHASHALGO_SHA256:
  +    case PGPHASHALGO_SHA384:
  +    case PGPHASHALGO_SHA512:
  +     (void) rpmlibNeedsFeature(h, "FileDigests", "4.6.0-1");
  +     he->tag = RPMTAG_FILEDIGESTALGO;
  +     he->t = RPM_UINT32_TYPE;
  +     he->p.ui32p = &dalgo;
  +     he->c = 1;
  +     xx = headerPut(h, he, 0);
  +     /*...@fallthgrough@*/
  +    case PGPHASHALGO_RIPEMD160:
  +    case PGPHASHALGO_TIGER192:
  +    case PGPHASHALGO_MD4:
  +    case PGPHASHALGO_RIPEMD128:
  +    case PGPHASHALGO_CRC32:
  +    case PGPHASHALGO_ADLER32:
  +    case PGPHASHALGO_CRC64:
  +     (void) rpmlibNeedsFeature(h, "FileDigestParameterized", "4.4.6-1");
  +         /*...@switchbreak@*/ break;
  +    case PGPHASHALGO_MD5:
  +    case PGPHASHALGO_HAVAL_5_160:            /* XXX unimplemented */
  +    default:
  +     dalgo = PGPHASHALGO_MD5;
  +     /*...@switchbreak@*/ break;
  +    }
  +
  +    return dalgo;
  +}
  +
   /**
    * Add file entries to header.
    * @todo Should directories have %doc/%config attributes? (#14531)
  @@ -1281,9 +1332,10 @@
       security_context_t scon = NULL;
       const char * sxfn;
       FileListRec flp;
  +    rpmuint32_t dalgo = getDigestAlgo(h, isSrc);
       char buf[BUFSIZ];
       int i, xx;
  -    
  +
       /* Sort the big list */
       qsort(fl->fileList, fl->fileListRecsUsed,
          sizeof(*(fl->fileList)), compareFileListRecs);
  @@ -1459,42 +1511,6 @@
        xx = headerPut(h, he, 0);
        he->append = 0;
   
  -      { static rpmuint32_t source_file_dalgo = 0;
  -     static rpmuint32_t binary_file_dalgo = 0;
  -     static int oneshot = 0;
  -     rpmuint32_t dalgo = 0;
  -
  -     if (!oneshot) {
  -         source_file_dalgo =
  -             rpmExpandNumeric("%{?_build_source_file_digest_algo}");
  -         binary_file_dalgo =
  -             rpmExpandNumeric("%{?_build_binary_file_digest_algo}");
  -         oneshot++;
  -     }
  -
  -     dalgo = (isSrc ? source_file_dalgo : binary_file_dalgo);
  -     switch (dalgo) {
  -     case PGPHASHALGO_SHA1:
  -     case PGPHASHALGO_RIPEMD160:
  -     case PGPHASHALGO_MD2:
  -     case PGPHASHALGO_TIGER192:
  -     case PGPHASHALGO_SHA256:
  -     case PGPHASHALGO_SHA384:
  -     case PGPHASHALGO_SHA512:
  -     case PGPHASHALGO_MD4:
  -     case PGPHASHALGO_RIPEMD128:
  -     case PGPHASHALGO_CRC32:
  -     case PGPHASHALGO_ADLER32:
  -     case PGPHASHALGO_CRC64:
  -         (void) rpmlibNeedsFeature(h, "FileDigestParameterized", "4.4.6-1");
  -         /*...@switchbreak@*/ break;
  -     case PGPHASHALGO_MD5:
  -     case PGPHASHALGO_HAVAL_5_160:           /* XXX unimplemented */
  -     default:
  -         dalgo = PGPHASHALGO_MD5;
  -         /*...@switchbreak@*/ break;
  -     }
  -         
        buf[0] = '\0';
        if (S_ISREG(flp->fl_mode))
            (void) dodigest(dalgo, flp->diskURL, (unsigned char *)buf, 1, NULL);
  @@ -1518,7 +1534,6 @@
        xx = headerPut(h, he, 0);
        he->append = 0;
   }
  -      }
        
        buf[0] = '\0';
        if (S_ISLNK(flp->fl_mode)) {
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to