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: 25-Apr-2012 22:34:51 Branch: rpm-5_4 Handle: 2012042520344703 Modified files: (Branch: rpm-5_4) rpm CHANGES build.c devtool.conf rpmqv.c rpm/lib poptALL.c tgi.c transaction.c rpm/perl RPM_Header.xs rpm/python rpmmodule.c rpmts-py.c rpm/rpmdb tagname.c rpm/rpmio rpmiotypes.h rpm/tools dbconvert.c rpm2cpio.c rpmcache.c rpmrepo.c Log: - crypto: refactor/eliminate _RPMVSF_{NOSIGNATURES,NODIGESTS}. Summary: Revision Changes Path 1.3501.2.247+1 -0 rpm/CHANGES 2.124.4.4 +38 -8 rpm/build.c 2.365.2.57 +1 -1 rpm/devtool.conf 2.144.2.4 +30 -3 rpm/lib/poptALL.c 2.28.4.2 +39 -7 rpm/lib/tgi.c 1.429.2.9 +38 -5 rpm/lib/transaction.c 1.25.6.1 +25 -5 rpm/perl/RPM_Header.xs 1.180.2.3 +0 -2 rpm/python/rpmmodule.c 1.111.2.2 +1 -6 rpm/python/rpmts-py.c 1.34.2.6 +1 -0 rpm/rpmdb/tagname.c 1.47.2.9 +0 -12 rpm/rpmio/rpmiotypes.h 1.167.4.5 +42 -5 rpm/rpmqv.c 2.1.2.13 +49 -15 rpm/tools/dbconvert.c 2.11.2.1 +38 -4 rpm/tools/rpm2cpio.c 2.41.4.1 +39 -7 rpm/tools/rpmcache.c 2.32.2.2 +28 -1 rpm/tools/rpmrepo.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3501.2.246 -r1.3501.2.247 CHANGES --- rpm/CHANGES 23 Apr 2012 17:32:27 -0000 1.3501.2.246 +++ rpm/CHANGES 25 Apr 2012 20:34:47 -0000 1.3501.2.247 @@ -1,4 +1,5 @@ 5.4.8 -> 5.4.9: + - jbj: crypto: refactore/iminate _RPMVSF_{NOSIGNATURES,NODIGESTS}. - devzero2000: add @rpm.org brp-python-hardlink in a more portable way - mdawkins: doxygen-1.7.4 bug @@ . patch -p0 <<'@@ .' Index: rpm/build.c ============================================================================ $ cvs diff -u -r2.124.4.3 -r2.124.4.4 build.c --- rpm/build.c 22 Feb 2012 00:24:53 -0000 2.124.4.3 +++ rpm/build.c 25 Apr 2012 20:34:47 -0000 2.124.4.4 @@ -28,6 +28,26 @@ /*@access rpmdb @*/ /* XXX compared with NULL @*/ /*@access FD_t @*/ /* XXX compared with NULL @*/ +#ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + /** */ static int checkSpec(rpmts ts, Header h) @@ -269,14 +289,24 @@ rpmVSFlags vsflags, ovsflags; int nbuilds = 0; - vsflags = rpmExpandNumeric("%{_vsflags_build}"); - vsflags = 0; /* XXX FIXME: ignore default disablers. */ - if (ba->qva_flags & VERIFY_DIGEST) - vsflags |= _RPMVSF_NODIGESTS; - if (ba->qva_flags & VERIFY_SIGNATURE) - vsflags |= _RPMVSF_NOSIGNATURES; - if (ba->qva_flags & VERIFY_HDRCHK) - vsflags |= RPMVSF_NOHDRCHK; + vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_build}"); + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + if (!QVA_ISSET(ba->qva_flags, DIGEST)) { + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + } + if (!QVA_ISSET(ba->qva_flags, SIGNATURE)) { + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + } + if (!QVA_ISSET(ba->qva_flags, HDRCHK)) { + VSF_SET(vsflags, NOHDRCHK); + } + VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */ ovsflags = rpmtsSetVSFlags(ts, vsflags); if (targets == NULL) { @@ . patch -p0 <<'@@ .' Index: rpm/devtool.conf ============================================================================ $ cvs diff -u -r2.365.2.56 -r2.365.2.57 devtool.conf --- rpm/devtool.conf 18 Apr 2012 15:09:49 -0000 2.365.2.56 +++ rpm/devtool.conf 25 Apr 2012 20:34:47 -0000 2.365.2.57 @@ -528,7 +528,7 @@ --with-python \ --with-pythonembed=/usr/lib:/usr/include/python2.6 \ --with-perl \ - --with-perl-urpm \ + --without-perl-urpm \ --with-perlembed=/usr/lib64/perl5/CORE/:/usr/lib64/perl5/CORE \ --with-ruby=/usr/lib64:/usr/lib64/ruby/1.8 \ --with-selinux \ @@ . patch -p0 <<'@@ .' Index: rpm/lib/poptALL.c ============================================================================ $ cvs diff -u -r2.144.2.3 -r2.144.2.4 poptALL.c --- rpm/lib/poptALL.c 19 Apr 2012 17:26:06 -0000 2.144.2.3 +++ rpm/lib/poptALL.c 25 Apr 2012 20:34:48 -0000 2.144.2.4 @@ -37,7 +37,25 @@ #include "debug.h" #ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + GENfree(unsigned int *) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + #endif /* __cplusplus */ /*@unchecked@*/ /*@only@*/ /*@null@*/ @@ -313,17 +331,26 @@ /*@notreached@*/ break; case RPMCLI_POPT_NODIGEST: rpmcliQueryFlags = (rpmQueryFlags)(rpmcliQueryFlags | VERIFY_DIGEST); - pgpDigVSFlags = (pgpVSFlags) (pgpDigVSFlags | _RPMVSF_NODIGESTS); + VSF_SET(pgpDigVSFlags, NOSHA1HEADER); + VSF_SET(pgpDigVSFlags, NOMD5HEADER); + VSF_SET(pgpDigVSFlags, NOSHA1); + VSF_SET(pgpDigVSFlags, NOMD5); + VSF_CLR(pgpDigVSFlags, NEEDPAYLOAD); /* XXX needed? */ break; case RPMCLI_POPT_NOSIGNATURE: rpmcliQueryFlags = (rpmQueryFlags)(rpmcliQueryFlags | VERIFY_SIGNATURE); - pgpDigVSFlags = (pgpVSFlags) (pgpDigVSFlags | _RPMVSF_NOSIGNATURES); + VSF_SET(pgpDigVSFlags, NODSAHEADER); + VSF_SET(pgpDigVSFlags, NORSAHEADER); + VSF_SET(pgpDigVSFlags, NODSA); + VSF_SET(pgpDigVSFlags, NORSA); + VSF_CLR(pgpDigVSFlags, NEEDPAYLOAD); /* XXX needed? */ break; case RPMCLI_POPT_NOHDRCHK: rpmcliQueryFlags = (rpmQueryFlags) (rpmcliQueryFlags | VERIFY_HDRCHK); - pgpDigVSFlags = (pgpVSFlags) (pgpDigVSFlags | RPMVSF_NOHDRCHK); + VSF_SET(pgpDigVSFlags, NOHDRCHK); + VSF_CLR(pgpDigVSFlags, NEEDPAYLOAD); /* XXX needed? */ break; case RPMCLI_POPT_TARGETPLATFORM: @@ . patch -p0 <<'@@ .' Index: rpm/lib/tgi.c ============================================================================ $ cvs diff -u -r2.28.4.1 -r2.28.4.2 tgi.c --- rpm/lib/tgi.c 14 Dec 2010 10:25:13 -0000 2.28.4.1 +++ rpm/lib/tgi.c 25 Apr 2012 20:34:48 -0000 2.28.4.2 @@ -19,6 +19,26 @@ #include "debug.h" +#ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + static const char * gitagstr = NULL; static const char * gikeystr = NULL; static rpmtransFlags transFlags = 0; @@ -180,13 +200,25 @@ (void) rpmtsSetFlags(ts, transFlags); (void) rpmtsSetDFlags(ts, depFlags); - vsflags = rpmExpandNumeric("%{?_vsflags_query}"); - if (rpmcliQueryFlags & VERIFY_DIGEST) - vsflags |= _RPMVSF_NODIGESTS; - if (rpmcliQueryFlags & VERIFY_SIGNATURE) - vsflags |= _RPMVSF_NOSIGNATURES; - if (rpmcliQueryFlags & VERIFY_HDRCHK) - vsflags |= RPMVSF_NOHDRCHK; + vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_query}"); + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + if (!QVA_ISSET(rpmcliQueryFlags, DIGEST)) { + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + } + if (!QVA_ISSET(rpmcliQueryFlags, SIGNATURE)) { + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + } + if (!QVA_ISSET(rpmcliQueryFlags, HDRCHK)) { + VSF_SET(vsflags, NOHDRCHK); + } + VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */ + (void) rpmtsSetVSFlags(ts, vsflags); gi = rpmgiNew(ts, gitag, gikeystr, 0); @@ . patch -p0 <<'@@ .' Index: rpm/lib/transaction.c ============================================================================ $ cvs diff -u -r1.429.2.8 -r1.429.2.9 transaction.c --- rpm/lib/transaction.c 15 Apr 2012 21:20:58 -0000 1.429.2.8 +++ rpm/lib/transaction.c 25 Apr 2012 20:34:48 -0000 1.429.2.9 @@ -68,6 +68,30 @@ /*@access IDTX @*/ /*@access FD_t @*/ +#ifdef __cplusplus + +#define FF_ISSET(_fflags, _FLAG) ((_fflags) & (RPMFILE_##_FLAG)) + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define FF_ISSET(_fflags, _FLAG) ((_fflags) & (RPMFILE_##_FLAG)) + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + static int handleInstInstalledFile(const rpmts ts, rpmte p, rpmfi fi, Header otherHeader, rpmfi otherFi, int beingRemoved) @@ -2000,11 +2024,20 @@ */ { rpmVSFlags vsflags = rpmExpandNumeric("%{?_vsflags_erase}"); - vsflags = 0; /* XXX FIXME: ignore default disablers. */ - vsflags |= _RPMVSF_NODIGESTS; - vsflags |= _RPMVSF_NOSIGNATURES; - vsflags |= RPMVSF_NOHDRCHK; - vsflags |= RPMVSF_NEEDPAYLOAD; + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + /* --nodigest */ + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + /* --nosignature */ + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + /* --nohdrchk */ + VSF_SET(vsflags, NOHDRCHK); + VSF_SET(vsflags, NEEDPAYLOAD); /* XXX needed? */ xx = rpmtsSetVSFlags(rbts, vsflags); } @@ . patch -p0 <<'@@ .' Index: rpm/perl/RPM_Header.xs ============================================================================ $ cvs diff -u -r1.25 -r1.25.6.1 RPM_Header.xs --- rpm/perl/RPM_Header.xs 26 Mar 2009 18:07:32 -0000 1.25 +++ rpm/perl/RPM_Header.xs 25 Apr 2012 20:34:49 -0000 1.25.6.1 @@ -30,6 +30,22 @@ #include "rpmcli.h" +#ifdef __cplusplus + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + #include "rpmxs.h" MODULE = RPM::Header PACKAGE = RPM::Header @@ -89,12 +105,16 @@ SV * sv_vsflags PREINIT: rpmts ts = rpmtsCreate(); - rpmVSFlags vsflags = RPMVSF_DEFAULT; + rpmVSFlags vsflags = (rpmVSFlags) 0; PPCODE: - if (sv_vsflags == NULL) /* Nothing has been passed, default is no signature */ - vsflags |= _RPMVSF_NOSIGNATURES; - else - vsflags = sv2constant(sv_vsflags, "rpmvsflags"); + if (sv_vsflags == NULL) { /* Nothing has been passed, default is no signature */ + /* --nosignatures */ + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + } else + vsflags = (rpmVSFlags) sv2constant(sv_vsflags, "rpmvsflags"); rpmtsSetVSFlags(ts, vsflags); _rpm2header(ts, filename, 0); SPAGAIN; @@ . patch -p0 <<'@@ .' Index: rpm/python/rpmmodule.c ============================================================================ $ cvs diff -u -r1.180.2.2 -r1.180.2.3 rpmmodule.c --- rpm/python/rpmmodule.c 1 Feb 2012 13:06:25 -0000 1.180.2.2 +++ rpm/python/rpmmodule.c 25 Apr 2012 20:34:49 -0000 1.180.2.3 @@ -601,8 +601,6 @@ REGISTER_ENUM(RPMVSF_NOMD5); REGISTER_ENUM(RPMVSF_NODSA); REGISTER_ENUM(RPMVSF_NORSA); - REGISTER_ENUM(_RPMVSF_NODIGESTS); - REGISTER_ENUM(_RPMVSF_NOSIGNATURES); REGISTER_ENUM(_RPMVSF_NOHEADER); REGISTER_ENUM(_RPMVSF_NOPAYLOAD); @@ . patch -p0 <<'@@ .' Index: rpm/python/rpmts-py.c ============================================================================ $ cvs diff -u -r1.111.2.1 -r1.111.2.2 rpmts-py.c --- rpm/python/rpmts-py.c 1 Feb 2012 13:06:25 -0000 1.111.2.1 +++ rpm/python/rpmts-py.c 25 Apr 2012 20:34:49 -0000 1.111.2.2 @@ -71,10 +71,6 @@ * - rpm.RPMVSF_NODSA if set, don't check header+payload DSA signature * - rpm.RPMVSF_NORSA if set, don't check header+payload RSA signature * - * For convenience, there are the following masks: - * - rpm._RPMVSF_NODIGESTS if set, don't check digest(s). - * - rpm._RPMVSF_NOSIGNATURES if set, don't check signature(s). - * * A rpm.ts object has the following methods: * * - addInstall(hdr,data,mode) Add an install element to a transaction set. @@ -1502,8 +1498,7 @@ rpm.RPMVSF_NOMD5 if set, don't check header+payload MD5 digest\n\ rpm.RPMVSF_NODSA if set, don't check header+payload DSA signature\n\ rpm.RPMVSF_NORSA if set, don't check header+payload RSA signature\n\ - rpm._RPMVSF_NODIGESTS if set, don't check digest(s)\n\ - rpm._RPMVSF_NOSIGNATURES if set, don't check signature(s)\n" }, +" }, {"setColor",(PyCFunction) rpmts_SetColor, METH_VARARGS|METH_KEYWORDS, NULL }, {"pgpPrtPkts", (PyCFunction) rpmts_PgpPrtPkts, METH_VARARGS|METH_KEYWORDS, @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/tagname.c ============================================================================ $ cvs diff -u -r1.34.2.5 -r1.34.2.6 tagname.c --- rpm/rpmdb/tagname.c 16 Apr 2012 23:43:35 -0000 1.34.2.5 +++ rpm/rpmdb/tagname.c 25 Apr 2012 20:34:49 -0000 1.34.2.6 @@ -488,6 +488,7 @@ * Validate that implicit and explicit types are identical. * @param he tag container */ +void tagTypeValidate(HE_t he); void tagTypeValidate(HE_t he) { /* XXX Re-map RPM_I18NSTRING_TYPE -> RPM_STRING_TYPE */ @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmiotypes.h ============================================================================ $ cvs diff -u -r1.47.2.8 -r1.47.2.9 rpmiotypes.h --- rpm/rpmio/rpmiotypes.h 16 Apr 2012 20:53:33 -0000 1.47.2.8 +++ rpm/rpmio/rpmiotypes.h 25 Apr 2012 20:34:49 -0000 1.47.2.9 @@ -114,18 +114,6 @@ /* bit(s) 20-31 unused */ } pgpVSFlags; -#define _RPMVSF_NODIGESTS \ - ( RPMVSF_NOSHA1HEADER | \ - RPMVSF_NOMD5HEADER | \ - RPMVSF_NOSHA1 | \ - RPMVSF_NOMD5 ) - -#define _RPMVSF_NOSIGNATURES \ - ( RPMVSF_NODSAHEADER | \ - RPMVSF_NORSAHEADER | \ - RPMVSF_NODSA | \ - RPMVSF_NORSA ) - #define _RPMVSF_NOHEADER \ ( RPMVSF_NOSHA1HEADER | \ RPMVSF_NOMD5HEADER | \ @@ . patch -p0 <<'@@ .' Index: rpm/rpmqv.c ============================================================================ $ cvs diff -u -r1.167.4.4 -r1.167.4.5 rpmqv.c --- rpm/rpmqv.c 30 Mar 2011 14:25:39 -0000 1.167.4.4 +++ rpm/rpmqv.c 25 Apr 2012 20:34:47 -0000 1.167.4.5 @@ -56,6 +56,27 @@ #include "debug.h" + +#ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + enum modes { MODE_UNKNOWN = 0, @@ -748,12 +769,28 @@ switch (bigMode) { #ifdef IAM_RPMDB case MODE_REBUILDDB: - { rpmVSFlags vsflags = rpmExpandNumeric("%{_vsflags_rebuilddb}"); + { rpmVSFlags vsflags; rpmVSFlags ovsflags; - if (rpmcliQueryFlags & VERIFY_DIGEST) - vsflags |= _RPMVSF_NODIGESTS; - if (rpmcliQueryFlags & VERIFY_SIGNATURE) - vsflags |= _RPMVSF_NOSIGNATURES; + + vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_rebuilddb}"); + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + if (!QVA_ISSET(rpmcliQueryFlags, DIGEST)) { + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + } + if (!QVA_ISSET(rpmcliQueryFlags, SIGNATURE)) { + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + } + if (!QVA_ISSET(rpmcliQueryFlags, HDRCHK)) { + VSF_SET(vsflags, NOHDRCHK); + } + VSF_CLR(vsflags, NEEDPAYLOAD); + ovsflags = rpmtsSetVSFlags(ts, vsflags); ec = rpmtsRebuildDB(ts); vsflags = rpmtsSetVSFlags(ts, ovsflags); @@ . patch -p0 <<'@@ .' Index: rpm/tools/dbconvert.c ============================================================================ $ cvs diff -u -r2.1.2.12 -r2.1.2.13 dbconvert.c --- rpm/tools/dbconvert.c 22 Feb 2012 00:24:55 -0000 2.1.2.12 +++ rpm/tools/dbconvert.c 25 Apr 2012 20:34:50 -0000 2.1.2.13 @@ -1,6 +1,21 @@ #include "system.h" +#ifdef HAVE_SYS_ENDIAN_H +#include <sys/endian.h> +#endif +#ifdef __APPLE__ +#include <libkern/OSByteOrder.h> + +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#endif /* __APPLE__ */ +#if BYTE_ORDER == LITTLE_ENDIAN +#define bswap32(x) htobe32(x) +#elif BYTE_ORDER == BIG_ENDIAN +#define bswap32(x) htole32(x) +#endif + #include <poptIO.h> #include <rpmio.h> @@ -17,20 +32,25 @@ #include "debug.h" -#ifdef HAVE_SYS_ENDIAN_H -#include <sys/endian.h> -#endif -#ifdef __APPLE__ -#include <libkern/OSByteOrder.h> +#ifdef __cplusplus -#define htobe32(x) OSSwapHostToBigInt32(x) -#define htole32(x) OSSwapHostToLittleInt32(x) -#endif /* __APPLE__ */ -#if BYTE_ORDER == LITTLE_ENDIAN -#define bswap32(x) htobe32(x) -#elif BYTE_ORDER == BIG_ENDIAN -#define bswap32(x) htole32(x) -#endif +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ static int disable_fsync(int arg) { return 0; @@ -203,8 +223,22 @@ xx = rpmtsCloseDB(tsCur); rpmVSFlags vsflags = rpmExpandNumeric("%{_vsflags_rebuilddb}"); - vsflags = 0; /* XXX FIXME: ignore default disablers. */ - vsflags |= _RPMVSF_NODIGESTS | _RPMVSF_NOSIGNATURES; + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + /* XXX FIXME: hotwire --nodigest/--nosignature for now */ + /* --nodigest */ + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + /* --nosignature */ + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + /* --nohdrchk */ + VSF_SET(vsflags, NOHDRCHK); + VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */ + rpmtsSetVSFlags(tsNew, vsflags); { @@ . patch -p0 <<'@@ .' Index: rpm/tools/rpm2cpio.c ============================================================================ $ cvs diff -u -r2.11 -r2.11.2.1 rpm2cpio.c --- rpm/tools/rpm2cpio.c 24 Apr 2010 11:57:10 -0000 2.11 +++ rpm/tools/rpm2cpio.c 25 Apr 2012 20:34:50 -0000 2.11.2.1 @@ -14,6 +14,26 @@ #include "debug.h" +#ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + int main(int argc, char **argv) { FD_t fdi, fdo; @@ -43,12 +63,26 @@ fdo = fdDup(STDOUT_FILENO); { rpmts ts = rpmtsCreate(); - rpmVSFlags vsflags = 0; + rpmVSFlags vsflags; /* XXX retain the ageless behavior of rpm2cpio */ - vsflags |= _RPMVSF_NODIGESTS; - vsflags |= _RPMVSF_NOSIGNATURES; - vsflags |= RPMVSF_NOHDRCHK; + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + /* --nodigests */ + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + + /* --nosignature */ + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + + /* --nohdrchk */ + VSF_SET(vsflags, NOHDRCHK); + + VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */ (void) rpmtsSetVSFlags(ts, vsflags); /*@-mustmod@*/ /* LCL: segfault */ @@ . patch -p0 <<'@@ .' Index: rpm/tools/rpmcache.c ============================================================================ $ cvs diff -u -r2.41 -r2.41.4.1 rpmcache.c --- rpm/tools/rpmcache.c 4 Oct 2009 22:40:43 -0000 2.41 +++ rpm/tools/rpmcache.c 25 Apr 2012 20:34:50 -0000 2.41.4.1 @@ -27,6 +27,27 @@ #include "debug.h" + +#ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + static int _debug = 0; /* XXX should be flag in ts */ @@ -523,9 +544,10 @@ ftsSet = _free(ftsSet); } -static rpmVSFlags vsflags = 0; +static rpmVSFlags vsflags = (rpmVSFlags) 0; static struct poptOption optionsTable[] = { + /* XXX FIXME: --nolegacy looks bogus */ { "nolegacy", '\0', POPT_BIT_SET, &vsflags, RPMVSF_NEEDPAYLOAD, N_("don't verify header+payload signature"), NULL }, @@ -578,12 +600,22 @@ ts = rpmtsCreate(); - if (rpmcliQueryFlags & VERIFY_DIGEST) - vsflags |= _RPMVSF_NODIGESTS; - if (rpmcliQueryFlags & VERIFY_SIGNATURE) - vsflags |= _RPMVSF_NOSIGNATURES; - if (rpmcliQueryFlags & VERIFY_HDRCHK) - vsflags |= RPMVSF_NOHDRCHK; + if (!QVA_ISSET(rpmcliQueryFlags, DIGEST)) { + VSF_SET(vsflags, NOSHA1HEADER); + VSF_SET(vsflags, NOMD5HEADER); + VSF_SET(vsflags, NOSHA1); + VSF_SET(vsflags, NOMD5); + } + if (!QVA_ISSET(rpmcliQueryFlags, SIGNATURE)) { + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + } + if (!QVA_ISSET(rpmcliQueryFlags, HDRCHK)) { + VSF_SET(vsflags, NOHDRCHK); + } + VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */ (void) rpmtsSetVSFlags(ts, vsflags); { uint32_t tid = (uint32_t) time(NULL); @@ . patch -p0 <<'@@ .' Index: rpm/tools/rpmrepo.c ============================================================================ $ cvs diff -u -r2.32.2.1 -r2.32.2.2 rpmrepo.c --- rpm/tools/rpmrepo.c 5 Sep 2011 23:08:22 -0000 2.32.2.1 +++ rpm/tools/rpmrepo.c 25 Apr 2012 20:34:50 -0000 2.32.2.2 @@ -60,6 +60,26 @@ #include "debug.h" +#ifdef __cplusplus + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG)) +#define VSF_CLR(_vsflags, _FLAG) \ + (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG)) + +#else /* __cplusplus */ + +#define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) + +#define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG)) +#define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG) +#define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG) + +#endif /* __cplusplus */ + /*==============================================================*/ int @@ -139,11 +159,18 @@ /* XXX enable --stats using transaction set. */ { rpmts ts = repo->_ts; + rpmVSFlags vsflags; _rpmts_stats = _rpmsw_stats; repo->_ts = ts = rpmtsCreate(); /* XXX todo wire up usual rpm CLI options. hotwire --nosignature for now */ - (void) rpmtsSetVSFlags(ts, _RPMVSF_NOSIGNATURES); + vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */ + VSF_SET(vsflags, NODSAHEADER); + VSF_SET(vsflags, NORSAHEADER); + VSF_SET(vsflags, NODSA); + VSF_SET(vsflags, NORSA); + VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */ + (void) rpmtsSetVSFlags(ts, vsflags); } rc = rpmrepoTestSetupDirs(repo); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org