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-Jun-2016 09:31:09
  Branch: rpm-5_4                          Handle: 2014092715512455006784

  Added files:              (Branch: rpm-5_4)
    rpm/rpmio               rpmdefs.h
  Modified files:           (Branch: rpm-5_4)
    rpm                     CHANGES
    rpm/rpmio               Makefile.am ar.h argv.h bson.c bson.h echo.c
                            edon-r.c lane.c luffa.c microjson.c mire.h rpmbf.h
                            rpmdav.c rpmio.h rpmiotypes.h rpmlog.h rpmmacro.h
                            rpmpgp.c rpmpgp.h rpmsw.h rpmzlog.h tib3.c tjsmn.c
                            tjson.c url.c yarn.h
  Removed files:            (Branch: rpm-5_4)
    rpm/rpmio               rpmutil.h

  Log:
    - rpmio: sanitize public includes (with iwyu).
    - rpmio: rename rpmutil.h -> rpmdefs.h.

  Summary:
    Revision    Changes     Path
    1.3501.2.499+2  -0      rpm/CHANGES
    1.293.2.73  +27 -8      rpm/rpmio/Makefile.am
    1.5.8.2     +1  -0      rpm/rpmio/ar.h
    1.17.4.5    +28 -62     rpm/rpmio/argv.h
    2.4.4.20    +9  -8      rpm/rpmio/bson.c
    2.3.4.17    +1  -1      rpm/rpmio/bson.h
    2.1.4.4     +1  -1      rpm/rpmio/echo.c
    1.5.4.4     +1  -1      rpm/rpmio/edon-r.c
    2.7.2.4     +1  -1      rpm/rpmio/lane.c
    2.6.2.5     +1  -1      rpm/rpmio/luffa.c
    1.1.2.4     +1  -1      rpm/rpmio/microjson.c
    1.32.4.3    +24 -93     rpm/rpmio/mire.h
    2.8.4.4     +13 -39     rpm/rpmio/rpmbf.h
    2.119.2.20  +1  -0      rpm/rpmio/rpmdav.c
    1.1.2.1     +159 -0     rpm/rpmio/rpmdefs.h
    1.97.2.7    +119 -339   rpm/rpmio/rpmio.h
    1.47.2.21   +62 -126    rpm/rpmio/rpmiotypes.h
    2.24.4.5    +23 -63     rpm/rpmio/rpmlog.h
    2.56.4.9    +31 -90     rpm/rpmio/rpmmacro.h
    2.127.2.21  +2  -0      rpm/rpmio/rpmpgp.c
    2.108.2.19  +99 -282    rpm/rpmio/rpmpgp.h
    2.12.4.4    +12 -30     rpm/rpmio/rpmsw.h
    1.1         +0  -159    rpm/rpmio/rpmutil.h
    2.5.6.3     +10 -28     rpm/rpmio/rpmzlog.h
    2.3.4.2     +1  -1      rpm/rpmio/tib3.c
    1.1.2.5     +1  -1      rpm/rpmio/tjsmn.c
    1.1.2.2     +1  -1      rpm/rpmio/tjson.c
    1.73.4.13   +1  -0      rpm/rpmio/url.c
    2.4.2.4     +33 -53     rpm/rpmio/yarn.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3501.2.498 -r1.3501.2.499 CHANGES
  --- rpm/CHANGES       24 Jun 2016 19:10:10 -0000      1.3501.2.498
  +++ rpm/CHANGES       25 Jun 2016 07:31:07 -0000      1.3501.2.499
  @@ -1,4 +1,6 @@
   5.4.17 -> 5.4.18:
  +    - jbj: rpmio: sanitize public includes (with iwyu).
  +    - jbj: rpmio: rename rpmutil.h -> rpmdefs.h.
       - jbj: mongoc: disable ctor/dtor automation.
       - jbj: selinux: use rpm_execcon only if available.
       - jbj: use poptArgvFree to avoid memory leaks.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.293.2.72 -r1.293.2.73 Makefile.am
  --- rpm/rpmio/Makefile.am     19 Jun 2016 08:53:47 -0000      1.293.2.72
  +++ rpm/rpmio/Makefile.am     25 Jun 2016 07:31:07 -0000      1.293.2.73
  @@ -123,9 +123,21 @@
   luaLPATHdir =        ${pkgsharedir)/lua
   
   pkgincdir = $(pkgincludedir)$(WITH_PATH_VERSIONED_SUFFIX)
  -pkginc_HEADERS = argv.h mire.h rpmzlog.h yarn.h \
  -     rpmbf.h rpmcb.h rpmio.h rpmlog.h rpmiotypes.h rpmmacro.h \
  -     rpmpgp.h rpmsw.h rpmutil.h
  +pkginc_HEADERS = \
  +     argv.h \
  +     mire.h \
  +     rpmbf.h \
  +     rpmcb.h \
  +     rpmdefs.h \
  +     rpmio.h \
  +     rpmiotypes.h \
  +     rpmlog.h \
  +     rpmmacro.h \
  +     rpmpgp.h \
  +     rpmsw.h \
  +     rpmzlog.h \
  +     yarn.h
  +
   noinst_HEADERS = \
        ar.h bcon.h bson.h cpio.h crc.h envvar.h fts.h iosm.h \
        blake2.h blake2-impl.h blake2-rpm.h blake2-kat.h \
  @@ -141,7 +153,7 @@
        rpmku.h rpmltc.h rpmlua.h rpmmg.h rpmmqtt.h rpmmrb.h rpmnix.h rpmnss.h \
        rpmodbc.h rpmperl.h rpmpgp.h rpmpython.h rpmruby.h rpmsed.h rpmsm.h 
rpmsp.h \
        rpmsq.h rpmsql.h rpmsquirrel.h rpmssl.h rpmsvn.h rpmsw.h rpmsx.h 
