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