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

Reply via email to