rpmsyck.h \
  -     rpmtcl.h rpmtpm.h rpmurl.h rpmutil.h rpmuuid.h rpmxar.h rpmz.h rpmzq.h \
  +     rpmtcl.h rpmtpm.h rpmurl.h rpmuuid.h rpmxar.h rpmz.h rpmzq.h \
        set.h tar.h ugid.h yajl.h rpmio-stub.h
   
   usrlibdir = $(libdir)
  @@ -345,10 +357,6 @@
   lint:
        $(LINT) $(DEFS) $(INCLUDES) $(librpmio_la_SOURCES)
   
  -.PHONY:        mccabe
  -mccabe:
  -     $(MCCABE) $(librpmio_la_SOURCES) | sort -n -r | head -n 20
  -
   .PHONY:      lint_rpmcpio
   lint_rpmcpio:
        $(LINT) -f .splintrc_rpmcpio $(DEFS) $(INCLUDES) rpmcpio.c
  @@ -365,6 +373,10 @@
   lint_rpmtar:
        $(LINT) -f .splintrc_rpmtar $(DEFS) $(INCLUDES) rpmtar.c
   
  +.PHONY:        mccabe
  +mccabe:
  +     $(MCCABE) $(librpmio_la_SOURCES) | sort -n -r | head -n 20
  +
   .PHONY:      lcov-reset      # run lcov from scratch, always
   lcov-reset:
        make lcov-run
  @@ -414,6 +426,13 @@
   cppcheck:
        $(CPPCHECK) $(AM_CPPFLAGS) $(librpmio_la_SOURCES)
   
  +.PHONY: iwyu
  +iwyu:
  +     @for INC in $(pkginc_HEADERS); do \
  +       echo "----- $${INC}"; \
  +       iwyu $(AM_CPPFLAGS) $${INC}; \
  +     done || :
  +
   #TESTS += RunGrepTest
   #dist_noinst_SCRIPTS += RunGrepTest
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/ar.h
  ============================================================================
  $ cvs diff -u -r1.5.8.1 -r1.5.8.2 ar.h
  --- rpm/rpmio/ar.h    27 Sep 2014 15:51:21 -0000      1.5.8.1
  +++ rpm/rpmio/ar.h    25 Jun 2016 07:31:07 -0000      1.5.8.2
  @@ -34,6 +34,7 @@
   extern "C" {
   #endif
   
  +struct stat;
   /**
    * Read ar(1) header.
    * @retval _iosm     file path and stat info
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/argv.h
  ============================================================================
  $ cvs diff -u -r1.17.4.4 -r1.17.4.5 argv.h
  --- rpm/rpmio/argv.h  27 Sep 2014 15:51:21 -0000      1.17.4.4
  +++ rpm/rpmio/argv.h  25 Jun 2016 07:31:07 -0000      1.17.4.5
  @@ -6,6 +6,8 @@
    */
   #include <stdio.h>
   
  +#include <rpmdefs.h>
  +
   typedef      const char * ARGstr_t;
   typedef ARGstr_t * ARGV_t;
   
  @@ -27,66 +29,53 @@
    * @param argv               argv array
    * @param fp         output file handle (NULL uses stderr)
    */
  -void argvPrint(/*@null@*/ const char * msg, /*@null@*/ ARGV_t argv,
  -             /*@null@*/ FILE * fp)
  -     /*@globals fileSystem @*/
  -     /*@modifies *fp, fileSystem @*/;
  +void argvPrint(const char * msg, ARGV_t argv, FILE * fp);
   
   /**
    * Destroy an argi array.
    * @param argi               argi array
    * @return           NULL always
    */
  -/*@null@*/
  -ARGI_t argiFree(/*@only@*/ /*@null@*/ ARGI_t argi)
  -     /*@modifies argi @*/;
  +ARGI_t argiFree(ARGI_t argi);
   
   /**
    * Destroy an argv array.
    * @param argv               argv array
    * @return           NULL always
    */
  -/*@null@*/
  -ARGV_t argvFree(/*@only@*/ /*@null@*/ ARGV_t argv)
  -     /*@modifies argv @*/;
  +ARGV_t argvFree(ARGV_t argv);
   
   /**
    * Return no. of elements in argi array.
    * @param argi               argi array
    * @return           no. of elements
    */
  -int argiCount(/*@null@*/ const ARGI_t argi)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +int argiCount(const ARGI_t argi)
  +     RPM_GNUC_PURE;
   
   /**
    * Return data from argi array.
    * @param argi               argi array
    * @return           argi array data address
    */
  -/*@null@*/
  -ARGint_t argiData(/*@null@*/ ARGI_t argi)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +ARGint_t argiData(ARGI_t argi)
  +     RPM_GNUC_PURE;
   
   /**
    * Return no. of elements in argv array.
    * @param argv               argv array
    * @return           no. of elements
    */
  -int argvCount(/*@null@*/ ARGV_t argv)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +int argvCount(ARGV_t argv)
  +     RPM_GNUC_PURE;
   
   /**
    * Return data from argv array.
    * @param argv               argv array
    * @return           argv array data address
    */
  -/*@null@*/
  -ARGV_t argvData(/*@null@*/ ARGV_t argv)
  -     RPM_GNUC_CONST
  -     /*@*/;
  +ARGV_t argvData(ARGV_t argv)
  +     RPM_GNUC_CONST;
   
   /**
    * Compare argi elements (qsort/bsearch).
  @@ -94,11 +83,8 @@
    * @param b          2nd instance address
    * @return           result of comparison
    */
  -/*@-exportlocal@*/
   int argiCmp(ARGint_t * a, ARGint_t * b)
  -     RPM_GNUC_PURE
  -     /*@*/;
  -/*@=exportlocal@*/
  +     RPM_GNUC_PURE;
   
   /**
    * Compare argv elements using strcmp (qsort/bsearch).
  @@ -106,11 +92,8 @@
    * @param b          2nd instance address
    * @return           result of comparison
    */
  -/*@-exportlocal@*/
   int argvCmp(ARGstr_t * a, ARGstr_t * b)
  -     RPM_GNUC_PURE
  -     /*@*/;
  -/*@=exportlocal@*/
  +     RPM_GNUC_PURE;
   
   /**
    * Compare argv elements using strcasecmp (qsort/bsearch).
  @@ -119,8 +102,7 @@
    * @return           result of comparison
    */
   int argvStrcasecmp(ARGstr_t * a, ARGstr_t * b)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   #if defined(RPM_VENDOR_OPENPKG) /* wildcard-matching-arbitrary-tagnames */
   /**
  @@ -129,8 +111,7 @@
    * @param b          2nd instance address
    * @return           result of comparison
    */
  -int argvFnmatch(ARGstr_t * a, ARGstr_t * b)
  -     /*@*/;
  +int argvFnmatch(ARGstr_t * a, ARGstr_t * b);
   
   /**
    * Wildcard-match argv arrays using fnmatch (case-insensitive).
  @@ -138,8 +119,7 @@
    * @param b          2nd instance address
    * @return           result of comparison
    */
  -int argvFnmatchCasefold(ARGstr_t * a, ARGstr_t * b)
  -     /*@*/;
  +int argvFnmatchCasefold(ARGstr_t * a, ARGstr_t * b);
   #endif
   
   /**
  @@ -148,8 +128,7 @@
    * @param compar     strcmp-like comparison function, or NULL for argiCmp()
    * @return           0 always
    */
  -int argiSort(ARGI_t argi, int (*compar)(ARGint_t *, ARGint_t *))
  -     /*@*/;
  +int argiSort(ARGI_t argi, int (*compar)(ARGint_t *, ARGint_t *));
   
   /**
    * Sort an argv array.
  @@ -157,8 +136,7 @@
    * @param compar     strcmp-like comparison function, or NULL for argvCmp()
    * @return           0 always
    */
  -int argvSort(ARGV_t argv, int (*compar)(ARGstr_t *, ARGstr_t *))
  -     /*@modifies *argv @*/;
  +int argvSort(ARGV_t argv, int (*compar)(ARGstr_t *, ARGstr_t *));
   
   /**
    * Find an element in an argv array.
  @@ -168,10 +146,8 @@
    * @param compar     strcmp-like comparison function, or NULL for argvCmp()
    * @return           found string (NULL on failure)
    */
  -/*@dependent@*/ /*@null@*/
   ARGV_t argvSearch(ARGV_t argv, int argc, ARGstr_t val,
  -             int (*compar)(ARGstr_t *, ARGstr_t *))
  -     /*@*/;
  +             int (*compar)(ARGstr_t *, ARGstr_t *));
   
   #if defined(RPM_VENDOR_OPENPKG) /* wildcard-matching-arbitrary-tagnames */
   /**
  @@ -181,10 +157,8 @@
    * @param compar     strcmp-like comparison function, or NULL for argvCmp()
    * @return           found string (NULL on failure)
    */
  -/*@dependent@*/ /*@null@*/
   ARGV_t argvSearchLinear(ARGV_t argv, ARGstr_t val,
  -             int (*compar)(ARGstr_t *, ARGstr_t *))
  -     /*@*/;
  +             int (*compar)(ARGstr_t *, ARGstr_t *));
   #endif
   
   /**
  @@ -194,8 +168,7 @@
    * @param val                int arg to add
    * @return           0 always
    */
  -int argiAdd(/*@out@*/ ARGI_t * argip, int ix, int val)
  -     /*@modifies *argip @*/;
  +int argiAdd(ARGI_t * argip, int ix, int val);
   
   /**
    * Add a string to an argv array.
  @@ -203,8 +176,7 @@
    * @param val                string arg to append
    * @return           0 always
    */
  -int argvAdd(/*@out@*/ ARGV_t * argvp, ARGstr_t val)
  -     /*@modifies *argvp @*/;
  +int argvAdd(ARGV_t * argvp, ARGstr_t val);
   
   /**
    * Append one argv array to another.
  @@ -212,8 +184,7 @@
    * @param av         argv array to append (NULL does nothing)
    * @return           0 always
    */
  -int argvAppend(/*@out@*/ ARGV_t * argvp, /*@null@*/ ARGV_t av)
  -     /*@modifies *argvp @*/;
  +int argvAppend(ARGV_t * argvp, ARGV_t av);
   
   /**
    * Split a string into an argv array.
  @@ -222,8 +193,7 @@
    * @param seps               separator characters (NULL is C isspace() chars)
    * @return           0 always
    */
  -int argvSplit(ARGV_t * argvp, const char * str, /*@null@*/ const char * seps)
  -     /*@modifies *argvp @*/;
  +int argvSplit(ARGV_t * argvp, const char * str, const char * seps);
   
   /**
    * Concatenate an argv array into a string.
  @@ -231,9 +201,7 @@
    * @param sep                arg separator
    * @return           concatenated string
    */
  -/*@only@*/
  -char * argvJoin(ARGV_t argv, char sep)
  -     /*@*/;
  +char * argvJoin(ARGV_t argv, char sep);
   
   /**
    * Read lines into an argv array.
  @@ -241,9 +209,7 @@
    * @param fd         rpmio FD_t (NULL uses stdin)
    * @return           0 on success
    */
  -int argvFgets(ARGV_t * argvp, void * fd)
  -     /*@globals fileSystem@*/
  -     /*@modifies *argvp, fd, fileSystem @*/;
  +int argvFgets(ARGV_t * argvp, void * fd);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/bson.c
  ============================================================================
  $ cvs diff -u -r2.4.4.19 -r2.4.4.20 bson.c
  --- rpm/rpmio/bson.c  7 May 2016 14:48:51 -0000       2.4.4.19
  +++ rpm/rpmio/bson.c  25 Jun 2016 07:31:07 -0000      2.4.4.20
  @@ -18,9 +18,14 @@
   
   #include "system.h"
   
  +#include <ctype.h>
  +#include <errno.h>
  +#include <fcntl.h>
  +#include <inttypes.h>
   #include <stdarg.h>
  -#include <stddef.h>
  -#include <math.h>
  +#if defined(__linux__)
  +#include <syscall.h>
  +#endif
   
   #ifdef __APPLE__
   # include <mach/clock.h>
  @@ -28,12 +33,8 @@
   # include <mach/mach_time.h>
   #endif
   
  -#if defined(__linux__)
  -#include <sys/syscall.h>
  -#endif
  -
  -#include <yajl.h>
   #include <bson.h>
  +#include <yajl.h>
   
   #include "debug.h"
   
  @@ -8320,7 +8321,7 @@
     gh...@aladdin.com
   
    */
  -/* $Id: bson.c,v 2.4.4.19 2016/05/07 14:48:51 jbj Exp $ */
  +/* $Id: bson.c,v 2.4.4.20 2016/06/25 07:31:07 jbj Exp $ */
   /*
     Independent implementation of MD5 (RFC 1321).
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/bson.h
  ============================================================================
  $ cvs diff -u -r2.3.4.16 -r2.3.4.17 bson.h
  --- rpm/rpmio/bson.h  17 Jun 2016 08:07:27 -0000      2.3.4.16
  +++ rpm/rpmio/bson.h  25 Jun 2016 07:31:08 -0000      2.3.4.17
  @@ -29,7 +29,7 @@
   #include <string.h>
   #include <time.h>
   
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   
   
   #if defined(__clang__)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/echo.c
  ============================================================================
  $ cvs diff -u -r2.1.4.3 -r2.1.4.4 echo.c
  --- rpm/rpmio/echo.c  19 Jun 2016 08:53:47 -0000      2.1.4.3
  +++ rpm/rpmio/echo.c  25 Jun 2016 07:31:08 -0000      2.1.4.4
  @@ -13,7 +13,7 @@
   
*******************************************************************************/
   
   #include "system.h"
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   #include <stdio.h>
   #include "echo.h"
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/edon-r.c
  ============================================================================
  $ cvs diff -u -r1.5.4.3 -r1.5.4.4 edon-r.c
  --- rpm/rpmio/edon-r.c        19 Apr 2016 13:07:45 -0000      1.5.4.3
  +++ rpm/rpmio/edon-r.c        25 Jun 2016 07:31:08 -0000      1.5.4.4
  @@ -1,4 +1,4 @@
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   #if !defined(CLANG_ASAN_COMPILES_SLOWLY)
   /* Reference implementation of tweaked Edon-R */
   #include <string.h> 
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/lane.c
  ============================================================================
  $ cvs diff -u -r2.7.2.3 -r2.7.2.4 lane.c
  --- rpm/rpmio/lane.c  19 Jun 2016 08:53:47 -0000      2.7.2.3
  +++ rpm/rpmio/lane.c  25 Jun 2016 07:31:08 -0000      2.7.2.4
  @@ -1,4 +1,4 @@
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   #if !defined(CLANG_ASAN_COMPILES_SLOWLY)
   
   /* laneref.c   v1.1   October 2008
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/luffa.c
  ============================================================================
  $ cvs diff -u -r2.6.2.4 -r2.6.2.5 luffa.c
  --- rpm/rpmio/luffa.c 19 Jun 2016 08:53:47 -0000      2.6.2.4
  +++ rpm/rpmio/luffa.c 25 Jun 2016 07:31:08 -0000      2.6.2.5
  @@ -1,4 +1,4 @@
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   #if !defined(CLANG_ASAN_COMPILES_SLOWLY)
   
   /*******************************/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/microjson.c
  ============================================================================
  $ cvs diff -u -r1.1.2.3 -r1.1.2.4 microjson.c
  --- rpm/rpmio/microjson.c     17 Jun 2016 08:07:27 -0000      1.1.2.3
  +++ rpm/rpmio/microjson.c     25 Jun 2016 07:31:08 -0000      1.1.2.4
  @@ -11,7 +11,7 @@
   #include <getopt.h>
   #include <math.h>
   
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   
   #include "debug.h"
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/mire.h
  ============================================================================
  $ cvs diff -u -r1.32.4.2 -r1.32.4.3 mire.h
  --- rpm/rpmio/mire.h  27 Sep 2014 15:51:22 -0000      1.32.4.2
  +++ rpm/rpmio/mire.h  25 Jun 2016 07:31:08 -0000      1.32.4.3
  @@ -6,58 +6,40 @@
    * RPM pattern matching.
    */
   
  -#include <rpmiotypes.h>
  +#include <stddef.h>
   
  -/*@-noparams@*/
  -#include <fnmatch.h>
  -/*@=noparams@*/
  -#if defined(__LCLINT__)
  -/*@-declundef -exportheader -redecl @*/ /* LCL: missing annotation */
  -extern int fnmatch (const char *__pattern, const char *__name, int __flags)
  -     /*@*/;
  -/*@=declundef =exportheader =redecl @*/
  -#endif
  +#include <rpmiotypes.h>
   
   /**
    */
  -/*@-exportlocal@*/
  -/*@unchecked@*/
   extern int _mire_debug;
  -/*@=exportlocal@*/
   
  -/*@unchecked@*/ /*@only@*/ /*@null@*/
   extern rpmioPool _mirePool;
   
   /**
    */
  -/*@unchecked@*/ /*@null@*/ /*@shared@*/
   extern const unsigned char * _mirePCREtables;
   
   /** Line ending types */
   typedef enum mireEL_e { EL_LF, EL_CR, EL_CRLF, EL_ANY, EL_ANYCRLF } mireEL_t;
   
  -/*@unchecked@*/
   extern mireEL_t _mireEL;
   
   /** STRING default: 0 */
  -/*@unchecked@*/
   extern int _mireSTRINGoptions;
   
   /** GLOB default: FNM_PATHNAME | FNM_PERIOD */
  -/*@unchecked@*/
   extern int _mireGLOBoptions;
   
   /** REGEX default: REG_EXTENDED */
  -/*@unchecked@*/
   extern int _mireREGEXoptions;
   
   /** PCRE default: 0 */
  -/*@unchecked@*/
   extern int _mirePCREoptions;
   
   /**
    */
  -typedef /*@abstract@*/ /*@refcounted@*/ struct miRE_s * miRE;
  +typedef struct miRE_s * miRE;
   
   /**
    * Tag value pattern match mode.
  @@ -72,13 +54,6 @@
   
   #if defined(_MIRE_INTERNAL)
   
  -#if defined(__LCLINT__)
  -/*@-declundef -exportheader @*/ /* LCL: missing modifies (only is bogus) */
  -extern void regfree (/*@only@*/ regex_t *preg)
  -     /*@modifies *preg @*/;
  -/*@=declundef =exportheader @*/
  -#endif
  -
   #if defined(WITH_PCRE)
   #include <pcre.h>
   #endif
  @@ -93,19 +68,12 @@
   struct miRE_s {
       struct rpmioItem_s _item;        /*!< usage mutex and pool identifier. */
       rpmMireMode      mode;           /*!< pattern match mode */
  -/*@only@*/ /*@relnull@*/
       const char *pattern;     /*!< pattern string */
  -/*@only@*/ /*@relnull@*/
       regex_t *preg;           /*!< regex compiled pattern buffer */
  -/*@only@*/ /*@relnull@*/
       void *pcre;                      /*!< pcre compiled pattern buffer. */
  -/*@only@*/ /*@relnull@*/
       void *hints;             /*!< pcre compiled pattern hints buffer. */
  -/*@shared@*/ /*@relnull@*/
       const char * errmsg;     /*!< pcre error message. */
  -/*@shared@*/ /*@relnull@*/
       const unsigned char * table;/*!< pcre locale table. */
  -/*@kept@*/
       int * offsets;           /*!< pcre substring offset table. */
       int noffsets;            /*!< pcre substring offset table count. */
       int erroff;                      /*!< pcre error offset. */
  @@ -118,10 +86,6 @@
       int eoptions;    /*!< pcre_exec(3) options. */
       int notmatch;            /*!< non-zero: negative match, like "grep -v" */
       int tag;                 /*!< sort identifier (e.g. an rpmTag) */
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                               /*!< (unused) keep splint happy 
*/
  -#endif
   };
   #endif       /* defined(_MIRE_INTERNAL) */
   
  @@ -134,27 +98,21 @@
    * @param mire               pattern container
    * @return           0 on success
    */
  -int mireClean(/*@null@*/ miRE mire)
  -     /*@modifies mire @*/;
  +int mireClean(miRE mire);
   
   /**
    * Allocate a miRE container from the pool.
    * @param pool               mire pool
    * @return           miRE container
    */
  -miRE mireGetPool(/*@null@*/ rpmioPool pool)
  -        /*@globals _mirePool, fileSystem @*/
  -        /*@modifies pool, _mirePool, fileSystem @*/;
  +miRE mireGetPool(rpmioPool pool);
   
   /**
    * Unreference a pattern container instance.
    * @param mire               pattern container
    * @return           new pattern container reference
    */
  -/*@unused@*/ /*@null@*/
  -miRE mireUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ miRE mire)
  -        /*@globals fileSystem @*/
  -        /*@modifies mire, fileSystem @*/;
  +miRE mireUnlink (miRE mire);
   #define      mireUnlink(_mire)       \
       (miRE)rpmioUnlinkPoolItem((rpmioItem)_mire, __FUNCTION__, __FILE__, 
__LINE__)
   
  @@ -163,9 +121,7 @@
    * @param mire               pattern container
    * @return           new pattern container reference
    */
  -/*@unused@*/ /*@newref@*/ /*@null@*/
  -miRE mireLink (/*@null@*/ miRE mire)
  -     /*@modifies mire @*/;
  +miRE mireLink (miRE mire);
   #define      mireLink(_mire) \
       (miRE)rpmioLinkPoolItem((rpmioItem)_mire, __FUNCTION__, __FILE__, 
__LINE__)
   
  @@ -174,10 +130,7 @@
    * @param mire               pattern container
    * @return           NULL on last derefernce
    */
  -/*@null@*/
  -miRE mireFree(/*@killref@*/ /*@only@*/ /*@null@*/ miRE mire)
  -        /*@globals fileSystem @*/
  -        /*@modifies mire, fileSystem @*/;
  +miRE mireFree(miRE mire);
   #define      mireFree(_mire) \
       (miRE)rpmioFreePoolItem((rpmioItem)_mire, __FUNCTION__, __FILE__, 
__LINE__)
   
  @@ -187,10 +140,7 @@
    * @param nmire              no of patterns in array
    * @return           NULL always
    */
  -/*@null@*/
  -void * mireFreeAll(/*@only@*/ /*@null@*/ miRE mire, int nmire)
  -        /*@globals fileSystem @*/
  -        /*@modifies mire, fileSystem @*/;
  +void * mireFreeAll(miRE mire, int nmire);
   
   /**
    * Create pattern container.
  @@ -198,10 +148,7 @@
    * @param tag                identifier (e.g. an rpmTag)
    * @return           new pattern container (NULL on error)
    */
  -/*@null@*/
  -miRE mireNew(rpmMireMode mode, int tag)
  -        /*@globals fileSystem @*/
  -        /*@modifies fileSystem @*/;
  +miRE mireNew(rpmMireMode mode, int tag);
   
   /**
    * Initialize pattern compile options.
  @@ -213,8 +160,7 @@
    * @return           0 on success
    */
   int mireSetCOptions(miRE mire, rpmMireMode mode, int tag, int options,
  -             /*@null@*/ const unsigned char * table)
  -     /*@modifies mire @*/;
  +             const unsigned char * table);
   
   /**
    * Initialize pattern execute options (PCRE only).
  @@ -223,8 +169,7 @@
    * @param noffsets   (PCRE only) no. of string offsets
    * @return           0 on success
    */
  -int mireSetEOptions(miRE mire, /*@out@*/ /*@kept@*/ int * offsets, int 
noffsets)
  -     /*@modifies mire @*/;
  +int mireSetEOptions(miRE mire, int * offsets, int noffsets);
   
   /**
    * Initialize pattern global options (PCRE only).
  @@ -234,10 +179,8 @@
    * @param utf8               assume utf8 matching?
    * @return           0 on success
    */
  -int mireSetGOptions(/*@null@*/ const char * newline,
  -             int caseless, int multiline, int utf8)
  -     /*globals _mireGLOBoptions, _mireREGEXoptions, _mirePCREoptions */
  -     /*modifies _mireGLOBoptions, _mireREGEXoptions, _mirePCREoptions */;
  +int mireSetGOptions(const char * newline,
  +             int caseless, int multiline, int utf8);
   
   /**
    * Compile locale-specific PCRE tables.
  @@ -245,9 +188,7 @@
    * @param locale     locale string (NULL uses usual envvar's)
    * @return           0 on success
    */
  -int mireSetLocale(/*@null@*/ miRE mire, /*@null@*/ const char * locale)
  -     /*@globals _mirePCREtables, internalState @*/
  -     /*@modifies mire, _mirePCREtables, internalState @*/;
  +int mireSetLocale(miRE mire, const char * locale);
   
   /**
    * Compile pattern match.
  @@ -256,8 +197,7 @@
    * @param pattern    pattern to compile
    * @return           0 on success
    */
  -int mireRegcomp(miRE mire, const char * pattern)
  -     /*@modifies mire @*/;
  +int mireRegcomp(miRE mire, const char * pattern);
   
   /**
    * Execute pattern match.
  @@ -266,8 +206,7 @@
    * @param vallen     length of value string (0 will use strlen)
    * @return           >=0 if pattern matches, -1 on nomatch, else error
    */
  -int mireRegexec(miRE mire, const char * val, size_t vallen)
  -     /*@modifies mire @*/;
  +int mireRegexec(miRE mire, const char * val, size_t vallen);
   
   /**
    * Append pattern to array.
  @@ -278,12 +217,9 @@
    * @retval *mirep    pattern array
    * @retval *nmirep   no. of patterns in array
    */
  -/*@null@*/
   int mireAppend(rpmMireMode mode, int tag, const char * pattern,
  -             /*@null@*/ const unsigned char * table,
  -             miRE * mirep, int * nmirep)
  -        /*@globals fileSystem @*/
  -        /*@modifies *mirep, *nmirep, fileSystem @*/;
  +             const unsigned char * table,
  +             miRE * mirep, int * nmirep);
   
   /**
    * Load patterns from string array.
  @@ -296,11 +232,9 @@
    * @return           0 on success
    */
   int mireLoadPatterns(rpmMireMode mode, int tag,
  -             /*@null@*/ const char ** patterns,
  -             /*@null@*/ const unsigned char * table,
  -             miRE * mirep, int * nmirep)
  -        /*@globals fileSystem @*/
  -        /*@modifies *mirep, *nmirep, fileSystem @*/;
  +             const char ** patterns,
  +             const unsigned char * table,
  +             miRE * mirep, int * nmirep);
   
   /**
    * Apply array of patterns to a string.
  @@ -311,9 +245,7 @@
    * @param rc         -1 == excluding, +1 == including, 0 == single pattern
    * @return           termination condition
    */
  -int mireApply(/*@null@*/ miRE mire, int nmire,
  -             const char *s, size_t slen, int rc)
  -     /*@modifies mire@*/;
  +int mireApply(miRE mire, int nmire, const char *s, size_t slen, int rc);
   
   /**
    * Study PCRE patterns (if any).
  @@ -321,8 +253,7 @@
    * @param nmires     no. of patterns in container
    * @return           0 on success
    */
  -int mireStudy(miRE mire, int nmires)
  -     /*@modifies mire @*/;
  +int mireStudy(miRE mire, int nmires);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmbf.h
  ============================================================================
  $ cvs diff -u -r2.8.4.3 -r2.8.4.4 rpmbf.h
  --- rpm/rpmio/rpmbf.h 27 Sep 2014 15:51:22 -0000      2.8.4.3
  +++ rpm/rpmio/rpmbf.h 25 Jun 2016 07:31:08 -0000      2.8.4.4
  @@ -5,9 +5,10 @@
    * \file rpmio/rpmbf.h
    */
   
  +#include <stddef.h>
  +
   /** \ingroup rpmio
    */
  -/*@unchecked@*/
   extern int _rpmbf_debug;
   
   /** \ingroup rpmio
  @@ -28,12 +29,7 @@
       size_t m;
       size_t n;
       size_t k;
  -/*@relnull@*/
       unsigned char * bits;
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                       /*!< (unused) keep splint happy */
  -#endif
   };
   #endif       /* _RPMBF_INTERNAL */
   
  @@ -62,27 +58,20 @@
    * @retval odp               no. of bits in map
    * @param nd         desired no. of bits
    */
  -/*@unused@*/
   static inline pbm_set * PBM_REALLOC(pbm_set ** sp, int * odp, int nd)
  -     /*@modifies *sp, *odp @*/
   {
       int i, nb;
   
       if (nd > (*odp)) {
        nd *= 2;
        nb = __PBM_IX(nd) + 1;
  -/*@-unqualifiedtrans@*/
        *sp = (pbm_set *) xrealloc(*sp, nb * (__PBM_NBITS/8));
  -/*@=unqualifiedtrans@*/
        for (i = __PBM_IX(*odp) + 1; i < nb; i++)
            __PBM_BITS(*sp)[i] = 0;
        *odp = nd;
       }
  -/*@-compdef -retalias -usereleased@*/
       return *sp;
  -/*@=compdef =retalias =usereleased@*/
   }
  -
   #endif       /* _RPMBF_INTERNAL */
   
   /**
  @@ -90,9 +79,7 @@
    * @param bf         Bloom filter
    * @return           NULL on last dereference
    */
  -/*@unused@*/ /*@null@*/
  -rpmbf rpmbfUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmbf bf)
  -     /*@modifies bf @*/;
  +rpmbf rpmbfUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmbf bf);
   #define      rpmbfUnlink(_bf)        \
       ((rpmbf)rpmioUnlinkPoolItem((rpmioItem)(_bf), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -101,9 +88,7 @@
    * @param bf         Bloom filter
    * @return           new Bloom filter reference
    */
  -/*@unused@*/ /*@newref@*/ /*@null@*/
  -rpmbf rpmbfLink (/*@null@*/ rpmbf bf)
  -     /*@modifies bf @*/;
  +rpmbf rpmbfLink (/*@null@*/ rpmbf bf);
   #define      rpmbfLink(_bf)  \
       ((rpmbf)rpmioLinkPoolItem((rpmioItem)(_bf), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -112,9 +97,7 @@
    * @param bf         Bloom filter
    * @return           NULL on last dereference
    */
  -/*@null@*/
  -rpmbf rpmbfFree(/*@killref@*/ /*@null@*/rpmbf bf)
  -     /*@modifies bf @*/;
  +rpmbf rpmbfFree(/*@killref@*/ /*@null@*/rpmbf bf);
   #define      rpmbfFree(_bf)  \
       ((rpmbf)rpmioFreePoolItem((rpmioItem)(_bf), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -125,9 +108,7 @@
    * @param flags              flags
    * @return           new Bloom filter
    */
  -/*@newref@*/ /*@null@*/
  -rpmbf rpmbfNew(size_t m, size_t k, unsigned flags)
  -     /*@*/;
  +rpmbf rpmbfNew(size_t m, size_t k, unsigned flags);
   
   /**
    * Add item to a Bloom filter.
  @@ -136,16 +117,14 @@
    * @param ns         no. bytes (0 uses strlen)
    * @return           0 on success, -1 on NULL pointer
    */
  -int rpmbfAdd(rpmbf bf, const void * _s, size_t ns)
  -     /*@modifies bf @*/;
  +int rpmbfAdd(rpmbf bf, const void * _s, size_t ns);
   
   /**
    * Clear a Bloom filter, discarding all set memberships.
    * @param bf         Bloom filter
    * @return           0 on success, -1 on NULL pointer
    */
  -int rpmbfClr(rpmbf bf)
  -     /*@modifies bf @*/;
  +int rpmbfClr(rpmbf bf);
   
   /**
    * Check for item in a Bloom filter.
  @@ -154,8 +133,7 @@
    * @param ns         no. bytes (0 uses strlen)
    * @return           1 if string is present, 0 if not, -1 on NULL pointer
    */
  -int rpmbfChk(rpmbf bf, const void * _s, size_t ns)
  -     /*@modifies bf @*/;
  +int rpmbfChk(rpmbf bf, const void * _s, size_t ns);
   
   /**
    * Delete item from a Bloom filter.
  @@ -165,8 +143,7 @@
    * @param ns         no. bytes (0 will do strlen)
    * @return           0 on success, -1 on NULL pointer
    */
  -int rpmbfDel(rpmbf bf, const void * _s, size_t ns)
  -     /*@modifies bf @*/;
  +int rpmbfDel(rpmbf bf, const void * _s, size_t ns);
   
   /**
    * Return intersection of two Bloom filters.
  @@ -174,8 +151,7 @@
    * @param b          Bloom filter
    * @return           0 on success, -1 if {m,k} disagree or NULL pointers.
    */
  -int rpmbfIntersect(rpmbf a, const rpmbf b)
  -     /*@modifies a @*/;
  +int rpmbfIntersect(rpmbf a, const rpmbf b);
   
   /**
    * Return union of two Bloom filters.
  @@ -183,8 +159,7 @@
    * @param b          Bloom filter
    * @return           0 on success, -1 if {m,k} disagree or NULL pointers.
    */
  -int rpmbfUnion(rpmbf a, const rpmbf b)
  -     /*@modifies a @*/;
  +int rpmbfUnion(rpmbf a, const rpmbf b);
   
   /**
    * Return optimal {m, k} for given n and e.
  @@ -193,8 +168,7 @@
    * @retval mp                *mp no. of bits
    * @retval kp                *kp no. of hashes
    */
  -void rpmbfParams(size_t n, double e, size_t * mp, size_t * kp)
  -     /*@modifies *mp, *kp @*/;
  +void rpmbfParams(size_t n, double e, size_t * mp, size_t * kp);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmdav.c
  ============================================================================
  $ cvs diff -u -r2.119.2.19 -r2.119.2.20 rpmdav.c
  --- rpm/rpmio/rpmdav.c        10 Apr 2016 22:17:10 -0000      2.119.2.19
  +++ rpm/rpmio/rpmdav.c        25 Jun 2016 07:31:08 -0000      2.119.2.20
  @@ -48,6 +48,7 @@
   #include <rpmhash.h>
   #include <rpmmacro.h>                /* XXX rpmExpand */
   #include <ugid.h>
  +#include <yarn.h>
   
   #define      _RPMDIR_INTERNAL
   #include <rpmdir.h>
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmdefs.h
  ============================================================================
  $ cvs diff -u -r0 -r1.1.2.1 rpmdefs.h
  --- /dev/null 2016-06-25 09:30:35.000000000 +0200
  +++ rpmdefs.h 2016-06-25 09:31:09.073625928 +0200
  @@ -0,0 +1,159 @@
  +#ifndef H_RPMUTIL
  +#define H_RPMUTIL
  +
  +/**
  + * \file rpmio/rpmdefs.h
  + * Compiler attributes for __GNUC__.
  + */
  +
  +/*
  + * Miscellaneous utility macros:
  + * - portability wrappers for various gcc extensions like __attribute__()
  + * - ...
  + *
  + * Copied from glib, names replaced to avoid clashing with glib.
  + *
  + */
  +
  +/* Here we provide RPM_GNUC_EXTENSION as an alias for __extension__,
  + * where this is valid. This allows for warningless compilation of
  + * "long long" types even in the presence of '-ansi -pedantic'. 
  + */
  +#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
  +#  define RPM_GNUC_EXTENSION __extension__
  +#else
  +#  define RPM_GNUC_EXTENSION
  +#endif
  +
  +/* Provide macros to feature the GCC function attribute.
  + */
  +#if    __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
  +#define RPM_GNUC_PURE                                \
  +  __attribute__((__pure__))
  +#define RPM_GNUC_MALLOC                              \
  +  __attribute__((__malloc__))
  +#else
  +#define RPM_GNUC_PURE
  +#define RPM_GNUC_MALLOC
  +#endif
  +
  +#if     (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
  +#define RPM_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
  +#define RPM_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
  +#else
  +#define RPM_GNUC_ALLOC_SIZE(x)
  +#define RPM_GNUC_ALLOC_SIZE2(x,y)
  +#endif
  +
  +#if     __GNUC__ >= 4
  +#define RPM_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
  +#else
  +#define RPM_GNUC_NULL_TERMINATED
  +#endif
  +
  +#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
  +#define RPM_GNUC_PRINTF( format_idx, arg_idx )       \
  +  __attribute__((__format__ (__printf__, format_idx, arg_idx)))
  +#define RPM_GNUC_SCANF( format_idx, arg_idx )        \
  +  __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
  +#define RPM_GNUC_FORMAT( arg_idx )           \
  +  __attribute__((__format_arg__ (arg_idx)))
  +#define RPM_GNUC_NORETURN                    \
  +  __attribute__((__noreturn__))
  +#define RPM_GNUC_CONST                               \
  +  __attribute__((__const__))
  +#define RPM_GNUC_UNUSED                              \
  +  __attribute__((__unused__))
  +#define RPM_GNUC_NO_INSTRUMENT                       \
  +  __attribute__((__no_instrument_function__))
  +#else   /* !__GNUC__ */
  +#define RPM_GNUC_PRINTF( format_idx, arg_idx )
  +#define RPM_GNUC_SCANF( format_idx, arg_idx )
  +#define RPM_GNUC_FORMAT( arg_idx )
  +#define RPM_GNUC_NORETURN
  +#define RPM_GNUC_CONST
  +#define RPM_GNUC_UNUSED
  +#define RPM_GNUC_NO_INSTRUMENT
  +#endif  /* !__GNUC__ */
  +
  +#if    __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
  +#define RPM_GNUC_DEPRECATED                            \
  +  __attribute__((__deprecated__))
  +#else
  +#define RPM_GNUC_DEPRECATED
  +#endif /* __GNUC__ */
  +
  +#if     __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
  +#define RPM_GNUC_MAY_ALIAS __attribute__((may_alias))
  +#define RPM_GNUC_NONNULL( ... )      \
  +  __attribute__((__nonnull__ (__VA_ARGS__)))
  +#else
  +#define RPM_GNUC_MAY_ALIAS
  +#define RPM_GNUC_NONNULL( ... )
  +#endif
  +
  +#if    __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
  +#define RPM_GNUC_WARN_UNUSED_RESULT          \
  +  __attribute__((warn_unused_result))
  +#else
  +#define RPM_GNUC_WARN_UNUSED_RESULT
  +#endif /* __GNUC__ */
  +
  +#if    __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
  +#  define RPM_GNUC_INTERNAL __attribute__((visibility("hidden")))
  +#else
  +#  define RPM_GNUC_INTERNAL
  +#endif
  +
  +/* if !__clang__ &&  __GNUC__ == 4 && __GNUC_MINOR__ >= 7 */
  +#if defined(HAVE_GNUC_TM_ATOMIC) && !defined(__SANITIZE_ADDRESS__)
  +#  define RPM_GNUC_TM_SAFE   __attribute__((transaction_safe))
  +#  define RPM_GNUC_TM_PURE   __attribute__((transaction_pure))
  +#  define RPM_GNUC_TM_CALLABLE       __attribute__((transaction_callable))
  +#  define RPM_GNUC_TM_UNSAFE __attribute__((transaction_unsafe))
  +#  define RPM_GNUC_TM_MAYCANCEL __attribute__((transaction_may_cancel_outer))
  +#  define RPM_GNUC_TM_WRAP(func) __attribute__((transaction_wrap(func)))
  +#  define RPM_GNUC_TM_ATOMIC __transaction_atomic    /* XXX [[outer]] */
  +#  define RPM_GNUC_TM_RELAXED        __transaction_relaxed
  +#  define RPM_GNUC_TM_CANCEL __transaction_cancel    /* XXX [[outer]] */
  +#else
  +#  define RPM_GNUC_TM_SAFE
  +#  define RPM_GNUC_TM_PURE
  +#  define RPM_GNUC_TM_CALLABLE
  +#  define RPM_GNUC_TM_UNSAFE
  +#  define RPM_GNUC_TM_MAYCANCEL
  +#  define RPM_GNUC_TM_WRAP(func)
  +#  define RPM_GNUC_TM_ATOMIC
  +#  define RPM_GNUC_TM_RELAXED
  +#  define RPM_GNUC_TM_CANCEL
  +#endif
  +
  +#if defined(__has_feature)
  +# if __has_feature(address_sanitizer)
  +#   if __clang__
  +#     define  CLANG_ASAN_COMPILES_SLOWLY /* XXX disable certain digests */
  +#   endif
  +#   define  RPM_GNUC_NOASAN          __attribute__((no_sanitize("address")))
  +#   define  RPM_GNUC_NOBOUNDS                
__attribute__((no_sanitize("bounds")))
  +#   define  RPM_GNUC_NOUNDEFINED     
__attribute__((no_sanitize("undefined")))
  +# else
  +#   define  RPM_GNUC_NOASAN
  +#   define  RPM_GNUC_NOBOUNDS
  +#   define  RPM_GNUC_NOUNDEFINED
  +# endif
  +#else
  +#   define  RPM_GNUC_NOASAN
  +#   define  RPM_GNUC_NOBOUNDS
  +#   define  RPM_GNUC_NOUNDEFINED
  +#endif
  +
  +/* Guard C code in headers, while including them from C++ */
  +#ifdef  __cplusplus
  +# define RPM_BEGIN_DECLS  extern "C" {
  +# define RPM_END_DECLS    }
  +#else
  +# define RPM_BEGIN_DECLS
  +# define RPM_END_DECLS
  +#endif
  +
  +#endif /* H_RPMUTIL */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.h
  ============================================================================
  $ cvs diff -u -r1.97.2.6 -r1.97.2.7 rpmio.h
  --- rpm/rpmio/rpmio.h 27 Feb 2016 20:36:50 -0000      1.97.2.6
  +++ rpm/rpmio/rpmio.h 25 Jun 2016 07:31:08 -0000      1.97.2.7
  @@ -7,13 +7,12 @@
    */
   
   #include <sys/types.h>
  -#include <sys/stat.h>
  +#include <features.h>
   #include <stdio.h>
  -#include <stdlib.h>
  -#include <unistd.h>
  +#include <libio.h>
   
   #include <rpmiotypes.h>
  -#include <rpmzlog.h>
  +#include <rpmdefs.h>
   
   /** \ingroup rpmio
    * Hide libio API lossage.
  @@ -36,16 +35,15 @@
   
   /** \ingroup rpmio
    */
  -/*@unchecked@*/
   extern int _rpmio_debug;
   
   /** \ingroup rpmio
    */
  -typedef      /*@abstract@*/ /*@refcounted@*/ struct _FD_s * FD_t;
  +typedef      struct _FD_s * FD_t;
   
   /** \ingroup rpmio
    */
  -typedef /*@observer@*/ struct FDIO_s * FDIO_t;
  +typedef struct FDIO_s * FDIO_t;
   
   #ifdef __cplusplus
   extern "C" {
  @@ -58,64 +56,44 @@
   
   /**
    */
  -typedef ssize_t (*fdio_read_function_t) (void *cookie, char *buf, size_t 
nbytes)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies *cookie, errno, fileSystem @*/
  -     /*@requires maxSet(buf) >= (nbytes - 1) @*/
  -     /*@ensures maxRead(buf) == result @*/ ;
  +typedef ssize_t (*fdio_read_function_t) (void *cookie, char *buf, size_t 
nbytes);
   
   /**
    */
  -typedef ssize_t (*fdio_write_function_t) (void *cookie, const char *buf, 
size_t nbytes)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies *cookie, errno, fileSystem @*/;
  +typedef ssize_t (*fdio_write_function_t) (void *cookie, const char *buf, 
size_t nbytes);
   
   /**
    */
  -typedef int (*fdio_seek_function_t) (void *cookie, _libio_pos_t pos, int 
whence)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies *cookie, errno, fileSystem @*/;
  +typedef int (*fdio_seek_function_t) (void *cookie, _libio_pos_t pos, int 
whence);
   
   /**
    */
  -typedef int (*fdio_close_function_t) (void *cookie)
  -     /*@globals errno, fileSystem, systemState @*/
  -     /*@modifies *cookie, errno, fileSystem, systemState @*/;
  +typedef int (*fdio_close_function_t) (void *cookie);
   
   /**
    */
  -typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * 
fmode);
   
   /**
    */
  -typedef FD_t (*fdio_fdopen_function_t) (void * cookie, const char * fmode)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +typedef FD_t (*fdio_fdopen_function_t) (void * cookie, const char * fmode);
   
   /**
    */
  -typedef int (*fdio_flush_function_t) (void * cookie)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +typedef int (*fdio_flush_function_t) (void * cookie);
   
   /*@}*/
   
  -
   /** \ingroup rpmio
    */
   struct FDIO_s {
  -  fdio_read_function_t               read;
  -  fdio_write_function_t              write;
  -  fdio_seek_function_t               seek;
  -  fdio_close_function_t              close;
  -/*@null@*/
  -  fdio_fopen_function_t              _fopen;
  -/*@null@*/
  -  fdio_fdopen_function_t     _fdopen;
  -/*@null@*/
  -  fdio_flush_function_t              _flush;
  +    fdio_read_function_t             read;
  +    fdio_write_function_t            write;
  +    fdio_seek_function_t             seek;
  +    fdio_close_function_t            close;
  +    fdio_fopen_function_t            _fopen;
  +    fdio_fdopen_function_t           _fdopen;
  +    fdio_flush_function_t            _flush;
   };
   
   
  @@ -127,93 +105,61 @@
   /**
    * strerror(3) clone.
    */
  -/*@observer@*/ const char * Fstrerror(/*@null@*/ FD_t fd)
  -     /*@*/;
  +const char * Fstrerror(FD_t fd);
   
   /**
    * fread(3) clone.
    */
  -/*@-incondefs@*/
  -size_t Fread(/*@out@*/ void * buf, size_t size, size_t nmemb, FD_t fd)
  -     /*@globals fileSystem @*/
  -     /*@modifies fd, *buf, fileSystem @*/
  -     /*@requires maxSet(buf) >= (nmemb - 1) @*/;
  -/*@=incondefs@*/
  +size_t Fread(void * buf, size_t size, size_t nmemb, FD_t fd);
   
   /**
    * fwrite(3) clone.
    */
  -/*@-incondefs@*/
  -size_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd)
  -     /*@globals fileSystem @*/
  -     /*@modifies fd, fileSystem @*/
  -     /*@requires maxRead(buf) >= nmemb @*/;
  -/*@=incondefs@*/
  +size_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd);
   
   /**
    * fseek(3) clone.
    */
  -int Fseek(FD_t fd, _libio_off_t offset, int whence)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  -long Ftell(FD_t fd)
  -     /*@*/;
  -void Rewind(FD_t fd)
  -     /*@*/;
  -int Fgetpos(FD_t fd, fpos_t *pos)
  -     /*@*/;
  -int Fsetpos(FD_t fd, fpos_t *pos)
  -     /*@*/;
  +int Fseek(FD_t fd, _libio_off_t offset, int whence);
  +
  +long Ftell(FD_t fd);
  +void Rewind(FD_t fd);
  +int Fgetpos(FD_t fd, fpos_t *pos);
  +int Fsetpos(FD_t fd, fpos_t *pos);
   
   /**
    * fclose(3) clone.
    */
  -int Fclose( /*@killref@*/ FD_t fd)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fd, fileSystem, internalState @*/;
  +int Fclose(FD_t fd);
   
   /**
    */
  -/*@null@*/ FD_t      Fdopen(FD_t ofd, const char * fmode)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies ofd, fileSystem, internalState @*/;
  +FD_t Fdopen(FD_t ofd, const char * fmode);
   
   /**
    * fopen(3) clone.
    */
  -/*@null@*/ FD_t      Fopen(/*@null@*/ const char * path,
  -                     /*@null@*/ const char * fmode)
  -     /*@globals h_errno, fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -
  +FD_t Fopen(const char * path, const char * fmode);
   
   /**
    * fflush(3) clone.
    */
  -int Fflush(/*@null@*/ FD_t fd)
  -     /*@globals fileSystem @*/
  -     /*@modifies fd, fileSystem @*/;
  +int Fflush(FD_t fd);
   
   /**
    * ferror(3) clone.
    */
  -int Ferror(/*@null@*/ FD_t fd)
  -     /*@*/;
  +int Ferror(FD_t fd);
   
   /**
    * fileno(3) clone.
    */
  -int Fileno(FD_t fd)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem@*/;
  +int Fileno(FD_t fd);
   
   /**
    * fcntl(2) clone.
    */
  -/*@unused@*/
  -int Fcntl(FD_t fd, int op, void *lip)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies fd, *lip, errno, fileSystem @*/;
  +int Fcntl(FD_t fd, int op, void *lip);
   
   /*@}*/
   
  @@ -225,237 +171,176 @@
   /**
    * mkdir(2) clone.
    */
  -int Mkdir(const char * path, mode_t mode)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Mkdir(const char * path, mode_t mode);
   
   /**
    * chdir(2) clone.
    */
  -int Chdir(const char * path)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Chdir(const char * path);
   
   /**
    * rmdir(2) clone.
    */
  -int Rmdir(const char * path)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Rmdir(const char * path);
   
  -/*@unchecked@*/ /*@observer@*/ /*@null@*/
   extern const char * _chroot_prefix;
   
   /**
    * chroot(2) clone.
    * @todo Implement remotely.
    */
  -int Chroot(const char * path)
  -     /*@globals _chroot_prefix, errno, fileSystem, internalState @*/
  -     /*@modifies _chroot_prefix, errno, fileSystem, internalState @*/;
  +int Chroot(const char * path);
   
   /**
    * open(2) clone.
    * @todo Implement remotely.
    */
  -int Open(const char * path, int flags, mode_t mode)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Open(const char * path, int flags, mode_t mode);
   
   /**
    * rename(2) clone.
    */
  -int Rename(const char * oldpath, const char * newpath)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Rename(const char * oldpath, const char * newpath);
   
   /**
    * link(2) clone.
    */
  -int Link(const char * oldpath, const char * newpath)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Link(const char * oldpath, const char * newpath);
   
   /**
    * unlink(2) clone.
    */
  -int Unlink(const char * path)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Unlink(const char * path);
   
   /**
    * stat(2) clone.
    */
  -int Stat(const char * path, /*@out@*/ struct stat * st)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies *st, errno, fileSystem, internalState @*/;
  +struct stat;
  +int Stat(const char * path, struct stat * st);
   
   /**
    * lstat(2) clone.
    */
  -int Lstat(const char * path, /*@out@*/ struct stat * st)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies *st, errno, fileSystem, internalState @*/;
  +int Lstat(const char * path, struct stat * st);
   
   /**
    * fstat(2) clone.
    */
  -int Fstat(FD_t fd, /*@out@*/ struct stat * st)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies *st, errno, fileSystem, internalState @*/;
  +int Fstat(FD_t fd, struct stat * st);
   
   /**
    * posix_fadvise(2) clone.
    */
  -int Fadvise(FD_t fd, off_t offset, off_t length, int advice)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +int Fadvise(FD_t fd, off_t offset, off_t length, int advice);
   
   /**
    * posix_fallocate(3)/fallocate(2) clone.
    */
  -int Fallocate(FD_t fd, off_t offset, off_t length)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +int Fallocate(FD_t fd, off_t offset, off_t length);
   
   /**
    * chown(2) clone.
    * @todo Implement remotely.
    */
  -int Chown(const char * path, uid_t owner, gid_t group)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Chown(const char * path, uid_t owner, gid_t group);
   
   /**
    * fchown(2) clone.
    * @todo Implement remotely.
    */
  -int Fchown(FD_t fd, uid_t owner, gid_t group)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Fchown(FD_t fd, uid_t owner, gid_t group);
   
   /**
    * lchown(2) clone.
    * @todo Implement remotely.
    */
  -int Lchown(const char * path, uid_t owner, gid_t group)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Lchown(const char * path, uid_t owner, gid_t group);
   
   /**
    * chmod(2) clone.
    * @todo Implement remotely.
    */
  -int Chmod(const char * path, mode_t mode)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Chmod(const char * path, mode_t mode);
   
   /**
    * lchmod(2) clone.
    * @todo Implement remotely.
    */
  -int Lchmod(const char * path, mode_t mode)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Lchmod(const char * path, mode_t mode);
   
   /**
    * fchmod(2) clone.
    * @todo Implement remotely.
    */
  -int Fchmod(FD_t fd, mode_t mode)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Fchmod(FD_t fd, mode_t mode);
   
   /**
    * chflags(2) clone.
    * @todo Implement remotely.
    */
  -int Chflags(const char * path, unsigned int flags)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Chflags(const char * path, unsigned int flags);
   
   /**
    * lchflags(2) clone.
    * @todo Implement remotely.
    */
  -int Lchflags(const char * path, unsigned int flags)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Lchflags(const char * path, unsigned int flags);
   
   /**
    * fchflags(2) clone.
    * @todo Implement remotely.
    */
  -int Fchflags(FD_t fd, unsigned int flags)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Fchflags(FD_t fd, unsigned int flags);
   
   /**
    * mkfifo(3) clone.
    * @todo Implement remotely.
    */
  -int Mkfifo(const char * path, mode_t mode)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Mkfifo(const char * path, mode_t mode);
   
   /**
    * mknod(3) clone.
    * @todo Implement remotely.
    */
  -int Mknod(const char * path, mode_t mode, dev_t dev)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Mknod(const char * path, mode_t mode, dev_t dev);
   
   /**
    * utime(2) clone.
    * @todo Implement remotely.
    */
   struct utimbuf;
  -int Utime(const char * path, const struct utimbuf * buf)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Utime(const char * path, const struct utimbuf * buf);
   
   /**
    * utimes(2) clone.
    * @todo Implement remotely.
    */
  -int Utimes(const char * path, const struct timeval * times)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +struct timeval;
  +int Utimes(const char * path, const struct timeval * times);
   
   /**
    * lutimes(2) clone.
    * @todo Implement remotely.
    */
  -int Lutimes(const char * path, const struct timeval * times)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Lutimes(const char * path, const struct timeval * times);
   
   /**
    * symlink(3) clone.
    * @todo Implement remotely.
    */
  -int Symlink(const char * oldpath, const char * newpath)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +int Symlink(const char * oldpath, const char * newpath);
   
   /**
    * readlink(2) clone.
    * @todo Implement remotely.
    */
  -/*@-incondefs@*/
  -int Readlink(const char * path, /*@out@*/ char * buf, size_t bufsiz)
  -     /*@globals errno, h_errno, fileSystem, internalState @*/
  -     /*@modifies *buf, errno, fileSystem, internalState @*/;
  -/*@=incondefs@*/
  +int Readlink(const char * path, char * buf, size_t bufsiz);
   
   /**
    * access(2) clone.
    * @todo Implement remotely.
    */
  -int Access(const char * path, int amode)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +int Access(const char * path, int amode);
   
   #if defined(__linux__)
   /**
  @@ -463,72 +348,52 @@
    */
   int Mount(const char *source, const char *target,
                const char *filesystemtype, unsigned long mountflags,
  -             const void *data)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +             const void *data);
   
   /**
    * umount(2) clone.
    */
  -int Umount(const char *target)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +int Umount(const char *target);
   
   /**
    * umount2(2) clone.
    */
  -int Umount2(const char *target, int flags)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +int Umount2(const char *target, int flags);
   #endif
   
   /**
    * glob_pattern_p(3) clone.
    */
  -int Glob_pattern_p (const char *pattern, int quote)
  -     /*@*/;
  +int Glob_pattern_p (const char *pattern, int quote);
   
   /**
    * glob_error(3) clone.
    */
   int Glob_error(const char * epath, int eerrno)
  -     RPM_GNUC_CONST
  -     /*@*/;
  +     RPM_GNUC_CONST;
   
   /**
    * glob(3) clone.
    */
   int Glob(const char * pattern, int flags,
                int errfunc(const char * epath, int eerrno),
  -             /*@out@*/ void * _pglob)
  -     /*@globals fileSystem @*/
  -     /*@modifies *_pglob, fileSystem @*/;
  +             void * _pglob);
   
   /**
    * globfree(3) clone.
    */
  -void Globfree( /*@only@*/ void * _pglob)
  -     /*@globals fileSystem @*/
  -     /*@modifies *_pglob, fileSystem @*/;
  -
  +void Globfree(void * _pglob);
   
   /**
    * realpath(3) clone.
    */
  -/*@-globuse@*/
  -/*@null@*/
  -char * Realpath(const char * path, /*@out@*/ /*@null@*/ char * resolved_path)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies resolved_path, errno, fileSystem, internalState @*/;
  -/*@=globuse@*/
  +char * Realpath(const char * path, char * resolved_path);
   
   /**
    * lseek(2) clone.
    * @todo Implement SEEK_HOLE/SEEK_DATA.
    */
  -off_t Lseek(int fdno, off_t offset, int whence)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies errno, fileSystem @*/;
  +off_t Lseek(int fdno, off_t offset, int whence);
   
   /*@}*/
   
  @@ -540,89 +405,57 @@
   
   /**
    */
  -off_t   fdSize(FD_t fd)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +off_t   fdSize(FD_t fd);
   
   /**
    */
  -/*@null@*/ FD_t fdDup(int fdno)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +FD_t fdDup(int fdno);
   
  -/*@-exportlocal@*/
   /**
    */
  -ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies *cookie, *buf, errno, fileSystem, internalState @*/;
  +ssize_t fdRead(void * cookie, char * buf, size_t count);
   #define      fdRead(_fd, _buf, _count)       fdio->read((_fd), (_buf), 
(_count))
   
   /**
    */
  -ssize_t      fdWrite(void * cookie, const char * buf, size_t count)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies *cookie, errno, fileSystem, internalState @*/;
  +ssize_t      fdWrite(void * cookie, const char * buf, size_t count);
   #define      fdWrite(_fd, _buf, _count)      fdio->write((_fd), (_buf), 
(_count))
   
   /**
    */
  -int fdClose( /*@only@*/ void * cookie)
  -     /*@globals errno, fileSystem, systemState, internalState @*/
  -     /*@modifies *cookie, errno, fileSystem, systemState, internalState @*/;
  +int fdClose(void * cookie);
   #define      fdClose(_fd)            fdio->close(_fd)
   
   /**
    */
  -/*@null@*/ FD_t fdOpen(const char *path, int flags, mode_t mode)
  -     /*@globals errno, fileSystem, internalState @*/
  -     /*@modifies errno, fileSystem, internalState @*/;
  +FD_t fdOpen(const char *path, int flags, mode_t mode);
   #define      fdOpen(_path, _flags, _mode)    fdio->_open((_path), (_flags), 
