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: 13-Aug-2014 18:40:13 Branch: rpm-5_4 Handle: 2014081316401200 Modified files: (Branch: rpm-5_4) rpm rpmqv.c Log: - c++: fix: remove strict alias warnings to actually set bit flags. Summary: Revision Changes Path 1.167.4.11 +48 -32 rpm/rpmqv.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmqv.c ============================================================================ $ cvs diff -u -r1.167.4.10 -r1.167.4.11 rpmqv.c --- rpm/rpmqv.c 4 Sep 2013 15:32:32 -0000 1.167.4.10 +++ rpm/rpmqv.c 13 Aug 2014 16:40:12 -0000 1.167.4.11 @@ -60,34 +60,54 @@ #ifdef __cplusplus #define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG)) -#define QVA_SET(_qvaflags, _FLAG) \ - (*((unsigned *)&(_qvaflags)) |= (VERIFY_##_FLAG)) -#define QVA_CLR(_qvaflags, _FLAG) \ - (*((unsigned *)&(_qvaflags)) &= ~(VERIFY_##_FLAG)) +#define QVA_SET(_qvaflags, _FLAG) { \ + unsigned ui = (unsigned)(_qvaflags); ui |= (VERIFY_##_FLAG); \ + (_qvaflags) = (rpmVerifyFlags) ui; \ + } +#define QVA_CLR(_qvaflags, _FLAG) { \ + unsigned ui = (unsigned)(_qvaflags); ui &= ~(VERIFY_##_FLAG); \ + (_qvaflags) = (rpmVerifyFlags) ui; \ + } #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)) +#define VSF_SET(_vsflags, _FLAG) { \ + unsigned ui = (unsigned)(_vsflags); ui |= (RPMVSF_##_FLAG); \ + (_vsflags) = (pgpVSFlags) ui; \ + } +#define VSF_CLR(_vsflags, _FLAG) { \ + unsigned ui = (unsigned)(_vsflags); ui &= ~(RPMVSF_##_FLAG); \ + (_vsflags) = (pgpVSFlags) ui; \ + } #define TSF_ISSET(_tsflags, _FLAG) ((_tsflags) & (RPMTRANS_FLAG_##_FLAG)) -#define TSF_SET(_tsflags, _FLAG) \ - (*((unsigned *)&(_tsflags)) |= (RPMTRANS_FLAG_##_FLAG)) -#define TSF_CLR(_tsflags, _FLAG) \ - (*((unsigned *)&(_tsflags)) &= ~(RPMTRANS_FLAG_##_FLAG)) +#define TSF_SET(_tsflags, _FLAG) { \ + unsigned ui = (unsigned)(_tsflags); ui |= (RPMTRANS_FLAG_##_FLAG); \ + (_tsflags) = (rpmtransFlags) ui; \ + } +#define TSF_CLR(_tsflags, _FLAG) { \ + unsigned ui = (unsigned)(_tsflags); ui &= ~(RPMTRANS_FLAG_##_FLAG); \ + (_tsflags) = (rpmtransFlags) ui; \ + } #define IIF_ISSET(_iflags, _FLAG) ((_iflags) & (INSTALL_##_FLAG)) -#define IIF_SET(_iflags, _FLAG) \ - (*((unsigned *)&(_iflags)) |= (INSTALL_##_FLAG)) -#define IIF_CLR(_iflags, _FLAG) \ - (*((unsigned *)&(_iflags)) &= ~(INSTALL_##_FLAG)) +#define IIF_SET(_iflags, _FLAG) { \ + unsigned ui = (unsigned)(_iflags); ui |= (INSTALL_##_FLAG); \ + (_iflags) = (rpmInstallInterfaceFlags) ui; \ + } +#define IIF_CLR(_iflags, _FLAG) { \ + unsigned ui = (unsigned)(_iflags); ui &= ~(INSTALL_##_FLAG); \ + (_iflags) = (rpmInstallInterfaceFlags) ui; \ + } #define PFF_ISSET(_pfflags, _FLAG) ((_pfflags) & (RPMPROB_FILTER_##_FLAG)) -#define PFF_SET(_pfflags, _FLAG) \ - (*((unsigned *)&(_pfflags)) |= (RPMPROB_FILTER_##_FLAG)) -#define PFF_CLR(_pfflags, _FLAG) \ - (*((unsigned *)&(_pfflags)) &= ~(RPMPROB_FILTER_##_FLAG)) +#define PFF_SET(_pfflags, _FLAG) { \ + unsigned ui = (unsigned)(_pfflags); ui |= (RPMPROB_FILTER_##_FLAG); \ + (_pfflags) = (rpmprobFilterFlags) ui; \ + } +#define PFF_CLR(_pfflags, _FLAG) { \ + unsigned ui = (unsigned)(_pfflags); ui &= ~(RPMPROB_FILTER_##_FLAG); \ + (_pfflags) = (rpmprobFilterFlags) ui; \ + } #else /* __cplusplus */ @@ -1044,14 +1064,12 @@ case MODE_VERIFY: { rpmVerifyFlags vflags = (rpmVerifyFlags) ~RPMVERIFY_NONE; + unsigned ui; qva->depFlags = (rpmdepFlags) global_depFlags; -#ifdef __cplusplus - *((unsigned *)&vflags) &= ~qva->qva_flags; -#else - vflags &= ~qva->qva_flags; -#endif - qva->qva_flags = (rpmQueryFlags) vflags; + ui = (unsigned) vflags; + ui &= ~((unsigned)qva->qva_flags); + qva->qva_flags = (rpmQueryFlags) ui; if (!poptPeekArg(optCon) && !(qva->qva_source == RPMQV_ALL || qva->qva_source == RPMQV_HDLIST)) @@ -1063,17 +1081,15 @@ #ifdef IAM_RPMK case MODE_CHECKSIG: { rpmVerifyFlags vflags = (rpmVerifyFlags) 0; + unsigned ui; QVA_SET(vflags, FDIGEST); QVA_SET(vflags, HDRCHK); QVA_SET(vflags, DIGEST); QVA_SET(vflags, SIGNATURE); -#ifdef __cplusplus - *((unsigned *)&vflags) &= ~ka->qva_flags; -#else - vflags &= ~ka->qva_flags; -#endif - ka->qva_flags = (rpmQueryFlags) vflags; + ui = (unsigned) vflags; + ui &= ~((unsigned)ka->qva_flags); + ka->qva_flags = (rpmQueryFlags) ui; } /*@fallthrough@*/ case MODE_RESIGN: if (!poptPeekArg(optCon)) @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org