(_mode))
   
   /**
    */
  -/*@unused@*/
  -/*@newref@*/ /*@null@*/
  -FD_t fdLink (void * cookie, const char * msg)
  -     /*@globals fileSystem @*/
  -     /*@modifies *cookie, fileSystem @*/;
  +FD_t fdLink (void * cookie, const char * msg);
   #define      fdLink(_fd, _msg)       \
        ((FD_t)rpmioLinkPoolItem((rpmioItem)(_fd), _msg, __FILE__, __LINE__))
   
   /**
    */
  -/*@unused@*/ /*@null@*/
  -FD_t fdFree(/*@killref@*/ FD_t fd, const char * msg)
  -     /*@globals fileSystem @*/
  -     /*@modifies fd, fileSystem @*/;
  +FD_t fdFree(FD_t fd, const char * msg);
   #define      fdFree(_fd, _msg)       \
        ((FD_t)rpmioFreePoolItem((rpmioItem)(_fd), _msg, __FILE__, __LINE__))
   
   /**
    */
  -/*@unused@*/
  -/*@newref@*/ /*@null@*/
  -FD_t fdNew (const char * msg)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  -/*@newref@*/ /*@null@*/
  -FD_t XfdNew (const char * msg, const char * fn, unsigned ln)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  +FD_t fdNew (const char * msg);
  +FD_t XfdNew (const char * msg, const char * fn, unsigned ln);
   #define      fdNew(_msg)             XfdNew(_msg, __FILE__, __LINE__)
   
   /**
    */
  -int fdWritable(FD_t fd, int secs)
  -     /*@globals errno, fileSystem @*/
  -     /*@modifies fd, errno, fileSystem @*/;
  +int fdWritable(FD_t fd, int secs);
   
   /**
    */
  -int fdReadable(FD_t fd, int secs)
  -     /*@globals errno @*/
  -     /*@modifies fd, errno @*/;
  -/*@=exportlocal@*/
  +int fdReadable(FD_t fd, int secs);
   
   /**
    * Insure that directories in path exist, creating as needed.
  @@ -632,9 +465,7 @@
    * @param gid                directory uid (if created), or -1 to skip
    * @return           0 on success, errno (or -1) on error
    */
  -int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid)
  -     /*@globals h_errno, fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid);
   
   /**
    * Check FN access, expanding relative paths and twiddles.
  @@ -643,33 +474,27 @@
    * @param mode               type of access(2) to check (0 uses X_OK)
    * @return           0 if accessible
    */
  -int rpmioAccess(const char *FN, /*@null@*/ const char * path, int mode)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +int rpmioAccess(const char *FN, const char * path, int mode);
   
  -extern char * (*Getpass) (const char * prompt)
  -     /*@*/;
  +extern char * (*Getpass) (const char * prompt);
   
   /**
    * Return a password.
    * @param prompt     prompt string
    * @return           password
    */
  -char * _GetPass (const char * prompt)
  -     /*@*/;
  +char * _GetPass (const char * prompt);
   
   /**
    * Return a password.
    * @param prompt     prompt string
    * @return           password
    */
  -char * _RequestPass (const char * prompt)
  -     /*@*/;
  +char * _RequestPass (const char * prompt);
   
   /**
    * FTP and HTTP error codes.
    */
  -/*@-typeuse@*/
   typedef enum ftperrCode_e {
       FTPERR_NE_OK             =  0,
       FTPERR_NE_ERROR          = -1,   /*!< Generic error. */
  @@ -695,99 +520,70 @@
       FTPERR_NIC_ABORT_IN_PROGRESS= -91,       /*!< Abort in progress */
       FTPERR_UNKNOWN           = -100  /*!< Unknown or unexpected error */
   } ftperrCode;
  -/*@=typeuse@*/
   
   /**
    */
  -/*@-redecl@*/
  -/*@observer@*/
  -const char * ftpStrerror(int errorNumber)
  -     /*@*/;
  -/*@=redecl@*/
  +const char * ftpStrerror(int errorNumber);
   
   /**
    */
  -/*@unused@*/
  -/*@dependent@*/ /*@null@*/
  -void * ufdGetUrlinfo(FD_t fd)
  -     /*@globals fileSystem @*/
  -     /*@modifies fd, fileSystem @*/;
  +void * ufdGetUrlinfo(FD_t fd);
   
   /**
    */
  -/*@-redecl@*/
  -/*@unused@*/
  -/*@observer@*/
  -const char * urlStrerror(const char * url)
  -     /*@globals h_errno, internalState @*/
  -     /*@modifies internalState @*/;
  -/*@=redecl@*/
  +const char * urlStrerror(const char * url);
   
   /**
    */
  -/*@-exportlocal@*/
  -int ufdCopy(FD_t sfd, FD_t tfd)
  -     /*@globals fileSystem @*/
  -     /*@modifies sfd, tfd, fileSystem @*/;
  -/*@=exportlocal@*/
  +int ufdCopy(FD_t sfd, FD_t tfd);
   
   /**
    */
  -int ufdGetFile( /*@killref@*/ FD_t sfd, FD_t tfd)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies sfd, tfd, fileSystem, internalState @*/;
  +int ufdGetFile(FD_t sfd, FD_t tfd);
   
  -/*@-exportlocal@*/
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t fdio;
  +extern FDIO_t fdio;
   
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t fpio;
  +extern FDIO_t fpio;
   
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t ufdio;
  +extern FDIO_t ufdio;
   
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t gzdio;
  +extern FDIO_t gzdio;
   
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t bzdio;
  +extern FDIO_t bzdio;
   
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t lzdio;
  +extern FDIO_t lzdio;
   
   /**
    */
  -/*@observer@*/ /*@unchecked@*/ extern FDIO_t xzdio;
  +extern FDIO_t xzdio;
   
  -/*@=exportlocal@*/
   /*@}*/
   
  -/*@unchecked@*/ /*@only@*/ /*@null@*/
   extern rpmioPool _fdPool;
   
   /**
    * Free all memory allocated by rpmio usage.
    */
  -void rpmioClean(void)
  -     /*@globals _fdPool, fileSystem, internalState @*/
  -     /*@modifies _fdPool, fileSystem, internalState @*/;
  +void rpmioClean(void);
   
   /**
    * Reclaim memory pool items.
    * @param pool               memory pool (NULL uses global rpmio pool)
    * @return           NULL always
    */
  -/*@null@*/
  -rpmioPool rpmioFreePool(/*@only@*//*@null@*/ rpmioPool pool)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies pool, fileSystem, internalState @*/;
  +rpmioPool rpmioFreePool(rpmioPool pool);
   
   /**
    * Create a memory pool.
  @@ -800,13 +596,11 @@
    * @param fini               (*fini)() destroy item contents
    * @return           memory pool
    */
  -rpmioPool rpmioNewPool(/*@observer@*/ const char * name,
  +rpmioPool rpmioNewPool(const char * name,
                size_t size, int limit, int flags,
  -             /*@null@*/ char * (*dbg) (void *item), 
  -             /*@null@*/ void (*init) (void *item),
  -             /*@null@*/ void (*fini) (void *item))
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  +             char * (*dbg) (void *item), 
  +             void (*init) (void *item),
  +             void (*fini) (void *item));
   
   /**
    * Decrement a pool item refcount.
  @@ -816,11 +610,8 @@
    * @param ln         usually __LINE__
    * @return           pool item (NULL on last dereference)
    */
  -/*@null@*/
  -rpmioItem rpmioUnlinkPoolItem(/*@killref@*/ /*@null@*/ rpmioItem item,
  -             const char * msg, const char * fn, unsigned ln)
  -     /*@globals fileSystem @*/
  -     /*@modifies item, fileSystem @*/;
  +rpmioItem rpmioUnlinkPoolItem(rpmioItem item,
  +             const char * msg, const char * fn, unsigned ln);
   
   /**
    * Increment a pool item refcount.
  @@ -830,11 +621,8 @@
    * @param ln         usually __LINE__
    * @return           pool item
    */
  -/*@newref@*/ /*@null@*/
  -rpmioItem rpmioLinkPoolItem(/*@returned@*/ /*@null@*/ rpmioItem item,
  -             const char * msg, const char * fn, unsigned ln)
  -     /*@globals fileSystem @*/
  -     /*@modifies item, fileSystem @*/;
  +rpmioItem rpmioLinkPoolItem(rpmioItem item,
  +             const char * msg, const char * fn, unsigned ln);
   
   /**
    * Free a pool item.
  @@ -844,11 +632,8 @@
    * @param ln         usually __LINE__
    * @return           pool item (NULL on last dereference)
    */
  -/*@null@*/
  -void * rpmioFreePoolItem(/*@killref@*/ /*@null@*/ rpmioItem item,
  -             const char * msg, const char * fn, unsigned ln)
  -     /*@globals fileSystem @*/
  -     /*@modifies item, fileSystem @*/;
  +void * rpmioFreePoolItem(rpmioItem item,
  +             const char * msg, const char * fn, unsigned ln);
   
   /**
    * Get unused item from pool, or alloc a new item.
  @@ -856,19 +641,14 @@
    * @param size               item size
    * @return           new item
    */
  -rpmioItem rpmioGetPool(/*@kept@*/ /*@null@*/ rpmioPool pool, size_t size)
  -     /*@globals fileSystem @*/
  -        /*@modifies pool, fileSystem @*/;
  +rpmioItem rpmioGetPool(rpmioPool pool, size_t size);
   
   /**
    * Put unused item into pool (or free).
    * @param item               unused item
    * @return           NULL always
    */
  -/*@null@*/
  -rpmioItem rpmioPutPool(rpmioItem item)
  -     /*@globals fileSystem @*/
  -        /*@modifies item, fileSystem @*/;
  +rpmioItem rpmioPutPool(rpmioItem item);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmiotypes.h
  ============================================================================
  $ cvs diff -u -r1.47.2.20 -r1.47.2.21 rpmiotypes.h
  --- rpm/rpmio/rpmiotypes.h    27 Sep 2014 15:51:24 -0000      1.47.2.20
  +++ rpm/rpmio/rpmiotypes.h    25 Jun 2016 07:31:08 -0000      1.47.2.21
  @@ -5,7 +5,8 @@
    * \file rpmio/rpmiotypes.h
    */
   
  -#include <rpmutil.h>
  +#include <stdlib.h>
  +#include <rpmdefs.h>
   
   /** \ingroup rpmio
    * RPM return codes.
  @@ -29,7 +30,7 @@
   
   /** \ingroup rpmio
    */
  -typedef /*@signedintegraltype@*/     int                     rpmint32_t;
  +typedef int rpmint32_t;
   
   /** \ingroup rpmio
    */
  @@ -37,17 +38,11 @@
   
   /** \ingroup rpmio
    */
  -typedef      /*@refcounted@*/ struct rpmioItem_s * rpmioItem;
  +typedef      struct rpmioItem_s * rpmioItem;
   struct rpmioItem_s {
  -/*@null@*/
       yarnLock use;            /*!< use count -- return to pool when zero */
  -/*@kept@*/ /*@null@*/
       void *pool;                      /*!< pool (or NULL if malloc'd) */
       void *next;                      /*!< factory queue linkage */
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                       /*!< (unused) keep splint happy */
  -#endif
   };
   
   /** \ingroup rpmio
  @@ -56,11 +51,10 @@
   
   /** \ingroup rpmio
    */
  -typedef /*@abstract@*/ /*@refcounted@*/ struct rpmiob_s * rpmiob;
  +typedef struct rpmiob_s * rpmiob;
   
   /** \ingroup rpmio
    */
  -/*@unchecked@*/
   extern size_t _rpmiob_chunk;
   
   /** \ingroup rpmio
  @@ -80,24 +74,20 @@
       rpmuint8_t * b;          /*!< data octects. */
       size_t blen;             /*!< no. of octets used. */
       size_t allocated;                /*!< no. of octets allocated. */
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                               /*!< (unused) keep splint happy 
*/
  -#endif
   };
   #endif
   
   /** \ingroup rpmpgp
    */
  -typedef /*@abstract@*/ struct pgpPkt_s * pgpPkt;
  +typedef struct pgpPkt_s * pgpPkt;
   
   /** \ingroup rpmpgp
    */
  -typedef /*@abstract@*/ /*@refcounted@*/ struct pgpDig_s * pgpDig;
  +typedef struct pgpDig_s * pgpDig;
   
   /** \ingroup rpmpgp
    */
  -typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams;
  +typedef struct pgpDigParams_s * pgpDigParams;
   
   /** \ingroup rpmpgp
    */
  @@ -129,9 +119,7 @@
       /* bit(s) 21-31 unused */
   } pgpVSFlags;
   
  -/*@-redef@*/ /* LCL: ??? */
  -typedef /*@abstract@*/ const void * fnpyKey;
  -/*@=redef@*/
  +typedef const void * fnpyKey;
   
   /**
    * Bit(s) to identify progress callbacks.
  @@ -165,7 +153,7 @@
   
   /** \ingroup rpmpgp
    */
  -typedef /*@abstract@*/ struct CIPHER_CTX_s * CIPHER_CTX;
  +typedef struct CIPHER_CTX_s * CIPHER_CTX;
   
   /** \ingroup rpmpgp
    * 9.2. Symmetric Key Algorithms
  @@ -192,7 +180,6 @@
    * implement IDEA and CAST5. Implementations MAY implement any other
    * algorithm.
    */
  -/*@-typeuse@*/
   typedef enum pgpSymkeyAlgo_e {
       PGPSYMKEYALGO_PLAINTEXT  =  0,   /*!< Plaintext */
       PGPSYMKEYALGO_IDEA               =  1,   /*!< IDEA */
  @@ -211,7 +198,6 @@
       PGPSYMKEYALGO_NOENCRYPT  = 110,  /*!< no encryption */
       PGPSYMKEYALGO_DES                = 111
   } pgpSymkeyAlgo;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    * Bit(s) to control cipher operation.
  @@ -226,7 +212,7 @@
   extern "C" {
   #endif
   
  -void * _cphParam(/*@null@*/ CIPHER_CTX cph)
  +void * _cphParam(CIPHER_CTX cph)
        RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
  @@ -236,9 +222,7 @@
    * @param flags              bit(s) to control cipher operation
    * @return           cipher context
    */
  -/*@only@*/ /*@null@*/
  -CIPHER_CTX rpmCipherInit(pgpSymkeyAlgo symkeyalgo, rpmCipherFlags flags)
  -     /*@*/;
  +CIPHER_CTX rpmCipherInit(pgpSymkeyAlgo symkeyalgo, rpmCipherFlags flags);
   
   /** \ingroup rpmpgp
    * Encrypt/Decrypt a block of data.
  @@ -247,16 +231,14 @@
    * @param len                no. bytes of data
    * @return           0 on success
    */
  -int rpmCipherNext(/*@null@*/ CIPHER_CTX cph, void * data, size_t len)
  -     /*@modifies ctx @*/;
  +int rpmCipherNext(CIPHER_CTX cph, void * data, size_t len);
   
   /** \ingroup rpmpgp
    * Destroy cipher context.
    * @param cph                cipher context
    * @return           0 on success
    */
  -int rpmCipherFinal(/*@only@*/ /*@null@*/ CIPHER_CTX cph)
  -             /*@*/;
  +int rpmCipherFinal(CIPHER_CTX cph);
   
   #ifdef __cplusplus
   }
  @@ -264,7 +246,7 @@
   
   /** \ingroup rpmpgp
    */
  -typedef /*@abstract@*/ struct DIGEST_CTX_s * DIGEST_CTX;
  +typedef struct DIGEST_CTX_s * DIGEST_CTX;
   
   /** \ingroup rpmpgp
    * 9.4. Hash Algorithms
  @@ -441,8 +423,7 @@
    * @return           digest hash algorithm identifier
    */
   pgpHashAlgo rpmDigestAlgo(DIGEST_CTX ctx)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Return digest flags.
  @@ -450,18 +431,15 @@
    * @return           digest flags
    */
   rpmDigestFlags rpmDigestF(DIGEST_CTX ctx)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Return digest name.
    * @param ctx                digest context
    * @return           digest name
    */
  -/*@observer@*/
   const char * rpmDigestName(DIGEST_CTX ctx)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Return digest ASN1 oid string.
  @@ -469,19 +447,15 @@
    * @param ctx                digest context
    * @return           digest ASN1 oid string
    */
  -/*@observer@*/ /*@null@*/
   const char * rpmDigestASN1(DIGEST_CTX ctx)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Duplicate a digest context.
    * @param octx               existing digest context
    * @return           duplicated digest context
    */
  -/*@only@*/
  -DIGEST_CTX rpmDigestDup(DIGEST_CTX octx)
  -     /*@*/;
  +DIGEST_CTX rpmDigestDup(DIGEST_CTX octx);
   
   /** \ingroup rpmpgp
    * Initialize digest context.
  @@ -490,9 +464,7 @@
    * @param flags              bit(s) to control digest operation
    * @return           digest context
    */
  -/*@only@*/ /*@null@*/
  -DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
  -     /*@*/;
  +DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags);
   
   /** \ingroup rpmpgp
    * Update context with next plain text buffer.
  @@ -501,8 +473,7 @@
    * @param len                no. bytes of data
    * @return           0 on success
    */
  -int rpmDigestUpdate(/*@null@*/ DIGEST_CTX ctx, const void * data, size_t len)
  -     /*@modifies ctx @*/;
  +int rpmDigestUpdate(DIGEST_CTX ctx, const void * data, size_t len);
   
   /** \ingroup rpmpgp
    * Return digest and destroy context.
  @@ -513,10 +484,8 @@
    * @param asAscii    return digest as ascii string?
    * @return           0 on success
    */
  -int rpmDigestFinal(/*@only@*/ /*@null@*/ DIGEST_CTX ctx,
  -     /*@null@*/ /*@out@*/ void * datap,
  -     /*@null@*/ /*@out@*/ size_t * lenp, int asAscii)
  -             /*@modifies *datap, *lenp @*/;
  +int rpmDigestFinal(DIGEST_CTX ctx,
  +     void * datap, size_t * lenp, int asAscii);
   
   /** \ingroup rpmpgp
    *
  @@ -526,62 +495,59 @@
    * @param keylen     HMAC key length(bytes) (0 uses strlen(key))
    * @return           0 on success
    */
  -int rpmHmacInit(DIGEST_CTX ctx, const void * key, size_t keylen)
  -     /*@*/;
  +int rpmHmacInit(DIGEST_CTX ctx, const void * key, size_t keylen);
   
   /** \ingroup rpmio
    */
   typedef void * (*rpmCallbackFunction)
  -                (/*@null@*/ const void * h,
  +                (const void * h,
                   const rpmCallbackType what,
                   const rpmuint64_t amount,
                   const rpmuint64_t total,
  -                /*@null@*/ fnpyKey key,
  -                /*@null@*/ rpmCallbackData data)
  -        /*@globals internalState@*/
  -        /*@modifies internalState@*/;
  +                fnpyKey key,
  +                rpmCallbackData data);
   
  -/*@unused@*/ static inline int xislower(int c) /*@*/ {
  +static inline int xislower(int c) {
       return (c >= (int)'a' && c <= (int)'z');
   }
  -/*@unused@*/ static inline int xisupper(int c) /*@*/ {
  +static inline int xisupper(int c) {
       return (c >= (int)'A' && c <= (int)'Z');
   }
  -/*@unused@*/ static inline int xisalpha(int c) /*@*/ {
  +static inline int xisalpha(int c) {
       return (xislower(c) || xisupper(c));
   }
  -/*@unused@*/ static inline int xisdigit(int c) /*@*/ {
  +static inline int xisdigit(int c) {
       return (c >= (int)'0' && c <= (int)'9');
   }
  -/*@unused@*/ static inline int xisalnum(int c) /*@*/ {
  +static inline int xisalnum(int c) {
       return (xisalpha(c) || xisdigit(c));
   }
  -/*@unused@*/ static inline int xisblank(int c) /*@*/ {
  +static inline int xisblank(int c) {
       return (c == (int)' ' || c == (int)'\t');
   }
  -/*@unused@*/ static inline int xisspace(int c) /*@*/ {
  +static inline int xisspace(int c) {
       return (xisblank(c) || c == (int)'\n' || c == (int)'\r' || c == 
(int)'\f' || c == (int)'\v');
   }
  -/*@unused@*/ static inline int xiscntrl(int c) /*@*/ {
  +static inline int xiscntrl(int c) {
       return (c < (int)' ');
   }
  -/*@unused@*/ static inline int xisascii(int c) /*@*/ {
  +static inline int xisascii(int c) {
       return ((c & 0x80) != 0x80);
   }
  -/*@unused@*/ static inline int xisprint(int c) /*@*/ {
  +static inline int xisprint(int c) {
       return (c >= (int)' ' && xisascii(c));
   }
  -/*@unused@*/ static inline int xisgraph(int c) /*@*/ {
  +static inline int xisgraph(int c) {
       return (c > (int)' ' && xisascii(c));
   }
  -/*@unused@*/ static inline int xispunct(int c) /*@*/ {
  +static inline int xispunct(int c) {
       return (xisgraph(c) && !xisalnum(c));
   }
   
  -/*@unused@*/ static inline int xtolower(int c) /*@*/ {
  +static inline int xtolower(int c) {
       return ((xisupper(c)) ? (c | ('a' - 'A')) : c);
   }
  -/*@unused@*/ static inline int xtoupper(int c) /*@*/ {
  +static inline int xtoupper(int c) {
       return ((xislower(c)) ? (c & ~('a' - 'A')) : c);
   }
   
  @@ -589,40 +555,30 @@
    * Locale insensitive strcasecmp(3).
    */
   int xstrcasecmp(const char * s1, const char * s2)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmio
    * Locale insensitive strncasecmp(3).
    */
   int xstrncasecmp(const char *s1, const char * s2, size_t n)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmio
    * Force encoding of string.
    */
  -/*@only@*/ /*@null@*/
  -const char * xstrtolocale(/*@only@*/ const char *str)
  -     /*@modifies *str @*/;
  +const char * xstrtolocale(const char *str);
   
   /** \ingroup rpmio
    * Force encoding of string with strdup return.
    */
  -/*@only@*/ /*@null@*/
  -char * xstrdup_iconv_check (/*@null@*/ const char * buffer,
  -             /*@null@*/ const char * tocode)
  -     /*@*/;
  +char * xstrdup_iconv_check (const char * buffer, const char * tocode);
   
   /**
    * Unreference a I/O buffer instance.
    * @param iob                hash table
    * @return           NULL if free'd
    */
  -/*@unused@*/ /*@null@*/
  -rpmiob rpmiobUnlink (/*@killref@*/ /*@null@*/ rpmiob iob)
  -     /*@globals fileSystem @*/
  -     /*@modifies iob, fileSystem @*/;
  +rpmiob rpmiobUnlink (rpmiob iob);
   #define      rpmiobUnlink(_iob)      \
       ((rpmiob)rpmioUnlinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -631,10 +587,7 @@
    * @param iob                I/O buffer
    * @return           new I/O buffer reference
    */
  -/*@unused@*/ /*@newref@*/ /*@null@*/
  -rpmiob rpmiobLink (/*@null@*/ rpmiob iob)
  -     /*@globals fileSystem @*/
  -     /*@modifies iob, fileSystem @*/;
  +rpmiob rpmiobLink (rpmiob iob);
   #define      rpmiobLink(_iob)        \
       ((rpmiob)rpmioLinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -643,10 +596,7 @@
    * @param iob                I/O buffer
    * @return           NULL on last dereference
    */
  -/*@null@*/
  -rpmiob rpmiobFree( /*@killref@*/ rpmiob iob)
  -     /*@globals fileSystem @*/
  -     /*@modifies iob, fileSystem @*/;
  +rpmiob rpmiobFree(rpmiob iob);
   #define      rpmiobFree(_iob)        \
       ((rpmiob)rpmioFreePoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -655,26 +605,21 @@
    * @param len                no. of octets to allocate
    * @return           new I/O buffer
    */
  -/*@newref@*/ /*@null@*/
  -rpmiob rpmiobNew(size_t len)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  +rpmiob rpmiobNew(size_t len);
   
   /**
    * Empty an I/O buffer.
    * @param iob                I/O buffer
    * @return           I/O buffer
    */
  -rpmiob rpmiobEmpty(/*@returned@*/ rpmiob iob)
  -     /*@modifies iob @*/;
  +rpmiob rpmiobEmpty(rpmiob iob);
   
   /**
    * Trim trailing white space.
    * @param iob                I/O buffer
    * @return           I/O buffer
    */
  -rpmiob rpmiobRTrim(/*@returned@*/ rpmiob iob)
  -     /*@modifies iob @*/;
  +rpmiob rpmiobRTrim(rpmiob iob);
   
   /**
    * Append string to I/O buffer.
  @@ -683,32 +628,28 @@
    * @param nl         append NL?
    * @return           I/O buffer
    */
  -rpmiob rpmiobAppend(/*@returned@*/ rpmiob iob, const char * s, size_t nl)
  -     /*@modifies iob @*/;
  +rpmiob rpmiobAppend(rpmiob iob, const char * s, size_t nl);
   
   /**
    * Return I/O buffer.
    * @param iob                I/O buffer
    * @return           I/O buffer (as octets)
    */
  -rpmuint8_t * rpmiobBuf(rpmiob iob)
  -     /*@*/;
  +rpmuint8_t * rpmiobBuf(rpmiob iob);
   
   /**
    * Return I/O buffer (as string).
    * @param iob                I/O buffer
    * @return           I/O buffer (as string)
    */
  -char * rpmiobStr(rpmiob iob)
  -     /*@*/;
  +char * rpmiobStr(rpmiob iob);
   
   /**
    * Return I/O buffer len.
    * @param iob                I/O buffer
    * @return           I/O buffer length
    */
  -size_t rpmiobLen(rpmiob iob)
  -     /*@*/;
  +size_t rpmiobLen(rpmiob iob);
   
   #if defined(_RPMIOB_INTERNAL)
   /**
  @@ -717,9 +658,7 @@
    * @retval *iobp     I/O buffer
    * @return           0 on success
    */
  -int rpmiobSlurp(const char * fn, rpmiob * iobp)
  -        /*@globals h_errno, fileSystem, internalState @*/
  -        /*@modifies *iobp, fileSystem, internalState @*/;
  +int rpmiobSlurp(const char * fn, rpmiob * iobp);
   #endif
   
   /**
  @@ -727,9 +666,7 @@
    * @param P          parser state
    * @return           NULL
    */
  -/*@null@*/
  -rpmioP rpmioPFree(/*@only@*/ /*@null@*/ rpmioP P)
  -     /*@modifies P @*/;
  +rpmioP rpmioPFree(rpmioP P);
   
   /**
    * Parse next command out of a string incrementally.
  @@ -737,8 +674,7 @@
    * @param str                string to parse
    * @return           RPMRC_OK on success
    */
  -rpmRC rpmioParse(rpmioP *Pptr, const char * str)
  -     /*@modifies *Pptr @*/;
  +rpmRC rpmioParse(rpmioP *Pptr, const char * str);
   
   #ifdef __cplusplus
   }
  @@ -771,13 +707,13 @@
   
   #else        /* __cplusplus */
   
  -/*@unused@*/ static inline /*@null@*/
  -void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
  -     /*@modifies p @*/
  +static inline
  +void * _free(const void * p)
   {
       if (p != NULL)   free((void *)p);
       return NULL;
   }
  +
   #endif       /* __cplusplus */
   
   #endif       /* defined(WITH_DMALLOC) */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmlog.h
  ============================================================================
  $ cvs diff -u -r2.24.4.4 -r2.24.4.5 rpmlog.h
  --- rpm/rpmio/rpmlog.h        29 Sep 2014 18:26:48 -0000      2.24.4.4
  +++ rpm/rpmio/rpmlog.h        25 Jun 2016 07:31:08 -0000      2.24.4.5
  @@ -9,6 +9,8 @@
   #include <stdio.h>
   #include <stdarg.h>
   
  +#include <rpmdefs.h>
  +
   /**
    * RPM Log levels.
    * priorities/facilities are encoded into a single 32-bit quantity, where the
  @@ -19,7 +21,6 @@
    *
    * priorities (these are ordered)
    */
  -/*@-typeuse@*/
   typedef enum rpmlogLvl_e {
       RPMLOG_EMERG     = 0,    /*!< system is unusable */
       RPMLOG_ALERT     = 1,    /*!< action must be taken immediately */
  @@ -30,7 +31,6 @@
       RPMLOG_INFO              = 6,    /*!< informational */
       RPMLOG_DEBUG     = 7     /*!< debug-level messages */
   } rpmlogLvl;
  -/*@=typeuse@*/
   
   #define      RPMLOG_PRIMASK  0x07    /* mask to extract priority part 
(internal) */
                                /* extract priority */
  @@ -62,12 +62,11 @@
       { "warning",RPMLOG_WARNING },
       { NULL, -1 }
     };
  -#endif
  +#endif       /* RPMLOG_NAMES */
   
   /**
    * facility codes
    */
  -/*@-enummemuse -typeuse@*/
   typedef      enum rpmlogFac_e {
       RPMLOG_KERN              = (0<<3),       /*!< kernel messages */
       RPMLOG_USER              = (1<<3),       /*!< random user-level messages 
*/
  @@ -95,7 +94,6 @@
   #define      RPMLOG_NFACILITIES 24   /*!< current number of facilities */
       RPMLOG_ERRMSG    = (((unsigned)(RPMLOG_NFACILITIES+0))<<3)
   } rpmlogFac;
  -/*@=enummemuse =typeuse@*/
   
   #define      RPMLOG_FACMASK  0x03f8  /*!< mask to extract facility part */
   #define      RPMLOG_FAC(p)   (((p) & RPMLOG_FACMASK) >> 3)
  @@ -151,11 +149,11 @@
   
   /**
    */
  -typedef /*@abstract@*/ struct rpmlogRec_s * rpmlogRec;
  +typedef struct rpmlogRec_s * rpmlogRec;
   
   /**
    */
  -typedef /*@abstract@*/ void * rpmlogCallbackData;
  +typedef void * rpmlogCallbackData;
   
   /**
     * @param rec               rpmlog record
  @@ -165,8 +163,7 @@
     *                  RPMLOG_EXIT to exit after processing
     *                  0 to return after callback.
     */
  -typedef int (*rpmlogCallback) (rpmlogRec rec, rpmlogCallbackData data)
  -     /*@*/;
  +typedef int (*rpmlogCallback) (rpmlogRec rec, rpmlogCallbackData data);
   
   /**
    * Option flags for callback return value.
  @@ -180,7 +177,6 @@
   struct rpmlogRec_s {
       int              code;
       rpmlogLvl        pri;            /* priority */
  -/*@owned@*/ /*@relnull@*/
       const char * message;
   };
   #endif
  @@ -194,11 +190,9 @@
    * @param pri                log priority
    * @return           message prefix (or "" for none)
    */
  -/*@observer@*/
   const char * rpmlogLevelPrefix(rpmlogLvl pri)
        RPM_GNUC_CONST
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /**
    * Set rpmlog callback function.
  @@ -206,9 +200,7 @@
    * @param data               callback private (user) data
    * @return           previous rpmlog callback function
    */
  -rpmlogCallback rpmlogSetCallback(rpmlogCallback cb, rpmlogCallbackData data)
  -     /*@globals internalState@*/
  -     /*@modifies internalState @*/;
  +rpmlogCallback rpmlogSetCallback(rpmlogCallback cb, rpmlogCallbackData data);
   
   /**
    * Get rpmlog callback function and data.
  @@ -216,94 +208,71 @@
    * @param data               pointer to callback private (user) data
    * @return           0
    */
  -int rpmlogGetCallback(rpmlogCallback *cb, rpmlogCallbackData *data)
  -     /*@globals internalState @*/
  -     /*@modifies *cb, *data, internalState @*/;
  +int rpmlogGetCallback(rpmlogCallback *cb, rpmlogCallbackData *data);
   
   /**
    * Return number of messages.
    * @return           number of messages
    */
   int rpmlogGetNrecs(void)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /**
    * Retrieve log message string from rpmlog record
    * @param rec                rpmlog record
    * @return           log message
    */
  -/*@observer@*/ /*@retexpose@*/ /*@null@*/
  -const char * rpmlogRecMessage(/*@null@*/ rpmlogRec rec)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +const char * rpmlogRecMessage(rpmlogRec rec)
  +     RPM_GNUC_PURE;
   
   /**
    * Retrieve log priority from rpmlog record
    * @param rec                rpmlog record
    * @return           log priority
    */
  -rpmlogLvl rpmlogRecPriority(/*@null@*/ rpmlogRec rec)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +rpmlogLvl rpmlogRecPriority(rpmlogRec rec)
  +     RPM_GNUC_PURE;
   
   /**
    * Print all rpmError() messages.
    * @param f          file handle (NULL uses stderr)
    */
  -void rpmlogPrint(/*@null@*/ FILE *f)
  -     /*@modifies *f @*/;
  +void rpmlogPrint(FILE *f);
   
   /**
    * Close desriptor used to write to system logger.
    * @todo Implement.
    */
  -/*@unused@*/
  -void rpmlogClose (void)
  -     /*@globals internalState@*/
  -     /*@modifies internalState @*/;
  +void rpmlogClose (void);
   
   /**
    * Open connection to system logger.
    * @todo Implement.
    */
  -/*@unused@*/
   void rpmlogOpen (const char * ident, int option, int facility)
  -     RPM_GNUC_CONST
  -     /*@globals internalState@*/
  -     /*@modifies internalState @*/;
  +     RPM_GNUC_CONST;
   
   /**
    * Set the log mask level.
    * @param mask               log mask (0 is no operation)
    * @return           previous log mask
    */
  -int rpmlogSetMask (int mask)
  -     /*@globals internalState@*/
  -     /*@modifies internalState @*/;
  +int rpmlogSetMask (int mask);
   
   /**
    * Generate a log message using FMT string and option arguments.
    * Note: inline'd to avoid debugging insturmentation overhead.
    */
  -/*@mayexit@*/ /*@printflike@*/
   void _rpmlog (int code, const char *fmt, ...)
  -#if defined(__GNUC__) && __GNUC__ >= 2
  -     /* issue a warning if the format string doesn't match arguments */
  -     __attribute__((format (printf, 2, 3)))
  -#endif
  -     /*@*/;
  +     RPM_GNUC_PRINTF(2, 3);
   
   /**
    * Same as _rpmlog with stdarg argument list.
    */
  -void vrpmlog (unsigned code, const char * fmt, va_list ap)
  -     /*@*/;
  +void vrpmlog (unsigned code, const char * fmt, va_list ap);
   
  -/*@mayexit@*/ /*@printflike@*/
   static inline
   void rpmlog (int code, const char *fmt, ...)
  -     /*@*/
   {
       unsigned pri = RPMLOG_PRI(code);
       unsigned mask = RPMLOG_MASK(pri);
  @@ -316,15 +285,11 @@
       }
   }
   
  -/*@-exportlocal@*/
   /**
    * Return text of last rpmError() message.
    * @return           text of last message
    */
  -/*@-redecl@*/
  -/*@observer@*/ /*@null@*/ const char * rpmlogMessage(void)
  -     /*@*/;
  -/*@=redecl@*/
  +const char * rpmlogMessage(void);
   
   /**
    * Return error code from last rpmError() message.
  @@ -334,19 +299,14 @@
    * @return           code from last message
    */
   int rpmlogCode(void)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /**
    * Set rpmlog file handle.
    * @param fp         rpmlog file handle (NULL uses stdout/stderr)
    * @return           previous rpmlog file handle
    */
  -/*@null@*/
  -FILE * rpmlogSetFile(/*@null@*/ FILE * fp)
  -     /*@globals internalState@*/
  -     /*@modifies internalState @*/;
  -/*@=exportlocal@*/
  +FILE * rpmlogSetFile(FILE * fp);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmmacro.h
  ============================================================================
  $ cvs diff -u -r2.56.4.8 -r2.56.4.9 rpmmacro.h
  --- rpm/rpmio/rpmmacro.h      27 Sep 2014 15:51:24 -0000      2.56.4.8
  +++ rpm/rpmio/rpmmacro.h      25 Jun 2016 07:31:08 -0000      2.56.4.9
  @@ -6,8 +6,10 @@
    */
   #include <stdio.h>
   
  -typedef /*@abstract@*/ struct MacroEntry_s * MacroEntry;
  -typedef /*@abstract@*/ struct MacroContext_s * MacroContext;
  +#include <rpmdefs.h>
  +
  +typedef struct MacroEntry_s * MacroEntry;
  +typedef struct MacroContext_s * MacroContext;
   
   #if defined(_MACRO_INTERNAL)
   #include <rpmiotypes.h>
  @@ -21,31 +23,19 @@
       int      used;                   /*!< No. of expansions. */
       short level;             /*!< Scoping level. */
       unsigned short flags;    /*!< Flags. */
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                       /*!< (unused) keep splint happy */
  -#endif
   };
   
   /*! The structure used to store the set of macros in a context. */
   struct MacroContext_s {
       struct rpmioItem_s _item;        /*!< usage mutex and pool identifier. */
  -/*@owned@*//*@null@*/
       MacroEntry *macroTable;  /*!< Macro entry table for context. */
       int      macrosAllocated;        /*!< No. of allocated macros. */
       int      firstFree;              /*!< No. of macros. */
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                       /*!< (unused) keep splint happy */
  -#endif
   };
   #endif
   
  -/*@-redecl@*/
  -/*@checked@*/
   extern MacroContext rpmGlobalMacroContext;
   
  -/*@checked@*/
   extern MacroContext rpmCLIMacroContext;
   
   /** \ingroup rpmrc
  @@ -53,9 +43,7 @@
    * This is a colon separated list of files. URI's are permitted as well,
    * identified by the token '://', so file paths must not begin with '//'.
    */
  -/*@observer@*/ /*@checked@*/
   extern const char * rpmMacrofiles;
  -/*@=redecl@*/
   
   /**
    * Markers for sources of macros added throughout rpm.
  @@ -79,9 +67,7 @@
    * @param mc         macro context (NULL uses global context).
    * @param fp         file stream (NULL uses stderr).
    */
  -void rpmDumpMacroTable(/*@null@*/ MacroContext mc, /*@null@*/ FILE * fp)
  -     /*@globals rpmGlobalMacroContext, fileSystem @*/
  -     /*@modifies *fp, fileSystem @*/;
  +void rpmDumpMacroTable(MacroContext mc, FILE * fp);
   
   /**
    * Return macro entries as string array.
  @@ -92,10 +78,8 @@
    * @return           no. of entries
    */
   int
  -rpmGetMacroEntries(/*@null@*/ MacroContext mc, /*@null@*/ void * _mire,
  -             int used, /*@null@*/ const char *** avp)
  -     /*@globals rpmGlobalMacroContext @*/
  -     /*@modifies _mire, *avp @*/;
  +rpmGetMacroEntries(MacroContext mc, void * _mire,
  +             int used, const char *** avp);
   
   /**
    * Check whether configuration file is moderately secure to load.
  @@ -103,8 +87,7 @@
    * @return           1 on success, 0 on failure
    * XXX FIXME: rpmRC return?
    */
  -int rpmSecuritySaneFile(const char *filename)
  -     /*@globals internalState @*/;
  +int rpmSecuritySaneFile(const char *filename);
   
   /**
    * Return URL path(s) from a (URL prefixed) pattern glob.
  @@ -114,10 +97,7 @@
    * @return           0 on success
    * XXX FIXME: rpmRC return?
    */
  -int rpmGlob(const char * patterns, /*@out@*/ int * argcPtr,
  -             /*@out@*/ const char *** argvPtr)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies *argcPtr, *argvPtr, fileSystem, internalState @*/;
  +int rpmGlob(const char * patterns, int * argcPtr, const char *** argvPtr);
   
   /**
    * Expand macro into buffer.
  @@ -129,10 +109,7 @@
    * @param slen               size of buffer
    * @return           0 on success
    */
  -int expandMacros(/*@null@*/ void * spec, /*@null@*/ MacroContext mc,
  -             /*@in@*/ /*@out@*/ char * sbuf, size_t slen)
  -     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  -     /*@modifies *sbuf, rpmGlobalMacroContext, fileSystem, internalState @*/;
  +int expandMacros(void * spec, MacroContext mc, char * sbuf, size_t slen);
   
   /**
    * Add macro to context.
  @@ -143,10 +120,8 @@
    * @param b          macro body
    * @param level              macro recursion level (0 is entry API)
    */
  -void addMacro(/*@null@*/ MacroContext mc, const char * n,
  -             /*@null@*/ const char * o, /*@null@*/ const char * b, int level)
  -     /*@globals rpmGlobalMacroContext, internalState @*/
  -     /*@modifies mc, rpmGlobalMacroContext, internalState @*/;
  +void addMacro(MacroContext mc, const char * n,
  +             const char * o, const char * b, int level);
   
   /**
    * Delete macro from context.
  @@ -154,9 +129,7 @@
    * @param mc         macro context (NULL uses global context).
    * @param n          macro name
    */
  -void delMacro(/*@null@*/ MacroContext mc, const char * n)
  -     /*@globals rpmGlobalMacroContext @*/
  -     /*@modifies mc, rpmGlobalMacroContext @*/;
  +void delMacro(MacroContext mc, const char * n);
   
   /**
    * Define macro in context.
  @@ -165,9 +138,7 @@
    * @param level              macro recursion level (0 is entry API)
    * @return           0 on success
    */
  -int rpmDefineMacro(/*@null@*/ MacroContext mc, const char * macro, int level)
  -     /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
  -     /*@modifies mc, rpmGlobalMacroContext, internalState @*/;
  +int rpmDefineMacro(MacroContext mc, const char * macro, int level);
   
   /**
    * Undefine macro in context.
  @@ -175,18 +146,14 @@
    * @param macro              macro name
    * @return           0 on success
    */
  -int rpmUndefineMacro(/*@null@*/ MacroContext mc, const char * macro)
  -     /*@globals rpmGlobalMacroContext, internalState @*/
  -     /*@modifies mc, rpmGlobalMacroContext, internalState @*/;
  +int rpmUndefineMacro(MacroContext mc, const char * macro);
   
   /**
    * Load macros from specific context into global context.
    * @param mc         macro context (NULL does nothing).
    * @param level              macro recursion level (0 is entry API)
    */
  -void rpmLoadMacros(/*@null@*/ MacroContext mc, int level)
  -     /*@globals rpmGlobalMacroContext, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, internalState @*/;
  +void rpmLoadMacros(MacroContext mc, int level);
   
   /**
    * Load macro context from a macro file.
  @@ -194,28 +161,20 @@
    * @param fn         macro file name
    * @param nesting    max load recursion depth, 0 disables.
    */
  -int rpmLoadMacroFile(/*@null@*/ MacroContext mc, const char * fn, int 
nesting)
  -     /*@globals rpmGlobalMacroContext,
  -             h_errno, fileSystem, internalState @*/
  -     /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/;
  +int rpmLoadMacroFile(MacroContext mc, const char * fn, int nesting);
   
   /**
    * Initialize macro context from set of macrofile(s).
    * @param mc         macro context
    * @param macrofiles colon separated list of macro files (NULL does nothing)
    */
  -void rpmInitMacros(/*@null@*/ MacroContext mc, const char * macrofiles)
  -     /*@globals rpmGlobalMacroContext, rpmCLIMacroContext,
  -             h_errno, fileSystem, internalState @*/
  -     /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/;
  +void rpmInitMacros(MacroContext mc, const char * macrofiles);
   
   /**
    * Destroy macro context.
    * @param mc         macro context (NULL uses global context).
    */
  -void rpmFreeMacros(/*@null@*/ MacroContext mc)
  -     /*@globals rpmGlobalMacroContext @*/
  -     /*@modifies mc, rpmGlobalMacroContext @*/;
  +void rpmFreeMacros(MacroContext mc);
   
   typedef enum rpmCompressedMagic_e {
       COMPRESSED_NOT           = 0,    /*!< not compressed */
  @@ -236,19 +195,15 @@
    * @retval compressed        address of compression type
    * @return           0 on success, 1 on I/O error
    */
  -int isCompressed(const char * file, /*@out@*/ rpmCompressedMagic * 
compressed)
  -     /*@globals h_errno, fileSystem, internalState @*/
  -     /*@modifies *compressed, fileSystem, internalState @*/;
  +int isCompressed(const char * file, rpmCompressedMagic * compressed);
   
   /**
    * Return (malloc'ed) concatenated macro expansion(s).
    * @param arg                macro(s) to expand (NULL terminates list)
    * @return           macro expansion (malloc'ed)
    */
  -char * rpmExpand(/*@null@*/ const char * arg, ...)
  -     RPM_GNUC_NULL_TERMINATED
  -     /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, internalState @*/;
  +char * rpmExpand(const char * arg, ...)
  +     RPM_GNUC_NULL_TERMINATED;
   
   /**
    * Return (malloc'ed) concatenated macro expansion(s) in a context.
  @@ -256,10 +211,8 @@
    * @param arg                macro(s) to expand (NULL terminates list)
    * @return           macro expansion (malloc'ed)
    */
  -char * rpmMCExpand(/*@null@*/ MacroContext mc, /*@null@*/ const char * arg, 
...)
  -     RPM_GNUC_NULL_TERMINATED
  -     /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, internalState @*/;
  +char * rpmMCExpand(MacroContext mc, const char * arg, ...)
  +     RPM_GNUC_NULL_TERMINATED;
   
   /**
    * Canonicalize file path.
  @@ -267,9 +220,7 @@
    * @param path               path to canonicalize (in-place)
    * @return           pointer to path
    */
  -/*@null@*/
  -char * rpmCleanPath(/*@returned@*/ /*@null@*/ char * path)
  -     /*@modifies *path @*/;
  +char * rpmCleanPath(char * path);
   
   /**
    * Return (malloc'ed) expanded, canonicalized, file path.
  @@ -277,12 +228,8 @@
    * @param path               macro(s) to expand (NULL terminates list)
    * @return           canonicalized path (malloc'ed)
    */
  -/*@-redecl@*/ /* LCL: shrug */
  -char * rpmGetPath(/*@null@*/ const char * path, ...)
  -     RPM_GNUC_NULL_TERMINATED
  -     /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, internalState @*/;
  -/*@=redecl@*/
  +char * rpmGetPath(const char * path, ...)
  +     RPM_GNUC_NULL_TERMINATED;
   
   /**
    * Merge 3 args into path, any or all of which may be a url.
  @@ -294,13 +241,9 @@
    * @param urlfile    file URL (often a file, or NULL)
    * @return           expanded, merged, canonicalized path (malloc'ed)
    */
  -/*@-redecl@*/ /* LCL: shrug */
  -const char * rpmGenPath(/*@null@*/ const char * urlroot,
  -                     /*@null@*/ const char * urlmdir,
  -                     /*@null@*/ const char * urlfile)
  -     /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, internalState @*/;
  -/*@=redecl@*/
  +const char * rpmGenPath(const char * urlroot,
  +                     const char * urlmdir,
  +                     const char * urlfile);
   
   /**
    * Return macro expansion as a numeric value.
  @@ -309,9 +252,7 @@
    * @param arg                macro to expand
    * @return           numeric value
    */
  -int rpmExpandNumeric (const char * arg)
  -     /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
  -     /*@modifies rpmGlobalMacroContext, internalState @*/;
  +int rpmExpandNumeric (const char * arg);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpgp.c
  ============================================================================
  $ cvs diff -u -r2.127.2.20 -r2.127.2.21 rpmpgp.c
  --- rpm/rpmio/rpmpgp.c        10 May 2016 17:03:41 -0000      2.127.2.20
  +++ rpm/rpmio/rpmpgp.c        25 Jun 2016 07:31:08 -0000      2.127.2.21
  @@ -7,6 +7,7 @@
   
   #define      _RPMIOB_INTERNAL
   #include <rpmiotypes.h>
  +#include <yarn.h>
   
   #include <rpmio.h>
   #include <rpmmacro.h>
  @@ -28,6 +29,7 @@
   #if defined(WITH_TOMCRYPT)
   #include <rpmltc.h>
   #endif
  +
   #include "debug.h"
   
   /*@access pgpDig @*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpgp.h
  ============================================================================
  $ cvs diff -u -r2.108.2.18 -r2.108.2.19 rpmpgp.h
  --- rpm/rpmio/rpmpgp.h        15 Apr 2016 18:09:19 -0000      2.108.2.18
  +++ rpm/rpmio/rpmpgp.h        25 Jun 2016 07:31:08 -0000      2.108.2.19
  @@ -10,24 +10,23 @@
    *   Copyright (C) The Internet Society (1998).  All Rights Reserved.
    */
   
  +#include <stdio.h>
  +#include <stdint.h>
   #include <string.h>
  -#include <popt.h>
  +
   #include <rpmiotypes.h>
  -#include <yarn.h>
  +#include <rpmdefs.h>
   
   #if defined(_RPMPGP_INTERNAL)
   #include <rpmsw.h>
   
  -/*@unchecked@*/
   extern int _pgp_error_count;
   
   /** \ingroup rpmpgp
    * Values parsed from OpenPGP signature/pubkey packet(s).
    */
   struct pgpDigParams_s {
  -/*@only@*/ /*@null@*/
       const char * userid;
  -/*@dependent@*/ /*@null@*/
       const rpmuint8_t * hash;
       rpmuint8_t tag;
   
  @@ -57,16 +56,12 @@
       struct pgpDigParams_s signature;
       struct pgpDigParams_s pubkey;
   
  -/*@observer@*/ /*@null@*/
       const char * build_sign;
  -/*@observer@*/ /*@null@*/
       const char * pubkey_algoN;
  -/*@observer@*/ /*@null@*/
       const char * hash_algoN;
   
       rpmuint32_t sigtag;              /*!< Package signature tag. */
       rpmuint32_t sigtype;     /*!< Package signature data type. */
  -/*@relnull@*/
       const void * sig;                /*!< Package signature. */
       size_t siglen;           /*!< Package signature length. */
       const void * pub;                /*!< Package pubkey. */
  @@ -76,41 +71,28 @@
       struct rpmop_s dops;     /*!< Digest operation statistics. */
       struct rpmop_s sops;     /*!< Signature operation statistics. */
   
  -    int (*findPubkey) (void * _ts, /*@null@*/ void * _dig)
  -     /*@modifies *_ts, *_dig @*/;/*!< Find pubkey, i.e. rpmtsFindPubkey(). */
  -/*@null@*/
  +    int (*findPubkey) (void * _ts, void * _dig);
  +                             /*!< Find pubkey, i.e. rpmtsFindPubkey(). */
       void * _ts;                      /*!< Find pubkey argument, i.e. rpmts. 
*/
   
       rpmuint8_t ** ppkts;     /*!< Parsed OpenPGP 2440/4880 packets. */
       int npkts;                       /*!< No. of parsed packets. */
       size_t nbytes;           /*!< No. bytes of plain text. */
   
  -/*@only@*/ /*@null@*/
       DIGEST_CTX hsha;         /*!< header hash context. */
  -/*@only@*/ /*@null@*/
       DIGEST_CTX hdsa;         /*!< (dsa) header sha1 hash context. */
  -/*@only@*/ /*@null@*/
       void * sha1;             /*!< (dsa) signature hash. */
       size_t sha1len;          /*!< (dsa) signature hash length. */
   
  -/*@only@*/ /*@null@*/
       DIGEST_CTX hecdsa;               /*!< (ecdsa) header hash context. */
   
  -/*@only@*/ /*@null@*/
       DIGEST_CTX md5ctx;               /*!< (md5) hash context. */
  -/*@only@*/ /*@null@*/
       DIGEST_CTX hrsa;         /*!< (rsa) header hash context. */
  -/*@only@*/ /*@null@*/
       void * md5;                      /*!< (rsa) signature hash. */
       size_t md5len;           /*!< (rsa) signature hash length. */
   
  -/*@owned@*/ /*@relnull@*/
       void * impl;             /*!< Implementation data */
   
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                       /*!< (unused) keep splint happy */
  -#endif
   };
   #endif       /* _RPMPGP_INTERNAL */
   
  @@ -118,7 +100,6 @@
    */
   typedef const struct pgpValTbl_s {
       int val;
  -/*@observer@*/
       const char * str;
   } * pgpValTbl;
    
  @@ -157,7 +138,6 @@
   
   /** \ingroup rpmpgp
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpTagTbl[];
   
   /** \ingroup rpmpgp
  @@ -206,7 +186,6 @@
    * There are a number of possible meanings for a signature, which are
    * specified in a signature type octet in any given signature.
    */
  -/*@-typeuse@*/
   typedef enum pgpSigType_e {
       PGPSIGTYPE_BINARY                 = 0x00, /*!< Binary document */
       PGPSIGTYPE_TEXT           = 0x01, /*!< Canonical text document */
  @@ -228,11 +207,9 @@
       PGPSIGTYPE_TIMESTAMP      = 0x40, /*!< Timestamp */
       PGPSIGTYPE_CONFIRM                = 0x50  /*!< Third-Party confirmation 
*/
   } pgpSigType;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpSigTypeTbl[];
   
   /** \ingroup rpmpgp
  @@ -258,7 +235,6 @@
    * encryption. Implementations SHOULD implement RSA keys.
    * Implementations MAY implement any other algorithm.
    */
  -/*@-typeuse@*/
   typedef enum pgpPubkeyAlgo_e {
       PGPPUBKEYALGO_UNKNOWN    =  0,
       PGPPUBKEYALGO_RSA                =  1,   /*!< RSA */
  @@ -271,17 +247,14 @@
       PGPPUBKEYALGO_ELGAMAL    = 20,   /*!< Elgamal */
       PGPPUBKEYALGO_EDDSA              = 22    /*!< EDDSA */
   } pgpPubkeyAlgo;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpPubkeyTbl[];
   
   /** \ingroup rpmpgp
    * Symmetric key (string, value) pairs.
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpSymkeyTbl[];
   
   /** \ingroup rpmpgp
  @@ -299,25 +272,21 @@
    * Implementations MUST implement uncompressed data. Implementations
    * SHOULD implement ZIP. Implementations MAY implement ZLIB.
    */
  -/*@-typeuse@*/
   typedef enum pgpCompressAlgo_e {
       PGPCOMPRESSALGO_NONE     =  0,   /*!< Uncompressed */
       PGPCOMPRESSALGO_ZIP              =  1,   /*!< ZIP */
       PGPCOMPRESSALGO_ZLIB     =  2,   /*!< ZLIB */
       PGPCOMPRESSALGO_BZIP2    =  3    /*!< BZIP2 */
   } pgpCompressAlgo;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    * Compression (string, value) pairs.
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpCompressionTbl[];
   
   /** \ingroup rpmpgp
    * Hash (string, value) pairs.
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpHashTbl[];
   
   /** \ingroup rpmpgp
  @@ -459,7 +428,6 @@
    * marked critical but is unknown to the evaluating software, the
    * evaluator SHOULD consider the signature to be in error.
    */
  -/*@-typeuse@*/
   typedef enum pgpSubType_e {
       PGPSUBTYPE_NONE          =   0, /*!< none */
       PGPSUBTYPE_SIG_CREATE_TIME       =   2, /*!< signature creation time */
  @@ -501,12 +469,10 @@
   
       PGPSUBTYPE_CRITICAL              = 128  /*!< critical subpacket marker */
   } pgpSubType;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    * Subtype (string, value) pairs.
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpSubTypeTbl[];
   
   /** \ingroup rpmpgp
  @@ -944,7 +910,6 @@
   
   /** \ingroup rpmpgp
    */
  -/*@-typeuse@*/
   typedef enum pgpArmor_e {
       PGPARMOR_ERR_CRC_CHECK           = -7,
       PGPARMOR_ERR_BODY_DECODE         = -6,
  @@ -963,17 +928,14 @@
       PGPARMOR_PRIVKEY         =  6, /*!< PRIVATE KEY BLOCK */
       PGPARMOR_SECKEY          =  7  /*!< SECRET KEY BLOCK */
   } pgpArmor;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    * Armor (string, value) pairs.
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpArmorTbl[];
   
   /** \ingroup rpmpgp
    */
  -/*@-typeuse@*/
   typedef enum pgpArmorKey_e {
       PGPARMORKEY_VERSION              = 1, /*!< Version: */
       PGPARMORKEY_COMMENT              = 2, /*!< Comment: */
  @@ -981,12 +943,10 @@
       PGPARMORKEY_HASH         = 4, /*!< Hash: */
       PGPARMORKEY_CHARSET              = 5  /*!< Charset: */
   } pgpArmorKey;
  -/*@=typeuse@*/
   
   /** \ingroup rpmpgp
    * Armor key (string, value) pairs.
    */
  -/*@observer@*/ /*@unchecked@*/ /*@unused@*/
   extern struct pgpValTbl_s pgpArmorKeyTbl[];
   
   #if defined(_RPMPGP_INTERNAL)
  @@ -1021,7 +981,6 @@
   };
   #endif       /* _RPMPGP_INTERNAL */
   
  -/*@-fcnuse@*/
   #ifdef __cplusplus
   extern "C" {
   #endif
  @@ -1032,9 +991,8 @@
    * @param nbytes     no. of bytes
    * @return           native-endian integer
    */
  -/*@unused@*/ static inline
  +static inline
   unsigned int pgpGrab(const rpmuint8_t * s, size_t nbytes)
  -     /*@*/
   {
       unsigned int i = 0;
       size_t nb = (nbytes <= sizeof(i) ? nbytes : sizeof(i));
  @@ -1051,9 +1009,8 @@
    * @retval *lenp     no. of bytes in packet
    * @return           no. of bytes in length prefix
    */
  -/*@unused@*/ static inline
  +static inline
   unsigned int pgpLen(const rpmuint8_t *s, unsigned int slen, unsigned int 
*lenp)
  -     /*@modifies *lenp @*/
   {
       unsigned int dlen = 0;
       unsigned int lenlen = 0;
  @@ -1077,10 +1034,8 @@
    * @param p          pointer to multiprecision integer
    * @return           no. of bits
    */
  -/*@unused@*/ static inline
  +static inline
   unsigned int pgpMpiBits(const rpmuint8_t * p)
  -     /*@requires maxRead(p) >= 1 @*/
  -     /*@*/
   {
       return (unsigned int) ((p[0] << 8) | p[1]);
   }
  @@ -1090,10 +1045,8 @@
    * @param p          pointer to multiprecision integer
    * @return           no. of bytes
    */
  -/*@unused@*/ static inline
  +static inline
   unsigned int pgpMpiLen(const rpmuint8_t * p)
  -     /*@requires maxRead(p) >= 1 @*/
  -     /*@*/
   {
       return (2 + ((pgpMpiBits(p)+7) >> 3));
   }
  @@ -1105,9 +1058,8 @@
    * @param nbytes     no. of bytes
    * @return           target buffer
    */
  -/*@unused@*/ static inline
  -char * pgpHexCvt(/*@returned@*/ char * t, const rpmuint8_t * s, size_t 
nbytes)
  -     /*@modifies *t @*/
  +static inline
  +char * pgpHexCvt(char * t, const rpmuint8_t * s, size_t nbytes)
   {
       static char hex[] = "0123456789abcdef";
       size_t ix;
  @@ -1128,9 +1080,8 @@
    * @param plen               no. of bytes
    * @return           hex formatted string
    */
  -/*@unused@*/ static inline /*@observer@*/
  +static inline
   char * pgpHexStr(const rpmuint8_t * p, size_t plen)
  -     /*@*/
   {
       static char prbuf[BUFSIZ];       /* XXX ick */
       static size_t nb = sizeof(prbuf) - 32;
  @@ -1146,10 +1097,8 @@
    * @param p          bytes
    * @return           hex formatted string
    */
  -/*@unused@*/ static inline /*@observer@*/
  +static inline
   const char * pgpMpiStr(const rpmuint8_t * p)
  -     /*@requires maxRead(p) >= 3 @*/
  -     /*@*/
   {
       static char prbuf[BUFSIZ];       /* XXX ick */
       static size_t nb = sizeof(prbuf) - 32;
  @@ -1169,11 +1118,9 @@
    * @param val                byte value to lookup
    * @return           string
    */
  -/*@unused@*/
   RPM_GNUC_PURE
  -static inline /*@observer@*/
  +static inline
   const char * pgpValStr(pgpValTbl vs, rpmuint8_t val)
  -     /*@*/
   {
       do {
        if (vs->val == (int)val)
  @@ -1182,38 +1129,30 @@
       return vs->str;
   }
   
  -/*@unused@*/
   RPM_GNUC_PURE
  -static inline /*@observer@*/
  +static inline
   const char * _pgpTag2Name(uint32_t tag)
  -     /*@*/
   {
       return pgpValStr(pgpTagTbl, (rpmuint8_t)tag);
   }
   
  -/*@unused@*/
   RPM_GNUC_PURE
  -static inline /*@observer@*/
  +static inline
   const char * _pgpSigType2Name(uint32_t sigtype)
  -     /*@*/
   {
       return pgpValStr(pgpSigTypeTbl, (rpmuint8_t)sigtype);
   }
   
  -/*@unused@*/
   RPM_GNUC_PURE
  -static inline /*@observer@*/
  +static inline
   const char * _pgpHashAlgo2Name(uint32_t algo)
  -     /*@*/
   {
       return pgpValStr(pgpHashTbl, (rpmuint8_t)algo);
   }
   
  -/*@unused@*/
   RPM_GNUC_PURE
  -static inline /*@observer@*/
  +static inline
   const char * _pgpPubkeyAlgo2Name(uint32_t algo)
  -     /*@*/
   {
       return pgpValStr(pgpPubkeyTbl, (rpmuint8_t)algo);
   }
  @@ -1224,11 +1163,9 @@
    * @param str                string to lookup
    * @return           byte (or 0 on failure)
    */
  -/*@unused@*/
   RPM_GNUC_PURE
  -static inline /*@observer@*/
  +static inline
   rpmuint8_t pgpStrVal(pgpValTbl vs, const char * str)
  -     /*@*/
   {
       do {
        if (!strcasecmp(str, vs->str))
  @@ -1244,11 +1181,9 @@
    * @param se         end-of-string address
    * @return           byte value
    */
  -/*@unused@*/
   RPM_GNUC_PURE
   static inline
   int pgpValTok(pgpValTbl vs, const char * s, const char * se)
  -     /*@*/
   {
       do {
        size_t vlen = strlen(vs->str);
  @@ -1264,11 +1199,7 @@
    * @param vs         table of (string,value) pairs
    * @param val                byte value to print
    */
  -/*@-exportlocal@*/
  -void pgpPrtVal(const char * pre, pgpValTbl vs, rpmuint8_t val)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  -/*@=exportlocal@*/
  +void pgpPrtVal(const char * pre, pgpValTbl vs, rpmuint8_t val);
   
   /** \ingroup rpmpgp
    * Print/parse an OpenPGP subtype packet.
  @@ -1278,11 +1209,7 @@
    * @return           0 on success
    */
   #if defined(_RPMPGP_INTERNAL)
  -/*@-exportlocal@*/
  -int pgpPrtSubType(const rpmuint8_t * h, size_t hlen, pgpSigType sigtype)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  -/*@=exportlocal@*/
  +int pgpPrtSubType(const rpmuint8_t * h, size_t hlen, pgpSigType sigtype);
   #endif
   
   /** \ingroup rpmpgp
  @@ -1291,22 +1218,13 @@
    * @return           0 on success
    */
   #if defined(_RPMPGP_INTERNAL)
  -/*@-exportlocal@*/
  -int pgpPrtSig(const pgpPkt pp)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +int pgpPrtSig(const pgpPkt pp);
   
   int pgpPrtSigParams(pgpDig dig, const pgpPkt pp, pgpPubkeyAlgo pubkey_algo,
  -                pgpSigType sigtype, const rpmuint8_t * p)
  -        /*@globals fileSystem @*/
  -        /*@modifies fileSystem @*/;
  +                pgpSigType sigtype, const rpmuint8_t * p);
   
   const rpmuint8_t * pgpPrtPubkeyParams(pgpDig dig, const pgpPkt pp,
  -                pgpPubkeyAlgo pubkey_algo, /*@returned@*/ const rpmuint8_t * 
p)
  -        /*@globals fileSystem, internalState @*/
  -        /*@modifies fileSystem, internalState @*/;
  -
  -/*@=exportlocal@*/
  +                pgpPubkeyAlgo pubkey_algo, const rpmuint8_t * p);
   #endif
   
   /** \ingroup rpmpgp
  @@ -1315,9 +1233,7 @@
    * @return           0 on success
    */
   #if defined(_RPMPGP_INTERNAL)
  -int pgpPrtKey(const pgpPkt pp)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +int pgpPrtKey(const pgpPkt pp);
   #endif
   
   /** \ingroup rpmpgp
  @@ -1326,11 +1242,7 @@
    * @return           0 on success
    */
   #if defined(_RPMPGP_INTERNAL)
  -/*@-exportlocal@*/
  -int pgpPrtUserID(const pgpPkt pp)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -/*@=exportlocal@*/
  +int pgpPrtUserID(const pgpPkt pp);
   #endif
   
   /** \ingroup rpmpgp
  @@ -1339,11 +1251,7 @@
    * @return           0 on success
    */
   #if defined(_RPMPGP_INTERNAL)
  -/*@-exportlocal@*/
  -int pgpPrtComment(const pgpPkt pp)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  -/*@=exportlocal@*/
  +int pgpPrtComment(const pgpPkt pp);
   #endif
   
   /** \ingroup rpmpgp
  @@ -1354,11 +1262,8 @@
    * @retval keyid     publick key fingerprint
    * @return           0 on success, else -1
    */
  -/*@-exportlocal@*/
   int pgpPubkeyFingerprint(const rpmuint8_t * pkt, size_t pktlen,
  -             /*@out@*/ rpmuint8_t * keyid)
  -     /*@modifies *keyid @*/;
  -/*@=exportlocal@*/
  +             rpmuint8_t * keyid);
   
   /** \ingroup rpmpgp
    * Extract OpenPGP public key fingerprint from base64 encoded packet.
  @@ -1368,8 +1273,7 @@
    * @return           8 (no. of bytes) on success, < 0 on error
    */
   int pgpExtractPubkeyFingerprint(const char * b64pkt,
  -             /*@out@*/ rpmuint8_t * keyid)
  -     /*@modifies *keyid @*/;
  +             rpmuint8_t * keyid);
   
   /** \ingroup rpmpgp
    * Return lenth of a OpenPGP packet.
  @@ -1379,8 +1283,7 @@
    * @return           packet length, <0 on error.
    */
   #if defined(_RPMPGP_INTERNAL)
  -int pgpPktLen(const rpmuint8_t * pkt, size_t pleft, /*@out@*/ pgpPkt pp)
  -     /*@modifies pp @*/;
  +int pgpPktLen(const rpmuint8_t * pkt, size_t pleft, pgpPkt pp);
   #endif
   
   /** \ingroup rpmpgp
  @@ -1389,11 +1292,7 @@
    * @param pleft              no. bytes remaining
    * @return           -1 on error, otherwise this packet length
    */
  -/*@-exportlocal@*/
  -int pgpPrtPkt(const rpmuint8_t * pkt, size_t pleft)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -/*@=exportlocal@*/
  +int pgpPrtPkt(const rpmuint8_t * pkt, size_t pleft);
   
   /** \ingroup rpmpgp
    * Return array of packet pointers.
  @@ -1404,8 +1303,7 @@
    * @return           0 on success, <0 on error
    */
   int pgpGrabPkts(const rpmuint8_t * pkts, size_t pktlen,
  -             /*@out@*/ rpmuint8_t *** pppkts, /*@out@*/ int * pnpkts)
  -        /*@modifies *pppkts, *pnpkts @*/;
  +             rpmuint8_t *** pppkts, int * pnpkts);
   
   /** \ingroup rpmpgp
    * Print/parse a OpenPGP packet(s).
  @@ -1415,9 +1313,7 @@
    * @param printing   should packets be printed?
    * @return           -1 on error, 0 on success
    */
  -int pgpPrtPkts(const rpmuint8_t * pkts, size_t pktlen, pgpDig dig, int 
printing)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies dig, fileSystem, internalState @*/;
  +int pgpPrtPkts(const rpmuint8_t * pkts, size_t pktlen, pgpDig dig, int 
printing);
   
   /** \ingroup rpmpgp
    * Parse armored OpenPGP packets from an iob.
  @@ -1426,10 +1322,7 @@
    * @retval pktlen    dearmored OpenPGP packet(s) length in bytes
    * @return           type of armor found
    */
  -pgpArmor pgpArmorUnwrap(rpmiob iob,
  -             /*@out@*/ rpmuint8_t ** pkt, /*@out@*/ size_t * pktlen)
  -     /*@globals h_errno, fileSystem, internalState @*/
  -     /*@modifies *pkt, *pktlen, fileSystem, internalState @*/;
  +pgpArmor pgpArmorUnwrap(rpmiob iob, rpmuint8_t ** pkt, size_t * pktlen);
   
   /** \ingroup rpmpgp
    * Parse armored OpenPGP packets from a file.
  @@ -1438,10 +1331,7 @@
    * @retval pktlen    dearmored OpenPGP packet(s) length in bytes
    * @return           type of armor found
    */
  -pgpArmor pgpReadPkts(const char * fn,
  -             /*@out@*/ rpmuint8_t ** pkt, /*@out@*/ size_t * pktlen)
  -     /*@globals h_errno, fileSystem, internalState @*/
  -     /*@modifies *pkt, *pktlen, fileSystem, internalState @*/;
  +pgpArmor pgpReadPkts(const char * fn, rpmuint8_t ** pkt, size_t * pktlen);
   
   /** \ingroup rpmpgp
    * Wrap a OpenPGP packets in ascii armor for transport.
  @@ -1450,8 +1340,7 @@
    * @param ns         binary pkt data length
    * @return           formatted string
    */
  -char * pgpArmorWrap(rpmuint8_t atype, const unsigned char * s, size_t ns)
  -     /*@*/;
  +char * pgpArmorWrap(rpmuint8_t atype, const unsigned char * s, size_t ns);
   
   /** \ingroup rpmpgp
    * Convert a hash algorithm "foo" to the internal PGPHASHALGO_FOO number.
  @@ -1460,13 +1349,11 @@
    * @return           PGPHASHALGO_<name> or -1 in case of error
    */
   pgpHashAlgo pgpHashAlgoStringToNumber(const char *name, size_t name_len)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /**
    * Disabler bits(s) for signature/digest checking.
    */
  -/*@unchecked@*/
   extern pgpVSFlags pgpDigVSFlags;
   
   /** \ingroup rpmpgp
  @@ -1474,9 +1361,7 @@
    * @param dig                signature parameters
    * @return           NULL on last dereference
    */
  -/*@unused@*/ /*@null@*/
  -pgpDig pgpDigUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ pgpDig dig)
  -     /*@modifies dig @*/;
  +pgpDig pgpDigUnlink (pgpDig dig);
   #define      pgpDigUnlink(_dig)      \
       ((pgpDig)rpmioUnlinkPoolItem((rpmioItem)(_dig), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -1485,9 +1370,7 @@
    * @param dig                signature parameters
    * @return           new signature parameters reference
    */
  -/*@unused@*/ /*@newref@*/ /*@null@*/
  -pgpDig pgpDigLink (/*@null@*/ pgpDig dig)
  -     /*@modifies dig @*/;
  +pgpDig pgpDigLink (pgpDig dig);
   #define      pgpDigLink(_dig)        \
       ((pgpDig)rpmioLinkPoolItem((rpmioItem)(_dig), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -1496,9 +1379,7 @@
    * @param dig                signature parameters container
    * @return           NULL on last dereference
    */
  -/*@unused@*/ /*@null@*/
  -pgpDig pgpDigFree(/*@killref@*/ /*@only@*/ /*@null@*/ pgpDig dig)
  -     /*@modifies dig @*/;
  +pgpDig pgpDigFree(pgpDig dig);
   #define pgpDigFree(_dig)     \
       ((pgpDig)rpmioFreePoolItem((rpmioItem)(_dig), __FUNCTION__, __FILE__, 
__LINE__))
   
  @@ -1509,56 +1390,41 @@
    * @param pubkey_algo        pubkey algorithm (0 disables)
    * @return           container
    */
  -/*@relnull@*/
  -pgpDig pgpDigNew(pgpVSFlags vsflags, pgpPubkeyAlgo pubkey_algo)
  -     /*@globals fileSystem @*/
  -     /*@modifies fileSystem @*/;
  +pgpDig pgpDigNew(pgpVSFlags vsflags, pgpPubkeyAlgo pubkey_algo);
   
   /** \ingroup rpmpgp
    * Release (malloc'd) data from container.
    * @param dig                signature parameters container
    */
  -void pgpDigClean(/*@null@*/ pgpDig dig)
  -     /*@modifies dig @*/;
  +void pgpDigClean(pgpDig dig);
   
   const char * pgpHashAlgo2Name(uint32_t algo)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   const char * pgpPubkeyAlgo2Name(uint32_t algo)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   rpmuint8_t pgpHashName2Algo(const char * name)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   rpmuint8_t pgpPubkeyName2Algo(const char * name)
  -     RPM_GNUC_PURE
  -     /*@*/;
  -int pgpDigSetAlgos(pgpDig dig)
  -     /*@*/;
  -int pgpExportPubkey(pgpDig dig)
  -     /*@*/;
  -int pgpExportSignature(pgpDig dig, /*@only@*/ DIGEST_CTX ctx)
  -     /*@*/;
  +     RPM_GNUC_PURE;
  +int pgpDigSetAlgos(pgpDig dig);
  +int pgpExportPubkey(pgpDig dig);
  +int pgpExportSignature(pgpDig dig, DIGEST_CTX ctx);
   
   /** \ingroup rpmpgp
    * Return OpenPGP pubkey parameters.
    * @param dig                signature parameters container
    * @return           pubkey parameters
    */
  -/*@exposed@*/
   pgpDigParams pgpGetPubkey(const pgpDig dig)
  -     RPM_GNUC_CONST
  -     /*@*/;
  +     RPM_GNUC_CONST;
   
   /** \ingroup rpmpgp
    * Return OpenPGP signature parameters.
    * @param dig                signature parameters container
    * @return           signature parameters
    */
  -/*@exposed@*/
   pgpDigParams pgpGetSignature(const pgpDig dig)
  -     RPM_GNUC_CONST
  -     /*@*/;
  +     RPM_GNUC_CONST;
   
   /** \ingroup rpmpgp
    * Get signature tag.
  @@ -1566,8 +1432,7 @@
    * @return           signature tag
    */
   rpmuint32_t pgpGetSigtag(const pgpDig dig)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Get signature tag type.
  @@ -1575,18 +1440,15 @@
    * @return           signature tag type
    */
   rpmuint32_t pgpGetSigtype(const pgpDig dig)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Get signature tag data, i.e. from header.
    * @param dig                signature parameters container
    * @return           signature tag data
    */
  -/*@observer@*/ /*@null@*/
   extern const void * pgpGetSig(const pgpDig dig)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Get signature tag data length, i.e. no. of bytes of data.
  @@ -1594,8 +1456,7 @@
    * @return           signature tag data length
    */
   rpmuint32_t pgpGetSiglen(const pgpDig dig)
  -     RPM_GNUC_PURE
  -     /*@*/;
  +     RPM_GNUC_PURE;
   
   /** \ingroup rpmpgp
    * Set signature tag info, i.e. from header.
  @@ -1608,8 +1469,7 @@
    */
   int pgpSetSig(pgpDig dig,
                rpmuint32_t sigtag, rpmuint32_t sigtype,
  -             /*@kept@*/ /*@null@*/ const void * sig, rpmuint32_t siglen)
  -     /*@modifies dig @*/;
  +             const void * sig, rpmuint32_t siglen);
   
   /** \ingroup rpmpgp
    * Return pgpDig container accumulator structure.
  @@ -1617,10 +1477,8 @@
    * @param opx                per-container accumulator index (aka rpmtsOpX)
    * @return           per-container accumulator pointer
    */
  -/*@null@*/
   void * pgpStatsAccumulator(pgpDig dig, int opx)
  -     RPM_GNUC_CONST
  -     /*@*/;
  +     RPM_GNUC_CONST;
   
   /** \ingroup rpmpgp
    * Set find pubkey vector.
  @@ -1630,17 +1488,15 @@
    * @return           0 always
    */
   int pgpSetFindPubkey(pgpDig dig,
  -             /*@null@*/ int (*findPubkey) (void *ts, /*@null@*/ void *dig),
  -             /*@exposed@*/ /*@null@*/ void * _ts)
  -     /*@modifies dig @*/;
  +             int (*findPubkey) (void *ts, void *dig),
  +             void * _ts);
   
   /** \ingroup rpmpgp
    * Call find pubkey vector.
    * @param dig                signature parameters container
    * @return           rpmRC return code
    */
  -int pgpFindPubkey(pgpDig dig)
  -     /*@modifies dig @*/;
  +int pgpFindPubkey(pgpDig dig);
   
   /** \ingroup rpmpgp
    * Is buffer at beginning of an OpenPGP packet?
  @@ -1648,9 +1504,8 @@
    * @retval *tagp     OpenPGP tag
    * @return           1 if an OpenPGP packet, 0 otherwise
    */
  -/*@unused@*/ static inline
  -int pgpIsPkt(const rpmuint8_t * p, /*@null@*/ pgpTag * tagp)
  -     /*@modifies *tagp @*/
  +static inline
  +int pgpIsPkt(const rpmuint8_t * p, pgpTag * tagp)
   {
       unsigned int val = (unsigned int) *p++;
       pgpTag tag;
  @@ -1709,9 +1564,8 @@
    * @param len                no. of bytes
    * @return           crc of buffer
    */
  -/*@unused@*/ static inline
  +static inline
   unsigned int pgpCRC(const rpmuint8_t * octets, size_t len)
  -     /*@*/
   {
       unsigned int crc = CRC24_INIT;
       int i;
  @@ -1730,65 +1584,52 @@
   
   /**
    */
  -typedef int (*pgpImplSet_t) (/*@only@*/ DIGEST_CTX ctx, pgpDig dig, 
pgpDigParams sigp)
  -        /*@modifies ctx, dig @*/;
  +typedef int (*pgpImplSet_t) (DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp);
   
   /**
    */
  -typedef int (*pgpImplErrChk_t) (pgpDig dig, const char * msg, int rc, 
unsigned expected)
  -        /*@*/;
  +typedef int (*pgpImplErrChk_t) (pgpDig dig, const char * msg, int rc, 
unsigned expected);
   
   /**
    */
  -typedef int (*pgpImplAvailable_t) (pgpDig dig, int algo)
  -        /*@*/;
  +typedef int (*pgpImplAvailable_t) (pgpDig dig, int algo);
   
   /**
    */
  -typedef int (*pgpImplGenerate_t) (pgpDig dig)
  -        /*@*/;
  +typedef int (*pgpImplGenerate_t) (pgpDig dig);
   
   /**
    */
  -typedef int (*pgpImplSign_t) (pgpDig dig)
  -        /*@*/;
  +typedef int (*pgpImplSign_t) (pgpDig dig);
   
   /**
    */
  -typedef int (*pgpImplVerify_t) (pgpDig dig)
  -        /*@*/;
  +typedef int (*pgpImplVerify_t) (pgpDig dig);
   
   /**
    */
  -typedef int (*pgpImplExportPubkey_t) (pgpDig dig)
  -        /*@*/;
  +typedef int (*pgpImplExportPubkey_t) (pgpDig dig);
   
   /**
    */
  -typedef int (*pgpImplExportSignature_t) (pgpDig dig, DIGEST_CTX ctx)
  -        /*@*/;
  +typedef int (*pgpImplExportSignature_t) (pgpDig dig, DIGEST_CTX ctx);
   
   /**
    */
   typedef int (*pgpImplMpiItem_t) (const char * pre, pgpDig dig, int itemno,
  -             const rpmuint8_t * p, /*@null@*/ const rpmuint8_t * pend)
  -     /*@globals fileSystem @*/
  -     /*@modifies dig, fileSystem @*/;
  +             const rpmuint8_t * p, const rpmuint8_t * pend);
   
   /**
    */
  -typedef void (*pgpImplClean_t) (void * impl)
  -        /*@modifies impl @*/;
  +typedef void (*pgpImplClean_t) (void * impl);
   
   /**
    */
  -typedef void * (*pgpImplFree_t) (/*@only@*/ void * impl)
  -        /*@modifies impl @*/;
  +typedef void * (*pgpImplFree_t) (void * impl);
   
   /**
    */
  -typedef void * (*pgpImplInit_t) (void)
  -        /*@*/;
  +typedef void * (*pgpImplInit_t) (void);
   
   
   /**
  @@ -1821,51 +1662,44 @@
   
   /**
    */
  -/*@unchecked@*/
   extern pgpImplVecs_t * pgpImplVecs;
   
  -/*@-mustmod@*/
   /**
    */
  -/*@unused@*/ static inline
  -int pgpImplSetRSA(/*@only@*/ DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
  -     /*@modifies ctx, dig @*/
  +static inline
  +int pgpImplSetRSA(DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
   {
       return (*pgpImplVecs->_pgpSetRSA) (ctx, dig, sigp);
   }
   
   /**
    */
  -/*@unused@*/ static inline
  -int pgpImplSetDSA(/*@only@*/ DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
  -     /*@modifies ctx, dig @*/
  +static inline
  +int pgpImplSetDSA(DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
   {
       return (*pgpImplVecs->_pgpSetDSA) (ctx, dig, sigp);
   }
   
   /**
    */
  -/*@unused@*/ static inline
  -int pgpImplSetELG(/*@only@*/ DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
  -     /*@modifies ctx, dig @*/
  +static inline
  +int pgpImplSetELG(DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
   {
       return (*pgpImplVecs->_pgpSetELG) (ctx, dig, sigp);
   }
   
   /**
    */
  -/*@unused@*/ static inline
  -int pgpImplSetECDSA(/*@only@*/ DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
  -     /*@modifies ctx, dig @*/
  +static inline
  +int pgpImplSetECDSA(DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
   {
       return (*pgpImplVecs->_pgpSetECDSA) (ctx, dig, sigp);
   }
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplErrChk(pgpDig dig, const char * msg, int rc, unsigned expected)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpErrChk
        ? (*pgpImplVecs->_pgpErrChk) (dig, msg, rc, expected)
  @@ -1874,9 +1708,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplAvailableCipher(pgpDig dig, int algo)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpAvailableCipher
        ? (*pgpImplVecs->_pgpAvailableCipher) (dig, algo)
  @@ -1885,9 +1718,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplAvailableDigest(pgpDig dig, int algo)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpAvailableDigest
        ? (*pgpImplVecs->_pgpAvailableDigest) (dig, algo)
  @@ -1896,9 +1728,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplAvailablePubkey(pgpDig dig, int algo)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpAvailablePubkey
        ? (*pgpImplVecs->_pgpAvailablePubkey) (dig, algo)
  @@ -1907,9 +1738,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplVerify(pgpDig dig)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpVerify
        ? (*pgpImplVecs->_pgpVerify) (dig)
  @@ -1918,9 +1748,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplSign(pgpDig dig)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpSign
        ? (*pgpImplVecs->_pgpSign) (dig)
  @@ -1929,9 +1758,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplGenerate(pgpDig dig)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpGenerate
        ? (*pgpImplVecs->_pgpGenerate) (dig)
  @@ -1940,9 +1768,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplExportPubkey(pgpDig dig)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpExportPubkey
        ? (*pgpImplVecs->_pgpExportPubkey) (dig)
  @@ -1951,9 +1778,8 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplExportSignature(pgpDig dig, DIGEST_CTX ctx)
  -     /*@*/
   {
       return (pgpImplVecs->_pgpExportSignature
        ? (*pgpImplVecs->_pgpExportSignature) (dig, ctx)
  @@ -1962,49 +1788,40 @@
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   int pgpImplMpiItem(const char * pre, pgpDig dig, int itemno,
  -             const rpmuint8_t * p, /*@null@*/ const rpmuint8_t * pend)
  -     /*@modifies dig @*/
  +             const rpmuint8_t * p, const rpmuint8_t * pend)
   {
       return (*pgpImplVecs->_pgpMpiItem) (pre, dig, itemno, p, pend);
   }
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   void pgpImplClean(void * impl)
  -        /*@modifies impl @*/
   {
  -/*@-noeffectuncon@*/
       (*pgpImplVecs->_pgpClean) (impl);
  -/*@=noeffectuncon@*/
   }
   
   /**
    */
  -/*@unused@*/ static inline
  -/*@null@*/
  -void * pgpImplFree(/*@only@*/ void * impl)
  -        /*@modifies impl @*/
  +static inline
  +void * pgpImplFree(void * impl)
   {
       return (*pgpImplVecs->_pgpFree) (impl);
   }
   
   /**
    */
  -/*@unused@*/ static inline
  +static inline
   void * pgpImplInit(void)
  -        /*@*/
   {
       return (*pgpImplVecs->_pgpInit) ();
   }
  -/*@=mustmod@*/
   
   
   #ifdef __cplusplus
   }
   #endif
  -/*@=fcnuse@*/
   
   #endif       /* H_RPMPGP */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmsw.h
  ============================================================================
  $ cvs diff -u -r2.12.4.3 -r2.12.4.4 rpmsw.h
  --- rpm/rpmio/rpmsw.h 27 Sep 2014 15:51:24 -0000      2.12.4.3
  +++ rpm/rpmio/rpmsw.h 25 Jun 2016 07:31:08 -0000      2.12.4.4
  @@ -5,9 +5,12 @@
    * \file rpmio/rpmsw.h
    */
   
  +#include <sys/types.h>
   #include <sys/time.h>
   #include <stdio.h>
   
  +#include <rpmdefs.h>
  +
   /** \ingroup rpmio
    */
   typedef unsigned long int rpmtime_t;
  @@ -40,7 +43,6 @@
       rpmtime_t                usecs;  /*!< Number of ticks. */
   };
   
  -/*@unchecked@*/
   extern int _rpmsw_stats;
   
   /** \ingroup rpmio
  @@ -79,32 +81,20 @@
    * @param sw         *sw time stamp
    * @return           0 on success
    */
  -/*@-exportlocal@*/
  -/*@null@*/
  -rpmsw rpmswNow(/*@returned@*/ rpmsw sw)
  -     /*@globals internalState @*/
  -     /*@modifies sw, internalState @*/;
  -/*@=exportlocal@*/
  +rpmsw rpmswNow(rpmsw sw);
   
   /** Return benchmark time stamp difference.
    * @param end                *end end time stamp
    * @param begin              *begin begin time stamp
    * @return           difference in micro-seconds
    */
  -/*@-exportlocal@*/
  -rpmtime_t rpmswDiff(/*@null@*/ rpmsw end, /*@null@*/ rpmsw begin)
  -     RPM_GNUC_PURE
  -     /*@*/;
  -/*@=exportlocal@*/
  +rpmtime_t rpmswDiff(rpmsw end, rpmsw begin)
  +     RPM_GNUC_PURE;
   
   /** Return benchmark time stamp overhead.
    * @return           overhead in micro-seconds
    */
  -/*@-exportlocal@*/
  -rpmtime_t rpmswInit(void)
  -     /*@globals internalState @*/
  -     /*@modifies internalState @*/;
  -/*@=exportlocal@*/
  +rpmtime_t rpmswInit(void);
   
   /** \ingroup rpmio
    * Enter timed operation.
  @@ -112,9 +102,7 @@
    * @param rc                 -1 clears usec counter
    * @return                   0 always
    */
  -int rpmswEnter(/*@null@*/ rpmop op, ssize_t rc)
  -     /*@globals internalState @*/
  -     /*@modifies *op, internalState @*/;
  +int rpmswEnter(rpmop op, ssize_t rc);
   
   /** \ingroup rpmio
    * Exit timed operation.
  @@ -122,9 +110,7 @@
    * @param rc                 per-operation data (e.g. bytes transferred)
    * @return                   cumulative usecs for operation
    */
  -rpmtime_t rpmswExit(/*@null@*/ rpmop op, ssize_t rc)
  -     /*@globals internalState @*/
  -     /*@modifies op, internalState @*/;
  +rpmtime_t rpmswExit(rpmop op, ssize_t rc);
   
   /** \ingroup rpmio
    * Sum statistic counters.
  @@ -132,8 +118,7 @@
    * @param from                       operation statistics
    * @return                   cumulative usecs for operation
    */
  -rpmtime_t rpmswAdd(/*@null@*/ rpmop to, /*@null@*/ rpmop from)
  -     /*@modifies to @*/;
  +rpmtime_t rpmswAdd(rpmop to, rpmop from);
   
   /** \ingroup rpmio
    * Subtract statistic counters.
  @@ -141,8 +126,7 @@
    * @param from                       operation statistics
    * @return                   cumulative usecs for operation
    */
  -rpmtime_t rpmswSub(rpmop to, rpmop from)
  -     /*@modifies to @*/;
  +rpmtime_t rpmswSub(rpmop to, rpmop from);
   
   /** \ingroup rpmio
    * Print operation statistics.
  @@ -150,9 +134,7 @@
    * @param op                 operation statistics
    * @param fp                 file handle (NULL uses stderr)
    */
  -void rpmswPrint(const char * name, /*@null@*/ rpmop op, /*@null@*/ FILE * fp)
  -        /*@globals fileSystem @*/
  -        /*@modifies fp, fileSystem @*/;
  +void rpmswPrint(const char * name, rpmop op, FILE * fp);
   
   #ifdef __cplusplus
   }
  @@ .
  rm -f rpm/rpmio/rpmutil.h <<'@@ .'
  Index: rpm/rpmio/rpmutil.h
  ============================================================================
  [NO CHANGE SUMMARY BECAUSE FILE AS A WHOLE IS JUST REMOVED]
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmzlog.h
  ============================================================================
  $ cvs diff -u -r2.5.6.2 -r2.5.6.3 rpmzlog.h
  --- rpm/rpmio/rpmzlog.h       12 Jul 2013 21:40:49 -0000      2.5.6.2
  +++ rpm/rpmio/rpmzlog.h       25 Jun 2016 07:31:08 -0000      2.5.6.3
  @@ -5,16 +5,16 @@
    * \file rpmio/rpmzlog.h
    */
   #include <stdio.h>
  -#include <sys/time.h>
   
   /** trace log pointer */
  -typedef /*@abstract@*/ /*@refcounted@*/ struct rpmzLog_s * rpmzLog;
  +typedef struct rpmzLog_s * rpmzLog;
   
   #ifdef       _RPMZLOG_INTERNAL
  +#include <sys/time.h>
   #include <yarn.h>
   
   /** trace msg pointer */
  -typedef /*@abstract@*/ struct rpmzMsg_s * rpmzMsg;
  +typedef struct rpmzMsg_s * rpmzMsg;
   
   /** trace msg */
   struct rpmzMsg_s {
  @@ -27,15 +27,9 @@
   struct rpmzLog_s {
       struct rpmioItem_s _item;        /*!< usage mutex and pool identifier. */
       struct timeval start;    /*!< starting time of day for tracing */
  -/*@null@*/
       rpmzMsg msg_head;
  -/*@shared@*/ /*@relnull@*/
       rpmzMsg *msg_tail;
       int msg_count;
  -#if defined(__LCLINT__)
  -/*@refs@*/
  -    int nrefs;                       /*!< (unused) keep splint happy */
  -#endif
   };
   #endif       /* _RPMZLOG_INTERNAL */
   
  @@ -46,41 +40,29 @@
   /**
    * Reference the log data.
    */
  -/*@newref@*/ /*@null@*/
  -rpmzLog rpmzLogLink(/*@null@*/ rpmzLog zlog)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies zlog, fileSystem, internalState @*/;
  +rpmzLog rpmzLogLink(rpmzLog zlog);
   
   /**
    * Set up log (call from main thread before other threads launched).
    */
  -/*@newref@*/
  -rpmzLog rpmzLogNew(/*@null@*/ struct timeval *tv)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  +struct timeval;
  +rpmzLog rpmzLogNew(struct timeval *tv);
   
   /**
    * Add entry to trace log.
    */
  -void rpmzLogAdd(/*@null@*/ rpmzLog zlog, const char *fmt, ...)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies zlog, fileSystem, internalState @*/;
  +void rpmzLogAdd(rpmzLog zlog, const char *fmt, ...)
  +     RPM_GNUC_PRINTF(2, 3);
   
   /**
    * Release a reference to the log data.
    */
  -/*@null@*/
  -rpmzLog rpmzLogFree(/*@killref@*/ /*@null@*/ rpmzLog zlog)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies zlog, fileSystem, internalState @*/;
  +rpmzLog rpmzLogFree(rpmzLog zlog);
   
   /**
    * Show entries until no more, free log.
    */
  -/*@null@*/
  -rpmzLog rpmzLogDump(/*@killref@*/ /*@null@*/ rpmzLog zlog, /*@null@*/ FILE * 
fp)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies zlog, *fp, fileSystem, internalState @*/;
  +rpmzLog rpmzLogDump(rpmzLog zlog, FILE * fp);
   
   #ifdef __cplusplus
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/tib3.c
  ============================================================================
  $ cvs diff -u -r2.3.4.1 -r2.3.4.2 tib3.c
  --- rpm/rpmio/tib3.c  19 Apr 2016 13:07:46 -0000      2.3.4.1
  +++ rpm/rpmio/tib3.c  25 Jun 2016 07:31:08 -0000      2.3.4.2
  @@ -1,4 +1,4 @@
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   #if !defined(CLANG_ASAN_COMPILES_SLOWLY)
   
   #include <string.h>
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/tjsmn.c
  ============================================================================
  $ cvs diff -u -r1.1.2.4 -r1.1.2.5 tjsmn.c
  --- rpm/rpmio/tjsmn.c 29 Mar 2016 16:40:31 -0000      1.1.2.4
  +++ rpm/rpmio/tjsmn.c 25 Jun 2016 07:31:08 -0000      1.1.2.5
  @@ -1,7 +1,7 @@
   #include "system.h"
   #include <stdarg.h>
   
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   
   #include "debug.h"
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/tjson.c
  ============================================================================
  $ cvs diff -u -r1.1.2.1 -r1.1.2.2 tjson.c
  --- rpm/rpmio/tjson.c 16 May 2015 23:32:03 -0000      1.1.2.1
  +++ rpm/rpmio/tjson.c 25 Jun 2016 07:31:08 -0000      1.1.2.2
  @@ -3,7 +3,7 @@
   #include <stdbool.h>
   #include <curl/curl.h>
   
  -#include <rpmutil.h>
  +#include <rpmdefs.h>
   
   #include "debug.h"
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/url.c
  ============================================================================
  $ cvs diff -u -r1.73.4.12 -r1.73.4.13 url.c
  --- rpm/rpmio/url.c   11 Oct 2014 12:55:51 -0000      1.73.4.12
  +++ rpm/rpmio/url.c   25 Jun 2016 07:31:08 -0000      1.73.4.13
  @@ -9,6 +9,7 @@
   #include <rpmio_internal.h>
   #include <rpmmacro.h>
   #include <rpmcb.h>
  +#include <yarn.h>
   
   #ifdef WITH_NEON
   #include <rpmdav.h>
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/yarn.h
  ============================================================================
  $ cvs diff -u -r2.4.2.3 -r2.4.2.4 yarn.h
  --- rpm/rpmio/yarn.h  24 Sep 2014 13:03:04 -0000      2.4.2.3
  +++ rpm/rpmio/yarn.h  25 Jun 2016 07:31:08 -0000      2.4.2.4
  @@ -5,6 +5,11 @@
   #ifndef      _H_YARN_
   #define      _H_YARN_
   
  +#include <stddef.h>
  +
  +#include <rpmiotypes.h>
  +#include <rpmdefs.h>
  +
   /*
     This software is provided 'as-is', without any express or implied
     warranty.  In no event will the author be held liable for any damages
  @@ -115,68 +120,43 @@
   extern "C" {
   #endif
   
  -/*@unchecked@*/ /*@observer@*/
   extern const char *yarnPrefix;
  -/*@-redecl@*/
  -/*@mayexit@*/
  -extern void (*yarnAbort)(int)
  -     /*@globals internalState @*/
  -     /*@modifies internalState @*/;
  -/*@=redecl@*/
  -
  -/*@-globuse@*/
  -void yarnMem(void *(*)(size_t), void (*)(void *))
  -     /*@globals internalState @*/
  -     /*@modifies internalState @*/;
  -/*@=globuse@*/
  +
  +extern void (*yarnAbort)(int);
  +
  +void yarnMem(void *(*)(size_t), void (*)(void *));
   
   typedef struct yarnThread_s * yarnThread;
  -/*@only@*/
  +
   yarnThread yarnLaunchStack(void (*probe)(void *), void *payload,
  -             /*@null@*/ void * stack, size_t nstack)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -/*@only@*/
  -yarnThread yarnLaunch(void (*probe)(void *), void *payload)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -/*@only@*/ /*@null@*/
  -yarnThread yarnJoin(/*@only@*/ yarnThread ally)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies ally, fileSystem, internalState @*/;
  -int yarnJoinAll(void)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -void yarnDestruct(/*@only@*/ yarnThread off_course)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies off_course, fileSystem, internalState @*/;
  -
  -yarnLock yarnNewLock(long)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies fileSystem, internalState @*/;
  -void yarnPossess(yarnLock bolt)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies bolt, fileSystem, internalState @*/;
  -void yarnRelease(yarnLock bolt)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies bolt, fileSystem, internalState @*/;
  +             void * stack, size_t nstack);
  +
  +yarnThread yarnLaunch(void (*probe)(void *), void *payload);
  +
  +yarnThread yarnJoin(yarnThread ally);
  +
  +int yarnJoinAll(void);
  +
  +void yarnDestruct(yarnThread off_course);
  +
  +yarnLock yarnNewLock(long);
  +
  +void yarnPossess(yarnLock bolt);
  +
  +void yarnRelease(yarnLock bolt);
  +
   typedef enum yarnTwistOP_e { TO, BY } yarnTwistOP;
  -void yarnTwist(yarnLock bolt, yarnTwistOP op, long)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies bolt, fileSystem, internalState @*/;
  +void yarnTwist(yarnLock bolt, yarnTwistOP op, long);
  +
   typedef enum yarnWaitOP_e {
       TO_BE, /* or */ NOT_TO_BE, /* that is the question */
       TO_BE_MORE_THAN, TO_BE_LESS_THAN } yarnWaitOP;
  -void yarnWaitFor(yarnLock bolt, yarnWaitOP op, long)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies bolt, fileSystem, internalState @*/;
  +void yarnWaitFor(yarnLock bolt, yarnWaitOP op, long);
  +
   long yarnPeekLock(yarnLock bolt)
  -     RPM_GNUC_PURE
  -     /*@*/;
  -/*@only@*/ /*@null@*/
  -yarnLock yarnFreeLock(/*@only@*/ yarnLock bolt)
  -     /*@globals fileSystem, internalState @*/
  -     /*@modifies bolt, fileSystem, internalState @*/;
  +     RPM_GNUC_PURE;
  +
  +yarnLock yarnFreeLock(yarnLock bolt);
   
   #ifdef __cplusplus
   }
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to