diff options
42 files changed, 821 insertions, 2769 deletions
diff --git a/rpmio/argv.c b/rpmio/argv.c index cc1ec3f67..d112dfbc2 100644 --- a/rpmio/argv.c +++ b/rpmio/argv.c @@ -8,15 +8,13 @@ #include "debug.h" -/*@-bounds@*/ /** * Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. * @param p memory to free * @return NULL always */ -/*@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; @@ -47,15 +45,13 @@ ARGI_t argiFree(ARGI_t argi) return NULL; } -ARGV_t argvFree(/*@only@*/ /*@null@*/ ARGV_t argv) +ARGV_t argvFree(ARGV_t argv) { ARGV_t av; -/*@-branchstate@*/ if (argv) for (av = argv; *av; av++) *av = _free(*av); -/*@=branchstate@*/ argv = _free(argv); return NULL; } @@ -87,17 +83,13 @@ int argvCount(const ARGV_t argv) ARGV_t argvData(const ARGV_t argv) { -/*@-retalias -temptrans @*/ return argv; -/*@=retalias =temptrans @*/ } int argvCmp(const void * a, const void * b) { -/*@-boundsread@*/ ARGstr_t astr = *(ARGV_t)a; ARGstr_t bstr = *(ARGV_t)b; -/*@=boundsread@*/ return strcmp(astr, bstr); } @@ -119,7 +111,7 @@ ARGV_t argvSearch(ARGV_t argv, ARGstr_t val, return bsearch(&val, argv, argvCount(argv), sizeof(*argv), compar); } -int argiAdd(/*@out@*/ ARGI_t * argip, int ix, int val) +int argiAdd(ARGI_t * argip, int ix, int val) { ARGI_t argi; @@ -140,7 +132,7 @@ int argiAdd(/*@out@*/ ARGI_t * argip, int ix, int val) return 0; } -int argvAdd(/*@out@*/ ARGV_t * argvp, ARGstr_t val) +int argvAdd(ARGV_t * argvp, ARGstr_t val) { ARGV_t argv; int argc; @@ -148,16 +140,14 @@ int argvAdd(/*@out@*/ ARGV_t * argvp, ARGstr_t val) if (argvp == NULL) return -1; argc = argvCount(*argvp); -/*@-unqualifiedtrans@*/ *argvp = xrealloc(*argvp, (argc + 1 + 1) * sizeof(**argvp)); -/*@=unqualifiedtrans@*/ argv = *argvp; argv[argc++] = xstrdup(val); argv[argc ] = NULL; return 0; } -int argvAppend(/*@out@*/ ARGV_t * argvp, const ARGV_t av) +int argvAppend(ARGV_t * argvp, const ARGV_t av) { ARGV_t argv = *argvp; int argc = argvCount(argv); @@ -200,8 +190,5 @@ int argvSplit(ARGV_t * argvp, const char * str, const char * seps) } argv[c] = NULL; *argvp = argv; -/*@-nullstate@*/ return 0; -/*@=nullstate@*/ } -/*@=bounds@*/ diff --git a/rpmio/argv.h b/rpmio/argv.h index 7cab8f23d..e944754e0 100644 --- a/rpmio/argv.h +++ b/rpmio/argv.h @@ -25,61 +25,49 @@ extern "C" { * @param argv argv array * @param fp output file handle (NULL uses stderr) */ -void argvPrint(const char * msg, ARGV_t argv, 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) - /*@*/; +int argiCount(const ARGI_t argi); /** * Return data from argi array. * @param argi argi array * @return argi array data address */ -/*@null@*/ -ARGint_t argiData(/*@null@*/ const ARGI_t argi) - /*@*/; +ARGint_t argiData(const ARGI_t argi); /** * Return no. of elements in argv array. * @param argv argv array * @return no. of elements */ -int argvCount(/*@null@*/ const ARGV_t argv) - /*@*/; +int argvCount(const ARGV_t argv); /** * Return data from argv array. * @param argv argv array * @return argv array data address */ -/*@null@*/ -ARGV_t argvData(/*@null@*/ const ARGV_t argv) - /*@*/; +ARGV_t argvData(const ARGV_t argv); /** * Compare argv arrays (qsort/bsearch). @@ -87,10 +75,7 @@ ARGV_t argvData(/*@null@*/ const ARGV_t argv) * @param b 2nd instance address * @return result of comparison */ -/*@-exportlocal@*/ -int argvCmp(const void * a, const void * b) - /*@*/; -/*@=exportlocal@*/ +int argvCmp(const void * a, const void * b); /** * Sort an argv array. @@ -98,8 +83,7 @@ int argvCmp(const void * a, const void * b) * @param compar strcmp-like comparison function, or NULL for argvCmp() * @return 0 always */ -int argvSort(ARGV_t argv, int (*compar)(const void *, const void *)) - /*@modifies *argv @*/; +int argvSort(ARGV_t argv, int (*compar)(const void *, const void *)); /** * Find an element in an argv array. @@ -108,10 +92,8 @@ int argvSort(ARGV_t argv, int (*compar)(const void *, const void *)) * @param compar strcmp-like comparison function, or NULL for argvCmp() * @return found string (NULL on failure) */ -/*@dependent@*/ /*@null@*/ ARGV_t argvSearch(ARGV_t argv, ARGstr_t val, - int (*compar)(const void *, const void *)) - /*@*/; + int (*compar)(const void *, const void *)); /** * Add an int to an argi array. @@ -120,8 +102,7 @@ ARGV_t argvSearch(ARGV_t argv, ARGstr_t val, * @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. @@ -129,8 +110,7 @@ int argiAdd(/*@out@*/ ARGI_t * argip, int ix, int val) * @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. @@ -138,8 +118,7 @@ int argvAdd(/*@out@*/ ARGV_t * argvp, ARGstr_t val) * @param av argv array to append * @return 0 always */ -int argvAppend(/*@out@*/ ARGV_t * argvp, const ARGV_t av) - /*@modifies *argvp @*/; +int argvAppend(ARGV_t * argvp, const ARGV_t av); /** * Split a string into an argv array. @@ -148,8 +127,7 @@ int argvAppend(/*@out@*/ ARGV_t * argvp, const ARGV_t av) * @param seps seperator characters * @return 0 always */ -int argvSplit(ARGV_t * argvp, const char * str, const char * seps) - /*@modifies *argvp @*/; +int argvSplit(ARGV_t * argvp, const char * str, const char * seps); #ifdef __cplusplus } diff --git a/rpmio/digest.c b/rpmio/digest.c index 5b4cde87c..169273892 100644 --- a/rpmio/digest.c +++ b/rpmio/digest.c @@ -12,7 +12,6 @@ #define DPRINTF(_a) #endif -/*@access DIGEST_CTX@*/ /** * MD5/SHA1 digest private data. @@ -27,11 +26,10 @@ struct DIGEST_CTX_s { /*@modifies param @*/; /*!< Digest initialize. */ int (*Update) (void * param, const byte * data, size_t size) /*@modifies param @*/; /*!< Digest transform. */ - int (*Digest) (void * param, /*@out@*/ byte * digest) + int (*Digest) (void * param, byte * digest) /*@modifies param, digest @*/; /*!< Digest finish. */ }; -/*@-boundsread@*/ DIGEST_CTX rpmDigestDup(DIGEST_CTX octx) { @@ -40,7 +38,6 @@ rpmDigestDup(DIGEST_CTX octx) nctx->param = memcpy(xcalloc(1, nctx->paramlen), octx->param, nctx->paramlen); return nctx; } -/*@=boundsread@*/ DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags) @@ -54,68 +51,58 @@ rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags) case PGPHASHALGO_MD5: ctx->digestlen = 16; ctx->datalen = 64; -/*@-sizeoftype@*/ /* FIX: union, not void pointer */ +/* FIX: union, not void pointer */ ctx->paramlen = sizeof(md5Param); -/*@=sizeoftype@*/ ctx->param = xcalloc(1, ctx->paramlen); -/*@-type@*/ /* FIX: cast? */ +/* FIX: cast? */ ctx->Reset = (void *) md5Reset; ctx->Update = (void *) md5Update; ctx->Digest = (void *) md5Digest; -/*@=type@*/ break; case PGPHASHALGO_SHA1: ctx->digestlen = 20; ctx->datalen = 64; -/*@-sizeoftype@*/ /* FIX: union, not void pointer */ +/* FIX: union, not void pointer */ ctx->paramlen = sizeof(sha1Param); -/*@=sizeoftype@*/ ctx->param = xcalloc(1, ctx->paramlen); -/*@-type@*/ /* FIX: cast? */ +/* FIX: cast? */ ctx->Reset = (void *) sha1Reset; ctx->Update = (void *) sha1Update; ctx->Digest = (void *) sha1Digest; -/*@=type@*/ break; #if HAVE_BEECRYPT_API_H case PGPHASHALGO_SHA256: ctx->digestlen = 32; ctx->datalen = 64; -/*@-sizeoftype@*/ /* FIX: union, not void pointer */ +/* FIX: union, not void pointer */ ctx->paramlen = sizeof(sha256Param); -/*@=sizeoftype@*/ ctx->param = xcalloc(1, ctx->paramlen); -/*@-type@*/ /* FIX: cast? */ +/* FIX: cast? */ ctx->Reset = (void *) sha256Reset; ctx->Update = (void *) sha256Update; ctx->Digest = (void *) sha256Digest; -/*@=type@*/ break; case PGPHASHALGO_SHA384: ctx->digestlen = 48; ctx->datalen = 128; -/*@-sizeoftype@*/ /* FIX: union, not void pointer */ +/* FIX: union, not void pointer */ ctx->paramlen = sizeof(sha384Param); -/*@=sizeoftype@*/ ctx->param = xcalloc(1, ctx->paramlen); -/*@-type@*/ /* FIX: cast? */ +/* FIX: cast? */ ctx->Reset = (void *) sha384Reset; ctx->Update = (void *) sha384Update; ctx->Digest = (void *) sha384Digest; -/*@=type@*/ break; case PGPHASHALGO_SHA512: ctx->digestlen = 64; ctx->datalen = 128; -/*@-sizeoftype@*/ /* FIX: union, not void pointer */ +/* FIX: union, not void pointer */ ctx->paramlen = sizeof(sha512Param); -/*@=sizeoftype@*/ ctx->param = xcalloc(1, ctx->paramlen); -/*@-type@*/ /* FIX: cast? */ +/* FIX: cast? */ ctx->Reset = (void *) sha512Reset; ctx->Update = (void *) sha512Update; ctx->Digest = (void *) sha512Digest; -/*@=type@*/ break; #endif case PGPHASHALGO_RIPEMD160: @@ -125,18 +112,16 @@ rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags) default: free(ctx); return NULL; - /*@notreached@*/ break; + break; } -/*@-boundsread@*/ xx = (*ctx->Reset) (ctx->param); -/*@=boundsread@*/ DPRINTF((stderr, "*** Init(%x) ctx %p param %p\n", flags, ctx, ctx->param)); return ctx; } -/*@-mustmod@*/ /* LCL: ctx->param may be modified, but ctx is abstract @*/ +/* LCL: ctx->param may be modified, but ctx is abstract @*/ int rpmDigestUpdate(DIGEST_CTX ctx, const void * data, size_t len) { @@ -144,13 +129,9 @@ rpmDigestUpdate(DIGEST_CTX ctx, const void * data, size_t len) return -1; DPRINTF((stderr, "*** Update(%p,%p,%d) param %p \"%s\"\n", ctx, data, len, ctx->param, ((char *)data))); -/*@-boundsread@*/ return (*ctx->Update) (ctx->param, data, len); -/*@=boundsread@*/ } -/*@=mustmod@*/ -/*@-boundswrite@*/ int rpmDigestFinal(DIGEST_CTX ctx, void ** datap, size_t *lenp, int asAscii) { @@ -163,12 +144,10 @@ rpmDigestFinal(DIGEST_CTX ctx, void ** datap, size_t *lenp, int asAscii) digest = xmalloc(ctx->digestlen); DPRINTF((stderr, "*** Final(%p,%p,%p,%d) param %p digest %p\n", ctx, datap, lenp, asAscii, ctx->param, digest)); -/*@-noeffectuncon@*/ /* FIX: check rc */ +/* FIX: check rc */ (void) (*ctx->Digest) (ctx->param, digest); -/*@=noeffectuncon@*/ /* Return final digest. */ -/*@-branchstate@*/ if (!asAscii) { if (lenp) *lenp = ctx->digestlen; if (datap) { @@ -189,7 +168,6 @@ DPRINTF((stderr, "*** Final(%p,%p,%p,%d) param %p digest %p\n", ctx, datap, lenp *t = '\0'; } } -/*@=branchstate@*/ if (digest) { memset(digest, 0, ctx->digestlen); /* In case it's sensitive */ free(digest); @@ -200,4 +178,3 @@ DPRINTF((stderr, "*** Final(%p,%p,%p,%d) param %p digest %p\n", ctx, datap, lenp free(ctx); return 0; } -/*@=boundswrite@*/ diff --git a/rpmio/fts.c b/rpmio/fts.c index 4ce33fec5..047038f0d 100644 --- a/rpmio/fts.c +++ b/rpmio/fts.c @@ -1,6 +1,3 @@ -/*@-boundsread@*/ -/*@-sysunrecog -noeffectuncon -nullpass -sizeoftype -unrecog -usereleased @*/ -/*@-compdef -compmempass -dependenttrans -retalias @*/ /*- * Copyright (c) 1990, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -87,31 +84,17 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94"; #endif -/*@only@*/ /*@null@*/ -static FTSENT * fts_alloc(FTS * sp, const char * name, int namelen) - /*@*/; -/*@null@*/ -static FTSENT * fts_build(FTS * sp, int type) - /*@globals fileSystem, internalState @*/ - /*@modifies *sp, fileSystem, internalState @*/; -static void fts_lfree(/*@only@*/ FTSENT * head) - /*@modifies head @*/; -static void fts_load(FTS * sp, FTSENT * p) - /*@modifies *sp, *p @*/; -static size_t fts_maxarglen(char * const * argv) - /*@*/; -static void fts_padjust(FTS * sp, FTSENT * head) - /*@modifies *sp, *head @*/; -static int fts_palloc(FTS * sp, size_t more) - /*@modifies *sp @*/; -static FTSENT * fts_sort(FTS * sp, /*@returned@*/ FTSENT * head, int nitems) - /*@modifies *sp @*/; -static u_short fts_stat(FTS * sp, FTSENT * p, int follow) - /*@modifies *p @*/; +static FTSENT * fts_alloc(FTS * sp, const char * name, int namelen); +static FTSENT * fts_build(FTS * sp, int type); +static void fts_lfree(FTSENT * head); +static void fts_load(FTS * sp, FTSENT * p); +static size_t fts_maxarglen(char * const * argv); +static void fts_padjust(FTS * sp, FTSENT * head); +static int fts_palloc(FTS * sp, size_t more); +static FTSENT * fts_sort(FTS * sp, FTSENT * head, int nitems); +static u_short fts_stat(FTS * sp, FTSENT * p, int follow); static int fts_safe_changedir(FTS * sp, FTSENT * p, int fd, - const char * path) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; + const char * path); #ifndef MAX #define MAX(a, b) ({ __typeof__ (a) _a = (a); \ @@ -144,9 +127,7 @@ Fts_open(char * const * argv, int options, /* Options check. */ if (options & ~FTS_OPTIONMASK) { -/*@-boundswrite@*/ __set_errno (EINVAL); -/*@=boundswrite@*/ return (NULL); } @@ -185,9 +166,7 @@ Fts_open(char * const * argv, int options, for (root = NULL, nitems = 0; *argv != NULL; ++argv, ++nitems) { /* Don't allow zero-length paths. */ if ((len = strlen(*argv)) == 0) { -/*@-boundswrite@*/ __set_errno (ENOENT); -/*@=boundswrite@*/ goto mem3; } @@ -195,19 +174,17 @@ Fts_open(char * const * argv, int options, switch (urlIsURL(*argv)) { case URL_IS_DASH: case URL_IS_HKP: -/*@-boundswrite@*/ __set_errno (ENOENT); -/*@=boundswrite@*/ goto mem3; - /*@notreached@*/ /*@switchbreak@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: case URL_IS_FTP: SET(FTS_NOCHDIR); - /*@switchbreak@*/ break; + break; case URL_IS_UNKNOWN: case URL_IS_PATH: - /*@switchbreak@*/ break; + break; } p = fts_alloc(sp, *argv, len); @@ -240,10 +217,8 @@ Fts_open(char * const * argv, int options, } } } - /*@-branchstate@*/ if (compar && nitems > 1) root = fts_sort(sp, root, nitems); - /*@=branchstate@*/ /* * Allocate a dummy pointer and make fts_read think that we've just @@ -289,7 +264,6 @@ fts_load(FTS * sp, FTSENT * p) * known that the path will fit. */ len = p->fts_pathlen = p->fts_namelen; -/*@-boundswrite@*/ memmove(sp->fts_path, p->fts_name, len + 1); if ((cp = strrchr(p->fts_name, '/')) && (cp != p->fts_name || cp[1])) { len = strlen(++cp); @@ -298,7 +272,6 @@ fts_load(FTS * sp, FTSENT * p) } p->fts_accpath = p->fts_path = sp->fts_path; sp->fts_dev = p->fts_dev; -/*@=boundswrite@*/ } int @@ -315,7 +288,6 @@ Fts_close(FTS * sp) * points to the root list, so we step through to the end of the root * list which has a valid parent pointer. */ - /*@-branchstate@*/ if (sp->fts_cur) { for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) { freep = p; @@ -324,7 +296,6 @@ Fts_close(FTS * sp) } free(p); } - /*@=branchstate@*/ /* Free up child linked list, sort array, path buffer. */ if (sp->fts_child) @@ -342,9 +313,7 @@ Fts_close(FTS * sp) if (saved_errno != 0) { /* Free up the stream pointer. */ free(sp); -/*@-boundswrite@*/ __set_errno (saved_errno); -/*@=boundswrite@*/ return (-1); } } @@ -461,7 +430,6 @@ Fts_read(FTS * sp) } /* Move to the next node on this level. */ -/*@-boundswrite@*/ next: tmp = p; if ((p = p->fts_link) != NULL) { free(tmp); @@ -486,7 +454,6 @@ next: tmp = p; */ if (p->fts_instr == FTS_SKIP) goto next; - /*@-branchstate@*/ if (p->fts_instr == FTS_FOLLOW) { p->fts_info = fts_stat(sp, p, 1); if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { @@ -499,7 +466,6 @@ next: tmp = p; } p->fts_instr = FTS_NOINSTR; } - /*@=branchstate@*/ name: t = sp->fts_path + NAPPEND(p->fts_parent); *t++ = '/'; @@ -523,7 +489,6 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent); /* NUL terminate the pathname. */ sp->fts_path[p->fts_pathlen] = '\0'; -/*@=boundswrite@*/ /* * Return to the parent directory. If at a root node or came through @@ -539,9 +504,7 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent); if (FCHDIR(sp, p->fts_symfd)) { saved_errno = errno; (void)__close(p->fts_symfd); -/*@-boundswrite@*/ __set_errno (saved_errno); -/*@=boundswrite@*/ SET(FTS_STOP); return (NULL); } @@ -562,13 +525,11 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent); * reasons. */ int -Fts_set(/*@unused@*/ FTS * sp, FTSENT * p, int instr) +Fts_set(FTS * sp, FTSENT * p, int instr) { if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW && instr != FTS_NOINSTR && instr != FTS_SKIP) { -/*@-boundswrite@*/ __set_errno (EINVAL); -/*@=boundswrite@*/ return (1); } p->fts_instr = instr; @@ -582,9 +543,7 @@ Fts_children(FTS * sp, int instr) int fd; if (instr != 0 && instr != FTS_NAMEONLY) { -/*@-boundswrite@*/ __set_errno (EINVAL); -/*@=boundswrite@*/ return (NULL); } @@ -595,9 +554,7 @@ Fts_children(FTS * sp, int instr) * Errno set to 0 so user can distinguish empty directory from * an error. */ -/*@-boundswrite@*/ __set_errno (0); -/*@=boundswrite@*/ /* Fatal errors stop here. */ if (ISSET(FTS_STOP)) @@ -760,9 +717,7 @@ fts_build(FTS * sp, int type) len = NAPPEND(cur); if (ISSET(FTS_NOCHDIR)) { cp = sp->fts_path + len; -/*@-boundswrite@*/ *cp++ = '/'; -/*@=boundswrite@*/ } else { /* GCC, you're too verbose. */ cp = NULL; @@ -892,10 +847,8 @@ mem1: saved_errno = errno; if (ISSET(FTS_NOCHDIR)) { if (len == sp->fts_pathlen || nitems == 0) --cp; -/*@-boundswrite@*/ if (cp != NULL) /* XXX can't happen */ *cp = '\0'; -/*@=boundswrite@*/ } /* @@ -959,9 +912,7 @@ fts_stat(FTS * sp, FTSENT * p, int follow) if ((*sp->fts_stat) (p->fts_accpath, sbp)) { saved_errno = errno; if (!(*sp->fts_lstat) (p->fts_accpath, sbp)) { -/*@-boundswrite@*/ __set_errno (0); -/*@=boundswrite@*/ return (FTS_SLNONE); } p->fts_errno = saved_errno; @@ -969,9 +920,7 @@ fts_stat(FTS * sp, FTSENT * p, int follow) } } else if ((*sp->fts_lstat) (p->fts_accpath, sbp)) { p->fts_errno = errno; -/*@-boundswrite@*/ err: memset(sbp, 0, sizeof(*sbp)); -/*@=boundswrite@*/ return (FTS_NS); } @@ -1037,7 +986,6 @@ fts_sort(FTS * sp, FTSENT * head, int nitems) } sp->fts_array = a; } -/*@-boundswrite@*/ for (ap = sp->fts_array, p = head; p != NULL; p = p->fts_link) *ap++ = p; qsort((void *)sp->fts_array, nitems, sizeof(*sp->fts_array), @@ -1045,7 +993,6 @@ fts_sort(FTS * sp, FTSENT * head, int nitems) for (head = *(ap = sp->fts_array); --nitems; ++ap) ap[0]->fts_link = ap[1]; ap[0]->fts_link = NULL; -/*@=boundswrite@*/ return (head); } @@ -1070,10 +1017,8 @@ fts_alloc(FTS * sp, const char * name, int namelen) return (NULL); /* Copy the name and guarantee NUL termination. */ -/*@-boundswrite@*/ memmove(p->fts_name, name, namelen); p->fts_name[namelen] = '\0'; -/*@=boundswrite@*/ if (!ISSET(FTS_NOSTAT)) p->fts_statp = (struct stat *)ALIGN(p->fts_name + namelen + 2); @@ -1093,12 +1038,10 @@ fts_lfree(FTSENT * head) register FTSENT *p; /* Free a linked list of structures. */ - /*@-branchstate@*/ while ((p = head)) { head = head->fts_link; free(p); } - /*@=branchstate@*/ } /* @@ -1124,9 +1067,7 @@ fts_palloc(FTS * sp, size_t more) sp->fts_path = NULL; } sp->fts_path = NULL; -/*@-boundswrite@*/ __set_errno (ENAMETOOLONG); -/*@=boundswrite@*/ return (1); } p = realloc(sp->fts_path, sp->fts_pathlen); @@ -1199,9 +1140,7 @@ fts_safe_changedir(FTS * sp, FTSENT * p, int fd, const char * path) goto bail; } if (p->fts_dev != sb.st_dev || p->fts_ino != sb.st_ino) { -/*@-boundswrite@*/ __set_errno (ENOENT); /* disinformation */ -/*@=boundswrite@*/ ret = -1; goto bail; } @@ -1210,11 +1149,6 @@ bail: oerrno = errno; if (fd < 0) (void)__close(newfd); -/*@-boundswrite@*/ __set_errno (oerrno); -/*@=boundswrite@*/ return (ret); } -/*@=compdef =compmempass =dependenttrans =retalias @*/ -/*@=sysunrecog =noeffectuncon =nullpass =sizeoftype =unrecog =usereleased @*/ -/*@=boundsread@*/ diff --git a/rpmio/fts.h b/rpmio/fts.h index eaa4a8b31..9d982aebd 100644 --- a/rpmio/fts.h +++ b/rpmio/fts.h @@ -66,37 +66,21 @@ #include <dirent.h> typedef struct { -/*@owned@*/ /*@relnull@*/ struct _ftsent *fts_cur; /*!< current node */ -/*@owned@*/ /*@null@*/ struct _ftsent *fts_child; /*!< linked list of children */ -/*@owned@*/ /*@null@*/ struct _ftsent **fts_array; /*!< sort array */ dev_t fts_dev; /*!< starting device # */ -/*@owned@*/ /*@relnull@*/ char *fts_path; /*!< path for this descent */ int fts_rfd; /*!< fd for root */ int fts_pathlen; /*!< sizeof(path) */ int fts_nitems; /*!< elements in the sort array */ -/*@null@*/ - int (*fts_compar) (const void *, const void *) - /*@*/; /*!< compare fn */ - - DIR * (*fts_opendir) (const char * path) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; - struct dirent * (*fts_readdir) (DIR * dir) - /*@globals fileSystem @*/ - /*@modifies *dir, fileSystem @*/; - int (*fts_closedir) (/*@only@*/ DIR * dir) - /*@globals fileSystem @*/ - /*@modifies *dir, fileSystem @*/; - int (*fts_stat) (const char * path, /*@out@*/ struct stat * st) - /*@globals fileSystem @*/ - /*@modifies *st, fileSystem @*/; - int (*fts_lstat) (const char * path, /*@out@*/ struct stat * st) - /*@globals fileSystem @*/ - /*@modifies *st, fileSystem @*/; + int (*fts_compar) (const void *, const void *); /*!< compare fn */ + + DIR * (*fts_opendir) (const char * path); + struct dirent * (*fts_readdir) (DIR * dir); + int (*fts_closedir) (DIR * dir); + int (*fts_stat) (const char * path, struct stat * st); + int (*fts_lstat) (const char * path, struct stat * st); #define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */ #define FTS_LOGICAL 0x0002 /* logical walk */ @@ -114,18 +98,12 @@ typedef struct { } FTS; typedef struct _ftsent { -/*@dependent@*/ struct _ftsent *fts_cycle; /*!< cycle node */ -/*@dependent@*/ /*@relnull@*/ struct _ftsent *fts_parent; /*!< parent directory */ -/*@dependent@*/ /*@null@*/ struct _ftsent *fts_link; /*!< next file in directory */ long fts_number; /*!< local numeric value */ -/*@null@*/ void *fts_pointer; /*!< local address value */ -/*@dependent@*/ char *fts_accpath; /*!< access path */ -/*@dependent@*/ char *fts_path; /*!< root path */ int fts_errno; /*!< errno for this node */ int fts_symfd; /*!< fd for symlink */ @@ -166,7 +144,6 @@ typedef struct _ftsent { #define FTS_SKIP 4 /* discard node */ u_short fts_instr; /*!< fts_set() instructions */ -/*@dependent@*/ struct stat *fts_statp; /*!< stat(2) information */ char fts_name[1]; /*!< file name */ } FTSENT; @@ -179,19 +156,16 @@ __BEGIN_DECLS * @param instr * @return file set member */ -/*@dependent@*/ /*@null@*/ FTSENT *Fts_children (FTS * sp, int instr) __THROW - /*@globals fileSystem, internalState @*/ - /*@modifies *sp, fileSystem, internalState @*/; +; /** * Destroy a file hierarchy traversal handle. * @param sp file hierarchy state * @return 0 on sucess, -1 on error */ -int Fts_close (/*@only@*/ /*@null@*/ FTS * sp) __THROW - /*@globals fileSystem, internalState @*/ - /*@modifies *sp, fileSystem, internalState @*/; +int Fts_close (FTS * sp) __THROW +; /** * Create a handle for file hierarchy traversal. @@ -200,21 +174,17 @@ int Fts_close (/*@only@*/ /*@null@*/ FTS * sp) __THROW * @param compar traversal ordering (or NULL) * @return file hierarchy state (or NULL on error) */ -/*@only@*/ /*@null@*/ FTS *Fts_open (char * const * argv, int options, - /*@null@*/ int (*compar) (const FTSENT **, const FTSENT **)) __THROW - /*@*/; + ; /** * Return next node in the file hierarchy traversal. * @param sp file hierarchy state * @return file set member */ -/*@null@*/ -FTSENT *Fts_read (/*@null@*/ FTS * sp) __THROW - /*@globals fileSystem, internalState @*/ - /*@modifies *sp, fileSystem, internalState @*/; +FTSENT *Fts_read (FTS * sp) __THROW +; /** * Modify the traversal for a file set member. @@ -224,7 +194,7 @@ FTSENT *Fts_read (/*@null@*/ FTS * sp) __THROW * @return 0 on sucess, -1 on error */ int Fts_set (FTS * sp, FTSENT * p, int instr) __THROW - /*@modifies *p @*/; +; __END_DECLS diff --git a/rpmio/macro.c b/rpmio/macro.c index 462ee74f3..dc2907c88 100644 --- a/rpmio/macro.c +++ b/rpmio/macro.c @@ -1,4 +1,3 @@ -/*@-boundsread@*/ /** \ingroup rpmrc rpmio * \file rpmio/macro.c */ @@ -55,54 +54,38 @@ typedef FILE * FD_t; #include "debug.h" /*@access FD_t@*/ /* XXX compared with NULL */ -/*@access MacroContext@*/ -/*@access MacroEntry@*/ -/*@access rpmlua @*/ static struct MacroContext_s rpmGlobalMacroContext_s; -/*@-compmempass@*/ MacroContext rpmGlobalMacroContext = &rpmGlobalMacroContext_s; -/*@=compmempass@*/ static struct MacroContext_s rpmCLIMacroContext_s; -/*@-compmempass@*/ MacroContext rpmCLIMacroContext = &rpmCLIMacroContext_s; -/*@=compmempass@*/ /** * Macro expansion state. */ -typedef /*@abstract@*/ struct MacroBuf_s { -/*@kept@*/ /*@exposed@*/ +typedef struct MacroBuf_s { const char * s; /*!< Text to expand. */ -/*@shared@*/ char * t; /*!< Expansion buffer. */ size_t nb; /*!< No. bytes remaining in expansion buffer. */ int depth; /*!< Current expansion depth. */ int macro_trace; /*!< Pre-print macro to expand? */ int expand_trace; /*!< Post-print macro expansion? */ -/*@kept@*/ /*@exposed@*/ /*@null@*/ void * spec; /*!< (future) %file expansion info?. */ -/*@kept@*/ /*@exposed@*/ MacroContext mc; } * MacroBuf; #define SAVECHAR(_mb, _c) { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; } -/*@-exportlocal -exportheadervar@*/ #define _MAX_MACRO_DEPTH 16 -/*@unchecked@*/ int max_macro_depth = _MAX_MACRO_DEPTH; #define _PRINT_MACRO_TRACE 0 -/*@unchecked@*/ int print_macro_trace = _PRINT_MACRO_TRACE; #define _PRINT_EXPAND_TRACE 0 -/*@unchecked@*/ int print_expand_trace = _PRINT_EXPAND_TRACE; -/*@=exportlocal =exportheadervar@*/ #define MACRO_CHUNK_SIZE 16 @@ -118,9 +101,8 @@ static int expandMacro(MacroBuf mb) * @param p memory to free * @retval NULL always */ -/*@unused@*/ static inline /*@null@*/ void * -_free(/*@only@*/ /*@null@*/ const void * p) - /*@modifies p@*/ +static inline void * +_free(const void * p) { if (p != NULL) free((void *)p); return NULL; @@ -136,7 +118,6 @@ _free(/*@only@*/ /*@null@*/ const void * p) */ static int compareMacroName(const void * ap, const void * bp) - /*@*/ { MacroEntry ame = *((MacroEntry *)ap); MacroEntry bme = *((MacroEntry *)bp); @@ -154,10 +135,8 @@ compareMacroName(const void * ap, const void * bp) * Enlarge macro table. * @param mc macro context */ -/*@-boundswrite@*/ static void expandMacroTable(MacroContext mc) - /*@modifies mc @*/ { if (mc->macroTable == NULL) { mc->macrosAllocated = MACRO_CHUNK_SIZE; @@ -172,7 +151,6 @@ expandMacroTable(MacroContext mc) } memset(&mc->macroTable[mc->firstFree], 0, MACRO_CHUNK_SIZE * sizeof(*(mc->macroTable))); } -/*@=boundswrite@*/ /** * Sort entries in macro table. @@ -180,7 +158,6 @@ expandMacroTable(MacroContext mc) */ static void sortMacroTable(MacroContext mc) - /*@modifies mc @*/ { int i; @@ -239,23 +216,17 @@ rpmDumpMacroTable(MacroContext mc, FILE * fp) * @param namelen no. of bytes * @return address of slot in macro table with name (or NULL) */ -/*@-boundswrite@*/ -/*@dependent@*/ /*@null@*/ static MacroEntry * findEntry(MacroContext mc, const char * name, size_t namelen) - /*@*/ { MacroEntry key, *ret; struct MacroEntry_s keybuf; char *namebuf = NULL; -/*@-globs@*/ if (mc == NULL) mc = rpmGlobalMacroContext; -/*@=globs@*/ if (mc->macroTable == NULL || mc->firstFree == 0) return NULL; -/*@-branchstate@*/ if (namelen > 0) { namebuf = alloca(namelen + 1); memset(namebuf, 0, (namelen + 1)); @@ -263,19 +234,15 @@ findEntry(MacroContext mc, const char * name, size_t namelen) namebuf[namelen] = '\0'; name = namebuf; } -/*@=branchstate@*/ key = &keybuf; memset(key, 0, sizeof(*key)); - /*@-temptrans -assignexpose@*/ key->name = (char *)name; - /*@=temptrans =assignexpose@*/ ret = (MacroEntry *) bsearch(&key, mc->macroTable, mc->firstFree, sizeof(*(mc->macroTable)), compareMacroName); /* XXX TODO: find 1st empty slot and return that */ return ret; } -/*@=boundswrite@*/ /* =============================================================== */ @@ -286,12 +253,8 @@ findEntry(MacroContext mc, const char * name, size_t namelen) * @param fd file handle * @return buffer, or NULL on end-of-file */ -/*@-boundswrite@*/ -/*@null@*/ static char * -rdcl(/*@returned@*/ char * buf, size_t size, FD_t fd) - /*@globals fileSystem @*/ - /*@modifies buf, fileSystem @*/ +rdcl(char * buf, size_t size, FD_t fd) { char *q = buf - 1; /* initialize just before buffer. */ size_t nb = 0; @@ -313,21 +276,21 @@ rdcl(/*@returned@*/ char * buf, size_t size, FD_t fd) switch (*p) { case '\\': switch (*(p+1)) { - case '\0': /*@switchbreak@*/ break; - default: p++; /*@switchbreak@*/ break; + case '\0': break; + default: p++; break; } - /*@switchbreak@*/ break; + break; case '%': switch (*(p+1)) { - case '{': p++, bc++; /*@switchbreak@*/ break; - case '(': p++, pc++; /*@switchbreak@*/ break; - case '%': p++; /*@switchbreak@*/ break; + case '{': p++, bc++; break; + case '(': p++, pc++; break; + case '%': p++; break; } - /*@switchbreak@*/ break; - case '{': if (bc > 0) bc++; /*@switchbreak@*/ break; - case '}': if (bc > 0) bc--; /*@switchbreak@*/ break; - case '(': if (pc > 0) pc++; /*@switchbreak@*/ break; - case ')': if (pc > 0) pc--; /*@switchbreak@*/ break; + break; + case '{': if (bc > 0) bc++; break; + case '}': if (bc > 0) bc--; break; + case '(': if (pc > 0) pc++; break; + case ')': if (pc > 0) pc--; break; } } if (nb == 0 || (*q != '\\' && !bc && !pc) || *(q+1) == '\0') { @@ -341,7 +304,6 @@ rdcl(/*@returned@*/ char * buf, size_t size, FD_t fd) } while (size > 0); return (nread > 0 ? buf : NULL); } -/*@=boundswrite@*/ /** * Return text between pl and matching pr characters. @@ -350,10 +312,8 @@ rdcl(/*@returned@*/ char * buf, size_t size, FD_t fd) * @param pr right char, i.e. ']', ')', '}', etc. * @return address of last char before pr (or NULL) */ -/*@null@*/ static const char * matchchar(const char * p, char pl, char pr) - /*@*/ { int lvl = 0; char c; @@ -379,8 +339,6 @@ matchchar(const char * p, char pl, char pr) */ static void printMacro(MacroBuf mb, const char * s, const char * se) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { const char *senl; const char *ellipsis; @@ -423,8 +381,6 @@ printMacro(MacroBuf mb, const char * s, const char * se) */ static void printExpansion(MacroBuf mb, const char * t, const char * te) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { const char *ellipsis; int choplen; @@ -463,13 +419,11 @@ printExpansion(MacroBuf mb, const char * t, const char * te) /*@-globs@*/ /* FIX: __ctype_b */ \ while (((_c) = *(_s)) && isblank(_c)) \ (_s)++; \ - /*@=globs@*/ #define SKIPNONBLANK(_s, _c) \ /*@-globs@*/ /* FIX: __ctype_b */ \ while (((_c) = *(_s)) && !(isblank(_c) || iseol(_c))) \ (_s)++; \ - /*@=globs@*/ #define COPYNAME(_ne, _s, _c) \ { SKIPBLANK(_s,_c); \ @@ -497,8 +451,6 @@ printExpansion(MacroBuf mb, const char * t, const char * te) */ static int expandT(MacroBuf mb, const char * f, size_t flen) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem@*/ - /*@modifies mb, rpmGlobalMacroContext, fileSystem @*/ { char *sbuf; const char *s = mb->s; @@ -525,8 +477,6 @@ expandT(MacroBuf mb, const char * f, size_t flen) */ static int expandS(MacroBuf mb, char * tbuf, size_t tbuflen) - /*@globals rpmGlobalMacroContext, fileSystem@*/ - /*@modifies mb, *tbuf, rpmGlobalMacroContext, fileSystem @*/ { const char *t = mb->t; size_t nb = mb->nb; @@ -548,11 +498,8 @@ expandS(MacroBuf mb, char * tbuf, size_t tbuflen) * @param ulen no. bytes in u buffer * @return result of expansion */ -/*@-boundswrite@*/ static int expandU(MacroBuf mb, char * u, size_t ulen) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem@*/ - /*@modifies mb, *u, rpmGlobalMacroContext, fileSystem @*/ { const char *s = mb->s; char *t = mb->t; @@ -578,7 +525,6 @@ expandU(MacroBuf mb, char * u, size_t ulen) return rc; } -/*@=boundswrite@*/ /** * Expand output of shell command into target buffer. @@ -587,11 +533,8 @@ expandU(MacroBuf mb, char * u, size_t ulen) * @param clen no. bytes in shell command * @return result of expansion */ -/*@-boundswrite@*/ static int doShellEscape(MacroBuf mb, const char * cmd, size_t clen) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem @*/ - /*@modifies mb, rpmGlobalMacroContext, fileSystem @*/ { char pcmd[BUFSIZ]; FILE *shf; @@ -622,7 +565,6 @@ doShellEscape(MacroBuf mb, const char * cmd, size_t clen) } return 0; } -/*@=boundswrite@*/ /** * Parse (and execute) new macro definition. @@ -632,10 +574,8 @@ doShellEscape(MacroBuf mb, const char * cmd, size_t clen) * @param expandbody should body be expanded? * @return address to continue parsing */ -/*@dependent@*/ static const char * -doDefine(MacroBuf mb, /*@returned@*/ const char * se, int level, int expandbody) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies mb, rpmGlobalMacroContext @*/ +static const char * +doDefine(MacroBuf mb, const char * se, int level, int expandbody) { const char *s = se; char buf[BUFSIZ], *n = buf, *ne = n; @@ -667,35 +607,32 @@ doDefine(MacroBuf mb, /*@returned@*/ const char * se, int level, int expandbody) return se; } s++; /* XXX skip { */ -/*@-boundswrite@*/ strncpy(b, s, (se - s)); b[se - s] = '\0'; -/*@=boundswrite@*/ be += strlen(b); se++; /* XXX skip } */ s = se; /* move scan forward */ } else { /* otherwise free-field */ -/*@-boundswrite@*/ int bc = 0, pc = 0; while (*s && (bc || pc || !iseol(*s))) { switch (*s) { case '\\': switch (*(s+1)) { - case '\0': /*@switchbreak@*/ break; - default: s++; /*@switchbreak@*/ break; + case '\0': break; + default: s++; break; } - /*@switchbreak@*/ break; + break; case '%': switch (*(s+1)) { - case '{': *be++ = *s++; bc++; /*@switchbreak@*/ break; - case '(': *be++ = *s++; pc++; /*@switchbreak@*/ break; - case '%': *be++ = *s++; /*@switchbreak@*/ break; + case '{': *be++ = *s++; bc++; break; + case '(': *be++ = *s++; pc++; break; + case '%': *be++ = *s++; break; } - /*@switchbreak@*/ break; - case '{': if (bc > 0) bc++; /*@switchbreak@*/ break; - case '}': if (bc > 0) bc--; /*@switchbreak@*/ break; - case '(': if (pc > 0) pc++; /*@switchbreak@*/ break; - case ')': if (pc > 0) pc--; /*@switchbreak@*/ break; + break; + case '{': if (bc > 0) bc++; break; + case '}': if (bc > 0) bc--; break; + case '(': if (pc > 0) pc++; break; + case ')': if (pc > 0) pc--; break; } *be++ = *s++; } @@ -709,12 +646,9 @@ doDefine(MacroBuf mb, /*@returned@*/ const char * se, int level, int expandbody) } /* Trim trailing blanks/newlines */ -/*@-globs@*/ while (--be >= b && (c = *be) && (isblank(c) || iseol(c))) {}; -/*@=globs@*/ *(++be) = '\0'; /* one too far */ -/*@=boundswrite@*/ } /* Move scan over body */ @@ -740,12 +674,10 @@ doDefine(MacroBuf mb, /*@returned@*/ const char * se, int level, int expandbody) return se; } -/*@-modfilesys@*/ if (expandbody && expandU(mb, b, (&buf[sizeof(buf)] - b))) { rpmError(RPMERR_BADSPEC, _("Macro %%%s failed to expand\n"), n); return se; } -/*@=modfilesys@*/ addMacro(mb->mc, n, o, b, (level - 1)); @@ -758,10 +690,8 @@ doDefine(MacroBuf mb, /*@returned@*/ const char * se, int level, int expandbody) * @param se macro name to undefine * @return address to continue parsing */ -/*@dependent@*/ static const char * -doUndefine(MacroContext mc, /*@returned@*/ const char * se) - /*@globals rpmGlobalMacroContext @*/ - /*@modifies mc, rpmGlobalMacroContext @*/ +static const char * +doUndefine(MacroContext mc, const char * se) { const char *s = se; char buf[BUFSIZ], *n = buf, *ne = n; @@ -789,8 +719,6 @@ doUndefine(MacroContext mc, /*@returned@*/ const char * se) #ifdef DYING static void dumpME(const char * msg, MacroEntry me) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { if (msg) fprintf(stderr, "%s", msg); @@ -811,30 +739,23 @@ dumpME(const char * msg, MacroEntry me) * @param level macro recursion level */ static void -pushMacro(/*@out@*/ MacroEntry * mep, - const char * n, /*@null@*/ const char * o, - /*@null@*/ const char * b, int level) - /*@modifies *mep @*/ +pushMacro(MacroEntry * mep, + const char * n, const char * o, + const char * b, int level) { MacroEntry prev = (mep && *mep ? *mep : NULL); MacroEntry me = (MacroEntry) xmalloc(sizeof(*me)); - /*@-assignexpose@*/ me->prev = prev; - /*@=assignexpose@*/ me->name = (prev ? prev->name : xstrdup(n)); me->opts = (o ? xstrdup(o) : NULL); me->body = xstrdup(b ? b : ""); me->used = 0; me->level = level; -/*@-boundswrite@*/ -/*@-branchstate@*/ if (mep) *mep = me; else me = _free(me); -/*@=branchstate@*/ -/*@=boundswrite@*/ } /** @@ -843,24 +764,17 @@ pushMacro(/*@out@*/ MacroEntry * mep, */ static void popMacro(MacroEntry * mep) - /*@modifies *mep @*/ { MacroEntry me = (*mep ? *mep : NULL); -/*@-branchstate@*/ if (me) { /* XXX cast to workaround const */ - /*@-onlytrans@*/ -/*@-boundswrite@*/ if ((*mep = me->prev) == NULL) me->name = _free(me->name); -/*@=boundswrite@*/ me->opts = _free(me->opts); me->body = _free(me->body); me = _free(me); - /*@=onlytrans@*/ } -/*@=branchstate@*/ } /** @@ -869,7 +783,6 @@ popMacro(MacroEntry * mep) */ static void freeArgs(MacroBuf mb) - /*@modifies mb @*/ { MacroContext mc = mb->mc; int ndeleted = 0; @@ -918,12 +831,9 @@ freeArgs(MacroBuf mb) * @param lastc stop parsing at lastc * @return address to continue parsing */ -/*@-bounds@*/ -/*@dependent@*/ static const char * -grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, +static const char * +grabArgs(MacroBuf mb, const MacroEntry me, const char * se, const char * lastc) - /*@globals rpmGlobalMacroContext @*/ - /*@modifies mb, rpmGlobalMacroContext @*/ { char buf[BUFSIZ], *b, *be; char aname[16]; @@ -943,12 +853,10 @@ grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, /* Copy args into buf until lastc */ *be++ = ' '; while ((c = *se++) != '\0' && (se-1) != lastc) { -/*@-globs@*/ if (!isblank(c)) { *be++ = c; continue; } -/*@=globs@*/ /* c is blank */ if (be[-1] == ' ') continue; @@ -1007,9 +915,7 @@ grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, /* 1003.2 says this must be 1 before any call. */ #ifdef __GLIBC__ - /*@-mods@*/ optind = 0; /* XXX but posix != glibc */ - /*@=mods@*/ #else optind = 1; #endif @@ -1017,9 +923,8 @@ grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, opts = me->opts; /* Define option macros. */ -/*@-nullstate@*/ /* FIX: argv[] can be NULL */ +/* FIX: argv[] can be NULL */ while((c = getopt(argc, (char **)argv, opts)) != -1) -/*@=nullstate@*/ { if (c == '?' || (o = strchr(opts, c)) == NULL) { rpmError(RPMERR_BADSPEC, _("Unknown option %c in %s(%s)\n"), @@ -1053,9 +958,8 @@ grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, sprintf(aname, "%d", (c - optind + 1)); addMacro(mb->mc, aname, NULL, argv[c], mb->depth); if (be != b) *be++ = ' '; /* Add space between args */ -/*@-nullpass@*/ /* FIX: argv[] can be NULL */ +/* FIX: argv[] can be NULL */ be = stpcpy(be, argv[c]); -/*@=nullpass@*/ } } @@ -1064,7 +968,6 @@ grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, return se; } -/*@=bounds@*/ /** * Perform macro message output @@ -1075,8 +978,6 @@ grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, */ static void doOutput(MacroBuf mb, int waserror, const char * msg, size_t msglen) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem @*/ - /*@modifies mb, rpmGlobalMacroContext, fileSystem @*/ { char buf[BUFSIZ]; @@ -1104,9 +1005,7 @@ doOutput(MacroBuf mb, int waserror, const char * msg, size_t msglen) */ static void doFoo(MacroBuf mb, int negate, const char * f, size_t fn, - /*@null@*/ const char * g, size_t gn) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ - /*@modifies mb, rpmGlobalMacroContext, fileSystem, internalState @*/ + const char * g, size_t gn) { char buf[BUFSIZ], *b = NULL, *be; int c; @@ -1145,17 +1044,13 @@ doFoo(MacroBuf mb, int negate, const char * f, size_t fn, b = (rpmIsVerbose() ? buf : NULL); } else if (STREQ("url2path", f, fn) || STREQ("u2p", f, fn)) { (void)urlPath(buf, (const char **)&b); -/*@-branchstate@*/ if (*b == '\0') b = "/"; -/*@=branchstate@*/ } else if (STREQ("uncompress", f, fn)) { rpmCompressedMagic compressed = COMPRESSED_OTHER; -/*@-globs@*/ for (b = buf; (c = *b) && isblank(c);) b++; for (be = b; (c = *be) && !isblank(c);) be++; -/*@=globs@*/ *be++ = '\0'; #ifndef DEBUG_MACROS (void) isCompressed(b, &compressed); @@ -1237,7 +1132,6 @@ expandMacro(MacroBuf mb) return 1; } -/*@-branchstate@*/ while (rc == 0 && mb->nb > 0 && (c = *s) != '\0') { s++; /* Copy text until next macro */ @@ -1245,14 +1139,13 @@ expandMacro(MacroBuf mb) case '%': if (*s) { /* Ensure not end-of-string. */ if (*s != '%') - /*@switchbreak@*/ break; + break; s++; /* skip first % in %% */ } - /*@fallthrough@*/ default: SAVECHAR(mb, c); continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; } /* Expand next macro */ @@ -1269,10 +1162,10 @@ expandMacro(MacroBuf mb) switch(*s++) { case '!': negate = ((negate + 1) % 2); - /*@switchbreak@*/ break; + break; case '?': chkexist++; - /*@switchbreak@*/ break; + break; } } f = se = s; @@ -1285,21 +1178,19 @@ expandMacro(MacroBuf mb) case '*': se++; if (*se == '*') se++; - /*@innerbreak@*/ break; + break; case '#': se++; - /*@innerbreak@*/ break; + break; default: - /*@innerbreak@*/ break; + break; } fe = se; /* For "%name " macros ... */ -/*@-globs@*/ if ((c = *fe) && isblank(c)) if ((lastc = strchr(fe,'\n')) == NULL) lastc = strchr(fe, '\0'); -/*@=globs@*/ - /*@switchbreak@*/ break; + break; case '(': /* %(...) shell escape */ if ((se = matchchar(s, c, ')')) == NULL) { rpmError(RPMERR_BADSPEC, @@ -1316,7 +1207,7 @@ expandMacro(MacroBuf mb) s = se; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; case '{': /* %{...}/%{...:...} substitution */ if ((se = matchchar(s, c, '}')) == NULL) { rpmError(RPMERR_BADSPEC, @@ -1330,10 +1221,10 @@ expandMacro(MacroBuf mb) switch(*f++) { case '!': negate = ((negate + 1) % 2); - /*@switchbreak@*/ break; + break; case '?': chkexist++; - /*@switchbreak@*/ break; + break; } } for (fe = f; (c = *fe) && !strchr(" :}", c);) @@ -1342,14 +1233,14 @@ expandMacro(MacroBuf mb) case ':': g = fe + 1; ge = se - 1; - /*@innerbreak@*/ break; + break; case ' ': lastc = se-1; - /*@innerbreak@*/ break; + break; default: - /*@innerbreak@*/ break; + break; } - /*@switchbreak@*/ break; + break; } /* XXX Everything below expects fe > f */ @@ -1456,9 +1347,8 @@ expandMacro(MacroBuf mb) STREQ("S", f, fn) || STREQ("P", f, fn) || STREQ("F", f, fn)) { - /*@-internalglobs@*/ /* FIX: verbose may be set */ + /* FIX: verbose may be set */ doFoo(mb, negate, f, fn, g, gn); - /*@=internalglobs@*/ s = se; continue; } @@ -1550,7 +1440,6 @@ expandMacro(MacroBuf mb) s = se; } -/*@=branchstate@*/ *mb->t = '\0'; mb->s = s; @@ -1569,10 +1458,8 @@ expandMacro(MacroBuf mb) #define POPT_ARGV_ARRAY_GROW_DELTA 5 -/*@-boundswrite@*/ static int XpoptDupArgv(int argc, const char **argv, int * argcPtr, const char *** argvPtr) - /*@modifies *argcPtr, *argvPtr @*/ { size_t nb = (argc + 1) * sizeof(*argv); const char ** argv2; @@ -1593,12 +1480,10 @@ static int XpoptDupArgv(int argc, const char **argv, argv2 = (void *) dst; dst += (argc + 1) * sizeof(*argv); - /*@-branchstate@*/ for (i = 0; i < argc; i++) { argv2[i] = dst; dst += strlen(strcpy(dst, argv[i])) + 1; } - /*@=branchstate@*/ argv2[argc] = NULL; if (argvPtr) { @@ -1611,11 +1496,8 @@ static int XpoptDupArgv(int argc, const char **argv, *argcPtr = argc; return 0; } -/*@=boundswrite@*/ -/*@-bounds@*/ static int XpoptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr) - /*@modifies *argcPtr, *argvPtr @*/ { const char * src; char quote = '\0'; @@ -1656,17 +1538,16 @@ static int XpoptParseArgvString(const char * s, int * argcPtr, const char *** ar case '"': case '\'': quote = *src; - /*@switchbreak@*/ break; + break; case '\\': src++; if (!*src) { rc = POPT_ERROR_BADQUOTE; goto exit; } - /*@fallthrough@*/ default: *buf++ = *src; - /*@switchbreak@*/ break; + break; } } @@ -1680,9 +1561,7 @@ exit: if (argv) free(argv); return rc; } -/*@=bounds@*/ /* =============================================================== */ -/*@unchecked@*/ static int _debug = 0; int rpmGlob(const char * patterns, int * argcPtr, const char *** argvPtr) @@ -1705,14 +1584,12 @@ int rpmGlob(const char * patterns, int * argcPtr, const char *** argvPtr) if (rc) return rc; #ifdef ENABLE_NLS -/*@-branchstate@*/ t = setlocale(LC_COLLATE, NULL); if (t) old_collate = xstrdup(t); t = setlocale(LC_CTYPE, NULL); if (t) old_ctype = xstrdup(t); -/*@=branchstate@*/ (void) setlocale(LC_COLLATE, "C"); (void) setlocale(LC_CTYPE, "C"); #endif @@ -1755,14 +1632,14 @@ fprintf(stderr, "*** rpmGlob argv[%d] \"%s\"\n", argc, argv[argc]); case URL_IS_PATH: case URL_IS_DASH: strncpy(globRoot, av[j], nb); - /*@switchbreak@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: case URL_IS_FTP: case URL_IS_HKP: case URL_IS_UNKNOWN: default: - /*@switchbreak@*/ break; + break; } globRoot += nb; *globRoot = '\0'; @@ -1781,9 +1658,7 @@ if (_debug) fprintf(stderr, "*** rpmGlob argv[%d] \"%s\"\n", argc, globURL); argv[argc++] = xstrdup(globURL); } - /*@-immediatetrans@*/ Globfree(&gl); - /*@=immediatetrans@*/ globURL = _free(globURL); } @@ -1800,7 +1675,6 @@ fprintf(stderr, "*** rpmGlob argv[%d] \"%s\"\n", argc, globURL); exit: #ifdef ENABLE_NLS -/*@-branchstate@*/ if (old_collate) { (void) setlocale(LC_COLLATE, old_collate); old_collate = _free(old_collate); @@ -1809,19 +1683,14 @@ exit: (void) setlocale(LC_CTYPE, old_ctype); old_ctype = _free(old_ctype); } -/*@=branchstate@*/ #endif av = _free(av); -/*@-branchstate@*/ if (rc || argvPtr == NULL) { -/*@-dependenttrans -unqualifiedtrans@*/ if (argv != NULL) for (i = 0; i < argc; i++) argv[i] = _free(argv[i]); argv = _free(argv); -/*@=dependenttrans =unqualifiedtrans@*/ } -/*@=branchstate@*/ return rc; } @@ -1903,7 +1772,7 @@ delMacro(MacroContext mc, const char * n) } } -/*@-mustmod@*/ /* LCL: mc is modified through mb->mc, mb is abstract */ +/* LCL: mc is modified through mb->mc, mb is abstract */ int rpmDefineMacro(MacroContext mc, const char * macro, int level) { @@ -1915,7 +1784,6 @@ rpmDefineMacro(MacroContext mc, const char * macro, int level) (void) doDefine(mb, macro, level, 0); return 0; } -/*@=mustmod@*/ void rpmLoadMacros(MacroContext mc, int level) @@ -1951,9 +1819,7 @@ rpmLoadMacroFile(MacroContext mc, const char * fn) } /* XXX Assume new fangled macro expansion */ - /*@-mods@*/ max_macro_depth = 16; - /*@=mods@*/ buf[0] = '\0'; while(rdcl(buf, sizeof(buf), fd) != NULL) { @@ -1991,7 +1857,7 @@ rpmInitMacros(MacroContext mc, const char * macrofiles) for (me = m; (me = strchr(me, ':')) != NULL; me++) { /* Skip over URI's. */ if (!(me[1] == '/' && me[2] == '/')) - /*@innerbreak@*/ break; + break; } if (me && *me == ':') @@ -2021,12 +1887,9 @@ rpmInitMacros(MacroContext mc, const char * macrofiles) mfiles = _free(mfiles); /* Reload cmdline macros */ - /*@-mods@*/ rpmLoadMacros(rpmCLIMacroContext, RMIL_CMDLINE); - /*@=mods@*/ } -/*@-globstate@*/ void rpmFreeMacros(MacroContext mc) { @@ -2039,10 +1902,8 @@ rpmFreeMacros(MacroContext mc) MacroEntry me; while ((me = mc->macroTable[i]) != NULL) { /* XXX cast to workaround const */ - /*@-onlytrans@*/ if ((mc->macroTable[i] = me->prev) == NULL) me->name = _free(me->name); - /*@=onlytrans@*/ me->opts = _free(me->opts); me->body = _free(me->body); me = _free(me); @@ -2052,7 +1913,6 @@ rpmFreeMacros(MacroContext mc) } memset(mc, 0, sizeof(*mc)); } -/*@=globstate@*/ /* =============================================================== */ int isCompressed(const char * file, rpmCompressedMagic * compressed) @@ -2105,7 +1965,6 @@ int isCompressed(const char * file, rpmCompressedMagic * compressed) /* =============================================================== */ -/*@-modfilesys@*/ char * rpmExpand(const char *arg, ...) { @@ -2127,7 +1986,6 @@ rpmExpand(const char *arg, ...) (void) expandMacros(NULL, NULL, buf, sizeof(buf)); return xstrdup(buf); } -/*@=modfilesys@*/ int rpmExpandNumeric(const char *arg) @@ -2175,10 +2033,10 @@ char *rpmCleanPath(char * path) if (s[1] == '/' && s[2] == '/') { *t++ = *s++; *t++ = *s++; - /*@switchbreak@*/ break; + break; } begin=1; - /*@switchbreak@*/ break; + break; case '/': /* Move parent dir forward */ for (se = te + 1; se < t && *se != '/'; se++) @@ -2191,7 +2049,7 @@ char *rpmCleanPath(char * path) s++; while (t > path && t[-1] == '/') t--; - /*@switchbreak@*/ break; + break; case '.': /* Leading .. is special */ /* Check that it is ../, so that we don't interpret */ @@ -2202,11 +2060,11 @@ char *rpmCleanPath(char * path) if (begin && s[1] == '.' && (s[2] == '/' || s[2] == '\0')) { /*fprintf(stderr, " leading \"..\"\n"); */ *t++ = *s++; - /*@switchbreak@*/ break; + break; } /* Single . is special */ if (begin && s[1] == '\0') { - /*@switchbreak@*/ break; + break; } /* Trim embedded ./ , trailing /. */ if ((t[-1] == '/' && s[1] == '\0') || (t > path && t[-1] == '/' && s[1] == '/')) { @@ -2225,10 +2083,10 @@ char *rpmCleanPath(char * path) s++; continue; } - /*@switchbreak@*/ break; + break; default: begin = 0; - /*@switchbreak@*/ break; + break; } *t++ = *s++; } @@ -2266,9 +2124,7 @@ rpmGetPath(const char *path, ...) *te = '\0'; } va_end(ap); -/*@-modfilesys@*/ (void) expandMacros(NULL, NULL, buf, sizeof(buf)); -/*@=modfilesys@*/ (void) rpmCleanPath(buf); return xstrdup(buf); /* XXX xstrdup has side effects. */ @@ -2279,12 +2135,12 @@ rpmGetPath(const char *path, ...) const char * rpmGenPath(const char * urlroot, const char * urlmdir, const char *urlfile) { -/*@owned@*/ const char * xroot = rpmGetPath(urlroot, NULL); -/*@dependent@*/ const char * root = xroot; -/*@owned@*/ const char * xmdir = rpmGetPath(urlmdir, NULL); -/*@dependent@*/ const char * mdir = xmdir; -/*@owned@*/ const char * xfile = rpmGetPath(urlfile, NULL); -/*@dependent@*/ const char * file = xfile; +const char * xroot = rpmGetPath(urlroot, NULL); +const char * root = xroot; +const char * xmdir = rpmGetPath(urlmdir, NULL); +const char * mdir = xmdir; +const char * xfile = rpmGetPath(urlfile, NULL); +const char * file = xfile; const char * result; const char * url = NULL; int nurl = 0; @@ -2322,14 +2178,12 @@ if (_debug) fprintf(stderr, "*** RGP ut %d file %s nurl %d\n", ut, file, nurl); #endif } -/*@-branchstate@*/ if (url && nurl > 0) { char *t = strncpy(alloca(nurl+1), url, nurl); t[nurl] = '\0'; url = t; } else url = ""; -/*@=branchstate@*/ result = rpmGetPath(url, root, "/", mdir, "/", file, NULL); @@ -2423,4 +2277,3 @@ main(int argc, char *argv[]) } #endif /* EVAL_MACROS */ #endif /* DEBUG_MACROS */ -/*@=boundsread@*/ diff --git a/rpmio/rpmdav.c b/rpmio/rpmdav.c index 4c24f9c5d..ab6313718 100644 --- a/rpmio/rpmdav.c +++ b/rpmio/rpmdav.c @@ -1,4 +1,3 @@ -/*@-modfilesys@*/ /** \ingroup rpmio * \file rpmio/rpmdav.c */ @@ -37,9 +36,6 @@ #include "ugid.h" #include "debug.h" -/*@access DIR @*/ -/*@access FD_t @*/ -/*@access urlinfo @*/ #if 0 /* HACK: reasonable value needed. */ #define TIMEOUT_SECS 60 @@ -48,7 +44,6 @@ #endif #ifdef WITH_NEON -/*@unchecked@*/ static int httpTimeoutSecs = TIMEOUT_SECS; #endif @@ -57,9 +52,8 @@ static int httpTimeoutSecs = TIMEOUT_SECS; * @param p memory to free * @retval NULL always */ -/*@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; @@ -69,8 +63,6 @@ _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p) /* =============================================================== */ static int davFree(urlinfo u) - /*@globals internalState @*/ - /*@modifies u, internalState @*/ { if (u != NULL && u->sess != NULL) { u->capabilities = _free(u->capabilities); @@ -84,7 +76,6 @@ static int davFree(urlinfo u) } static void davProgress(void * userdata, off_t current, off_t total) - /*@*/ { urlinfo u = userdata; ne_session * sess; @@ -103,11 +94,9 @@ fprintf(stderr, "*** davProgress(%p,0x%x:0x%x) sess %p u %p\n", userdata, (unsig static void davNotify(void * userdata, ne_conn_status connstatus, const char * info) - /*@*/ { urlinfo u = userdata; ne_session * sess; - /*@observer@*/ static const char * connstates[] = { "namelookup", "connecting", @@ -132,16 +121,13 @@ typedef enum { u->connstatus = connstatus; -/*@-boundsread@*/ if (_dav_debug < 0) fprintf(stderr, "*** davNotify(%p,%d,%p) sess %p u %p %s\n", userdata, connstatus, info, sess, u, connstates[ (connstatus < 4 ? connstatus : 4)]); -/*@=boundsread@*/ } static void davCreateRequest(ne_request * req, void * userdata, const char * method, const char * uri) - /*@*/ { urlinfo u = userdata; ne_session * sess; @@ -187,7 +173,6 @@ fprintf(stderr, "-> %s\n", buf->data); } static int davPostSend(ne_request * req, void * userdata, const ne_status * status) - /*@*/ { urlinfo u = userdata; ne_session * sess; @@ -203,15 +188,12 @@ assert(u == ne_get_session_private(sess, "urlinfo")); fd = ne_get_request_private(req, id); -/*@-evalorder@*/ if (_dav_debug < 0) fprintf(stderr, "*** davPostSend(%p,%p,%p) sess %p %s %p %s\n", req, userdata, status, sess, id, fd, ne_get_error(sess)); -/*@=evalorder@*/ return NE_OK; } static void davDestroyRequest(ne_request * req, void * userdata) - /*@*/ { urlinfo u = userdata; ne_session * sess; @@ -232,7 +214,6 @@ fprintf(stderr, "*** davDestroyRequest(%p,%p) sess %p %s %p\n", req, userdata, s } static void davDestroySession(void * userdata) - /*@*/ { urlinfo u = userdata; ne_session * sess; @@ -254,7 +235,6 @@ fprintf(stderr, "*** davDestroySession(%p) sess %p %s %p\n", userdata, sess, id, static int davVerifyCert(void *userdata, int failures, const ne_ssl_certificate *cert) - /*@*/ { const char *hostname = userdata; @@ -265,8 +245,6 @@ fprintf(stderr, "*** davVerifyCert(%p,%d,%p) %s\n", userdata, failures, cert, ho } static int davConnect(urlinfo u) - /*@globals internalState @*/ - /*@modifies u, internalState @*/ { const char * path = NULL; int rc; @@ -286,7 +264,6 @@ static int davConnect(urlinfo u) /* HACK: "301 Moved Permanently" on empty subdir. */ if (!strncmp("301 ", ne_get_error(u->sess), sizeof("301 ")-1)) break; - /*@fallthrough@*/ case NE_CONNECT: case NE_LOOKUP: default: @@ -304,8 +281,6 @@ fprintf(stderr, "*** Connect to %s:%d failed(%d):\n\t%s\n", } static int davInit(const char * url, urlinfo * uret) - /*@globals internalState @*/ - /*@modifies *uret, internalState @*/ { urlinfo u = NULL; int rc = 0; @@ -313,23 +288,20 @@ static int davInit(const char * url, urlinfo * uret) /*@-globs@*/ /* FIX: h_errno annoyance. */ if (urlSplit(url, &u)) return -1; /* XXX error returns needed. */ -/*@=globs@*/ if (u->url != NULL && u->sess == NULL) switch (u->urltype) { default: assert(u->urltype != u->urltype); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: case URL_IS_HKP: { ne_server_capabilities * capabilities; /* HACK: oneshots should be done Somewhere Else Instead. */ -/*@-noeffect@*/ rc = ((_dav_debug < 0) ? NE_DBG_HTTP : 0); ne_debug_init(stderr, rc); /* XXX oneshot? */ -/*@=noeffect@*/ rc = ne_sock_init(); /* XXX oneshot? */ u->lockstore = ne_lockstore_create(); /* XXX oneshot? */ @@ -377,10 +349,8 @@ static int davInit(const char * url, urlinfo * uret) } exit: -/*@-boundswrite@*/ if (rc == 0 && uret != NULL) *uret = urlLink(u, __FUNCTION__); -/*@=boundswrite@*/ u = urlFree(u, "urlSplit (davInit)"); return rc; @@ -397,7 +367,6 @@ enum fetch_rtype_e { struct fetch_resource_s { struct fetch_resource_s *next; char *uri; -/*@unused@*/ char *displayname; enum fetch_rtype_e type; size_t size; @@ -408,9 +377,7 @@ struct fetch_resource_s { int error_status; /* error status returned for this resource */ }; -/*@null@*/ -static void *fetch_destroy_item(/*@only@*/ struct fetch_resource_s *res) - /*@modifies res @*/ +static void *fetch_destroy_item(struct fetch_resource_s *res) { NE_FREE(res->uri); NE_FREE(res->error_reason); @@ -419,23 +386,18 @@ static void *fetch_destroy_item(/*@only@*/ struct fetch_resource_s *res) } #ifdef UNUSED -/*@null@*/ -static void *fetch_destroy_list(/*@only@*/ struct fetch_resource_s *res) - /*@modifies res @*/ +static void *fetch_destroy_list(struct fetch_resource_s *res) { struct fetch_resource_s *next; -/*@-branchstate@*/ for (; res != NULL; res = next) { next = res->next; res = fetch_destroy_item(res); } -/*@=branchstate@*/ return NULL; } #endif -static void *fetch_create_item(/*@unused@*/ void *userdata, /*@unused@*/ const char *uri) - /*@*/ +static void *fetch_create_item(void *userdata, const char *uri) { struct fetch_resource_s * res = ne_calloc(sizeof(*res)); return res; @@ -443,11 +405,9 @@ static void *fetch_create_item(/*@unused@*/ void *userdata, /*@unused@*/ const c /* =============================================================== */ struct fetch_context_s { -/*@relnull@*/ struct fetch_resource_s **resrock; const char *uri; unsigned int include_target; /* Include resource at href */ -/*@refcounted@*/ urlinfo u; int ac; int nalloced; @@ -457,10 +417,7 @@ struct fetch_context_s { time_t * mtimes; }; -/*@null@*/ -static void *fetch_destroy_context(/*@only@*/ /*@null@*/ struct fetch_context_s *ctx) - /*@globals internalState @*/ - /*@modifies ctx, internalState @*/ +static void *fetch_destroy_context(struct fetch_context_s *ctx) { if (ctx == NULL) return NULL; @@ -471,17 +428,12 @@ static void *fetch_destroy_context(/*@only@*/ /*@null@*/ struct fetch_context_s ctx->mtimes = _free(ctx->mtimes); ctx->u = urlFree(ctx->u, __FUNCTION__); ctx->uri = _free(ctx->uri); -/*@-boundswrite@*/ memset(ctx, 0, sizeof(*ctx)); -/*@=boundswrite@*/ ctx = _free(ctx); return NULL; } -/*@null@*/ static void *fetch_create_context(const char *uri) - /*@globals internalState @*/ - /*@modifies internalState @*/ { struct fetch_context_s * ctx; urlinfo u; @@ -489,7 +441,6 @@ static void *fetch_create_context(const char *uri) /*@-globs@*/ /* FIX: h_errno annoyance. */ if (urlSplit(uri, &u)) return NULL; -/*@=globs@*/ ctx = ne_calloc(sizeof(*ctx)); ctx->uri = xstrdup(uri); @@ -497,7 +448,6 @@ static void *fetch_create_context(const char *uri) return ctx; } -/*@unchecked@*/ /*@observer@*/ static const ne_propname fetch_props[] = { { "DAV:", "getcontentlength" }, { "DAV:", "getlastmodified" }, @@ -511,7 +461,6 @@ static const ne_propname fetch_props[] = { #define ELM_resourcetype (NE_PROPS_STATE_TOP + 1) #define ELM_collection (NE_PROPS_STATE_TOP + 2) -/*@unchecked@*/ /*@observer@*/ static const struct ne_xml_idmap fetch_idmap[] = { { "DAV:", "resourcetype", ELM_resourcetype }, { "DAV:", "collection", ELM_collection } @@ -519,8 +468,7 @@ static const struct ne_xml_idmap fetch_idmap[] = { static int fetch_startelm(void *userdata, int parent, const char *nspace, const char *name, - /*@unused@*/ const char **atts) - /*@*/ + const char **atts) { ne_propfind_handler *pfh = userdata; struct fetch_resource_s *r = ne_propfind_current_private(pfh); @@ -541,7 +489,6 @@ static int fetch_startelm(void *userdata, int parent, static int fetch_compare(const struct fetch_resource_s *r1, const struct fetch_resource_s *r2) - /*@*/ { /* Sort errors first, then collections, then alphabetically */ if (r1->type == resr_error) { @@ -565,7 +512,6 @@ static int fetch_compare(const struct fetch_resource_s *r1, static void fetch_results(void *userdata, const char *uri, const ne_prop_result_set *set) - /*@*/ { struct fetch_context_s *ctx = userdata; struct fetch_resource_s *current, *previous, *newres; @@ -594,20 +540,16 @@ fprintf(stderr, "==> %s skipping target resource.\n", path); newres->uri = ne_strdup(path); -/*@-boundsread@*/ clength = ne_propset_value(set, &fetch_props[0]); modtime = ne_propset_value(set, &fetch_props[1]); isexec = ne_propset_value(set, &fetch_props[2]); checkin = ne_propset_value(set, &fetch_props[4]); checkout = ne_propset_value(set, &fetch_props[5]); -/*@=boundsread@*/ -/*@-branchstate@*/ if (clength == NULL) status = ne_propset_status(set, &fetch_props[0]); if (modtime == NULL) status = ne_propset_status(set, &fetch_props[1]); -/*@=branchstate@*/ if (newres->type == resr_normal && status != NULL) { /* It's an error! */ @@ -663,16 +605,12 @@ fprintf(stderr, "==> %s skipping target resource.\n", path); if (previous) { previous->next = newres; } else { -/*@-boundswrite@*/ *ctx->resrock = newres; -/*@=boundswrite@*/ } newres->next = current; } static int davFetch(const urlinfo u, struct fetch_context_s * ctx) - /*@globals internalState @*/ - /*@modifies ctx, internalState @*/ { const char * path = NULL; int depth = 1; /* XXX passed arg? */ @@ -724,9 +662,7 @@ static int davFetch(const urlinfo u, struct fetch_context_s * ctx) val = ne_strndup(s, (se - s)); -/*@-nullpass@*/ val = ne_path_unescape(val); -/*@=nullpass@*/ xx = argvAdd(&ctx->av, val); if (_dav_debug < 0) @@ -748,21 +684,19 @@ fprintf(stderr, "*** argvAdd(%p,\"%s\")\n", &ctx->av, val); switch (current->type) { case resr_normal: st_mode = S_IFREG; - /*@switchbreak@*/ break; + break; case resr_collection: st_mode = S_IFDIR; - /*@switchbreak@*/ break; + break; case resr_reference: case resr_error: default: st_mode = 0; - /*@switchbreak@*/ break; + break; } -/*@-boundswrite@*/ ctx->modes[ctx->ac] = st_mode; ctx->sizes[ctx->ac] = current->size; ctx->mtimes[ctx->ac] = current->modtime; -/*@=boundswrite@*/ ctx->ac++; current = fetch_destroy_item(current); @@ -773,8 +707,6 @@ fprintf(stderr, "*** argvAdd(%p,\"%s\")\n", &ctx->av, val); } static int davNLST(struct fetch_context_s * ctx) - /*@globals internalState @*/ - /*@modifies ctx, internalState @*/ { urlinfo u = NULL; int rc; @@ -792,7 +724,6 @@ static int davNLST(struct fetch_context_s * ctx) /* HACK: "301 Moved Permanently" on empty subdir. */ if (!strncmp("301 ", ne_get_error(u->sess), sizeof("301 ")-1)) break; - /*@fallthrough@*/ default: if (_dav_debug) fprintf(stderr, "*** Fetch from %s:%d failed:\n\t%s\n", @@ -807,8 +738,7 @@ exit: } /* =============================================================== */ -static int my_result(const char * msg, int ret, /*@null@*/ FILE * fp) - /*@modifies *fp @*/ +static int my_result(const char * msg, int ret, FILE * fp) { /* HACK: don't print unless debugging. */ if (_dav_debug >= 0) @@ -829,7 +759,6 @@ static int my_result(const char * msg, int ret, /*@null@*/ FILE * fp) #ifdef DYING static void hexdump(const unsigned char * buf, ssize_t len) - /*@*/ { int i; if (len <= 0) @@ -843,8 +772,7 @@ static void hexdump(const unsigned char * buf, ssize_t len) } #endif -static void davAcceptRanges(void * userdata, /*@null@*/ const char * value) - /*@modifies userdata @*/ +static void davAcceptRanges(void * userdata, const char * value) { urlinfo u = userdata; @@ -868,21 +796,17 @@ fprintf(stderr, "<- %s\n", value); } #endif -static void davContentLength(void * userdata, /*@null@*/ const char * value) - /*@modifies userdata @*/ +static void davContentLength(void * userdata, const char * value) { FD_t ctrl = userdata; if (!(ctrl && value)) return; if (_dav_debug < 0) fprintf(stderr, "*** fd %p Content-Length: %s\n", ctrl, value); -/*@-unrecog@*/ ctrl->contentLength = strtoll(value, NULL, 10); -/*@=unrecog@*/ } -static void davConnection(void * userdata, /*@null@*/ const char * value) - /*@modifies userdata @*/ +static void davConnection(void * userdata, const char * value) { FD_t ctrl = userdata; @@ -895,8 +819,8 @@ fprintf(stderr, "*** fd %p Connection: %s\n", ctrl, value); ctrl->persist = 1; } -/*@-mustmod@*/ /* HACK: stash error in *str. */ -int davResp(urlinfo u, FD_t ctrl, /*@unused@*/ char *const * str) +/* HACK: stash error in *str. */ +int davResp(urlinfo u, FD_t ctrl, char *const * str) { int rc = 0; @@ -907,14 +831,11 @@ if (_dav_debug < 0) fprintf(stderr, "*** davResp(%p,%p,%p) sess %p req %p rc %d\n", u, ctrl, str, u->sess, ctrl->req, rc); /* HACK FTPERR_NE_FOO == -NE_FOO error impedance match */ -/*@-observertrans@*/ if (rc) fdSetSyserrno(ctrl, errno, ftpStrerror(-rc)); -/*@=observertrans@*/ return rc; } -/*@=mustmod@*/ int davReq(FD_t ctrl, const char * httpCmd, const char * httpArg) { @@ -933,9 +854,7 @@ fprintf(stderr, "*** davReq(%p,%s,\"%s\") entry sess %p req %p\n", ctrl, httpCmd assert(u->sess != NULL); assert(ctrl->req == NULL); -/*@-nullpass@*/ ctrl->req = ne_request_create(u->sess, httpCmd, httpArg); -/*@=nullpass@*/ assert(ctrl->req != NULL); ne_set_request_private(ctrl->req, "fd", ctrl); @@ -995,9 +914,7 @@ fprintf(stderr, "*** davReq(%p,%s,\"%s\") exit sess %p req %p rc %d\n", ctrl, ht return 0; errxit: -/*@-observertrans@*/ fdSetSyserrno(ctrl, errno, ftpStrerror(rc)); -/*@=observertrans@*/ /* HACK balance fd refs. ne_session_destroy to tear down non-keepalive? */ ctrl = fdLink(ctrl, "error data (davReq)"); @@ -1005,8 +922,8 @@ errxit: return rc; } -FD_t davOpen(const char * url, /*@unused@*/ int flags, - /*@unused@*/ mode_t mode, /*@out@*/ urlinfo * uret) +FD_t davOpen(const char * url, int flags, + mode_t mode, urlinfo * uret) { const char * path = NULL; urltype urlType = urlPath(url, &path); @@ -1048,16 +965,12 @@ assert(urlType == URL_IS_HTTPS || urlType == URL_IS_HTTP || urlType == URL_IS_HK } exit: -/*@-boundswrite@*/ if (uret) *uret = u; -/*@=boundswrite@*/ - /*@-refcounttrans@*/ return fd; - /*@=refcounttrans@*/ } -ssize_t davRead(void * cookie, /*@out@*/ char * buf, size_t count) +ssize_t davRead(void * cookie, char * buf, size_t count) { FD_t fd = cookie; ssize_t rc; @@ -1114,7 +1027,7 @@ hexdump(buf, count); return rc; } -int davSeek(void * cookie, /*@unused@*/ _libio_pos_t pos, int whence) +int davSeek(void * cookie, _libio_pos_t pos, int whence) { if (_dav_debug < 0) fprintf(stderr, "*** davSeek(%p,pos,%d)\n", cookie, whence); @@ -1124,9 +1037,7 @@ fprintf(stderr, "*** davSeek(%p,pos,%d)\n", cookie, whence); /*@-mustmod@*/ /* HACK: fd->req is modified. */ int davClose(void * cookie) { -/*@-onlytrans@*/ FD_t fd = cookie; -/*@=onlytrans@*/ int rc; assert(fd->req != NULL); @@ -1140,7 +1051,6 @@ if (_dav_debug < 0) fprintf(stderr, "*** davClose(%p) rc %d\n", fd, rc); return rc; } -/*@=mustmod@*/ /* =============================================================== */ int davMkdir(const char * path, mode_t mode) @@ -1244,8 +1154,6 @@ fprintf(stderr, "*** davUnlink(%s) rc %d\n", path, rc); #ifdef NOTYET static int davChdir(const char * path) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { return davCommand("CWD", path, NULL); } @@ -1254,8 +1162,7 @@ static int davChdir(const char * path) /* =============================================================== */ static const char * statstr(const struct stat * st, - /*@returned@*/ /*@out@*/ char * buf) - /*@modifies *buf @*/ + char * buf) { sprintf(buf, "*** dev %x ino %x mode %0o nlink %d uid %d gid %d rdev %x size %x\n", @@ -1270,13 +1177,9 @@ static const char * statstr(const struct stat * st, return buf; } -/*@unchecked@*/ static int dav_st_ino = 0xdead0000; -/*@-boundswrite@*/ -int davStat(const char * path, /*@out@*/ struct stat *st) - /*@globals dav_st_ino, fileSystem, internalState @*/ - /*@modifies *st, dav_st_ino, fileSystem, internalState @*/ +int davStat(const char * path, struct stat *st) { struct fetch_context_s * ctx = NULL; char buf[1024]; @@ -1316,12 +1219,8 @@ exit: ctx = fetch_destroy_context(ctx); return rc; } -/*@=boundswrite@*/ -/*@-boundswrite@*/ -int davLstat(const char * path, /*@out@*/ struct stat *st) - /*@globals dav_st_ino, fileSystem, internalState @*/ - /*@modifies *st, dav_st_ino, fileSystem, internalState @*/ +int davLstat(const char * path, struct stat *st) { struct fetch_context_s * ctx = NULL; char buf[1024]; @@ -1361,12 +1260,9 @@ exit: ctx = fetch_destroy_context(ctx); return rc; } -/*@=boundswrite@*/ #ifdef NOTYET -static int davReadlink(const char * path, /*@out@*/ char * buf, size_t bufsiz) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies *buf, fileSystem, internalState @*/ +static int davReadlink(const char * path, char * buf, size_t bufsiz) { int rc; rc = davNLST(path, DO_FTP_READLINK, NULL, buf, bufsiz); @@ -1379,10 +1275,9 @@ fprintf(stderr, "*** davReadlink(%s) rc %d\n", path, rc); #endif /* WITH_NEON */ /* =============================================================== */ -/*@unchecked@*/ int avmagicdir = 0x3607113; -int avClosedir(/*@only@*/ DIR * dir) +int avClosedir(DIR * dir) { AVDIR avdir = (AVDIR)dir; @@ -1390,9 +1285,7 @@ if (_av_debug) fprintf(stderr, "*** avClosedir(%p)\n", avdir); #if defined(HAVE_PTHREAD_H) -/*@-moduncon -noeffectuncon @*/ (void) pthread_mutex_destroy(&avdir->lock); -/*@=moduncon =noeffectuncon @*/ #endif avdir = _free(avdir); @@ -1419,15 +1312,12 @@ struct dirent * avReaddir(DIR * dir) dt = (unsigned char *) (av + (ac + 1)); i = avdir->offset + 1; -/*@-boundsread@*/ if (i < 0 || i >= ac || av[i] == NULL) return NULL; -/*@=boundsread@*/ avdir->offset = i; /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */ -/*@-type@*/ dp->d_ino = i + 1; /* W2DO? */ dp->d_reclen = 0; /* W2DO? */ @@ -1435,11 +1325,8 @@ struct dirent * avReaddir(DIR * dir) #if !defined(__APPLE__) dp->d_off = 0; /* W2DO? */ #endif -/*@-boundsread@*/ dp->d_type = dt[i]; -/*@=boundsread@*/ #endif -/*@=type@*/ strncpy(dp->d_name, av[i], sizeof(dp->d_name)); if (_av_debug) @@ -1448,7 +1335,6 @@ fprintf(stderr, "*** avReaddir(%p) %p \"%s\"\n", (void *)avdir, dp, dp->d_name); return dp; } -/*@-boundswrite@*/ DIR * avOpendir(const char * path) { AVDIR avdir; @@ -1466,49 +1352,37 @@ fprintf(stderr, "*** avOpendir(%s)\n", path); nb += sizeof(*avdir) + sizeof(*dp) + ((ac + 1) * sizeof(*av)) + (ac + 1); avdir = xcalloc(1, nb); -/*@-abstract@*/ dp = (struct dirent *) (avdir + 1); av = (const char **) (dp + 1); dt = (unsigned char *) (av + (ac + 1)); t = (char *) (dt + ac + 1); -/*@=abstract@*/ avdir->fd = avmagicdir; -/*@-usereleased@*/ avdir->data = (char *) dp; -/*@=usereleased@*/ avdir->allocation = nb; avdir->size = ac; avdir->offset = -1; avdir->filepos = 0; #if defined(HAVE_PTHREAD_H) -/*@-moduncon -noeffectuncon -nullpass @*/ (void) pthread_mutex_init(&avdir->lock, NULL); -/*@=moduncon =noeffectuncon =nullpass @*/ #endif ac = 0; - /*@-dependenttrans -unrecog@*/ dt[ac] = DT_DIR; av[ac++] = t; t = stpcpy(t, "."); t++; dt[ac] = DT_DIR; av[ac++] = t; t = stpcpy(t, ".."); t++; - /*@=dependenttrans =unrecog@*/ av[ac] = NULL; -/*@-kepttrans@*/ return (DIR *) avdir; -/*@=kepttrans@*/ } -/*@=boundswrite@*/ #ifdef WITH_NEON /* =============================================================== */ -/*@unchecked@*/ int davmagicdir = 0x8440291; -int davClosedir(/*@only@*/ DIR * dir) +int davClosedir(DIR * dir) { DAVDIR avdir = (DAVDIR)dir; @@ -1516,9 +1390,7 @@ if (_dav_debug < 0) fprintf(stderr, "*** davClosedir(%p)\n", avdir); #if defined(HAVE_PTHREAD_H) -/*@-moduncon -noeffectuncon @*/ (void) pthread_mutex_destroy(&avdir->lock); -/*@=moduncon =noeffectuncon @*/ #endif avdir = _free(avdir); @@ -1545,15 +1417,12 @@ struct dirent * davReaddir(DIR * dir) dt = (unsigned char *) (av + (ac + 1)); i = avdir->offset + 1; -/*@-boundsread@*/ if (i < 0 || i >= ac || av[i] == NULL) return NULL; -/*@=boundsread@*/ avdir->offset = i; /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */ -/*@-type@*/ dp->d_ino = i + 1; /* W2DO? */ dp->d_reclen = 0; /* W2DO? */ @@ -1561,11 +1430,8 @@ struct dirent * davReaddir(DIR * dir) #if !defined(__APPLE__) dp->d_off = 0; /* W2DO? */ #endif -/*@-boundsread@*/ dp->d_type = dt[i]; -/*@=boundsread@*/ #endif -/*@=type@*/ strncpy(dp->d_name, av[i], sizeof(dp->d_name)); if (_dav_debug < 0) @@ -1574,7 +1440,6 @@ fprintf(stderr, "*** davReaddir(%p) %p \"%s\"\n", (void *)avdir, dp, dp->d_name) return dp; } -/*@-boundswrite@*/ DIR * davOpendir(const char * path) { struct fetch_context_s * ctx; @@ -1589,14 +1454,12 @@ DIR * davOpendir(const char * path) /* HACK: glob does not pass dirs with trailing '/' */ nb = strlen(path)+1; -/*@-branchstate@*/ if (path[nb-1] != '/') { char * npath = alloca(nb+1); *npath = '\0'; (void) stpcpy( stpcpy(npath, path), "/"); path = npath; } -/*@=branchstate@*/ if (_dav_debug < 0) fprintf(stderr, "*** davOpendir(%s)\n", path); @@ -1624,33 +1487,25 @@ fprintf(stderr, "*** davOpendir(%s)\n", path); nb += sizeof(*avdir) + sizeof(*dp) + ((ac + 1) * sizeof(*av)) + (ac + 1); avdir = xcalloc(1, nb); - /*@-abstract@*/ dp = (struct dirent *) (avdir + 1); nav = (const char **) (dp + 1); dt = (unsigned char *) (nav + (ac + 1)); t = (char *) (dt + ac + 1); - /*@=abstract@*/ avdir->fd = davmagicdir; -/*@-usereleased@*/ avdir->data = (char *) dp; -/*@=usereleased@*/ avdir->allocation = nb; avdir->size = ac; avdir->offset = -1; avdir->filepos = 0; #if defined(HAVE_PTHREAD_H) -/*@-moduncon -noeffectuncon -nullpass @*/ (void) pthread_mutex_init(&avdir->lock, NULL); -/*@=moduncon =noeffectuncon =nullpass @*/ #endif nac = 0; -/*@-dependenttrans -unrecog@*/ dt[nac] = DT_DIR; nav[nac++] = t; t = stpcpy(t, "."); t++; dt[nac] = DT_DIR; nav[nac++] = t; t = stpcpy(t, ".."); t++; -/*@=dependenttrans =unrecog@*/ /* Copy DAV items into DIR elments. */ ac = 0; @@ -1667,10 +1522,7 @@ fprintf(stderr, "*** davOpendir(%s)\n", path); ctx = fetch_destroy_context(ctx); -/*@-kepttrans@*/ return (DIR *) avdir; -/*@=kepttrans@*/ } #endif /* WITH_NEON */ -/*@=modfilesys@*/ diff --git a/rpmio/rpmdav.h b/rpmio/rpmdav.h index 8a0722456..2db424820 100644 --- a/rpmio/rpmdav.h +++ b/rpmio/rpmdav.h @@ -37,13 +37,11 @@ typedef DIR * DAVDIR; /** */ -/*@unchecked@*/ extern int avmagicdir; #define ISAVMAGIC(_dir) (!memcmp((_dir), &avmagicdir, sizeof(avmagicdir))) /** */ -/*@unchecked@*/ extern int davmagicdir; #define ISDAVMAGIC(_dir) (!memcmp((_dir), &davmagicdir, sizeof(davmagicdir))) @@ -56,29 +54,21 @@ extern "C" { * @param dir argv DIR * @return 0 always */ -int avClosedir(/*@only@*/ DIR * dir) - /*@globals fileSystem @*/ - /*@modifies dir, fileSystem @*/; +int avClosedir(DIR * dir); /** * Return next entry from an argv directory. * @param dir argv DIR * @return next entry */ -/*@dependent@*/ /*@null@*/ -struct dirent * avReaddir(DIR * dir) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +struct dirent * avReaddir(DIR * dir); /** * Create an argv directory from URL collection. * @param path URL for collection path * @return argv DIR */ -/*@null@*/ -DIR * avOpendir(const char * path) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +DIR * avOpendir(const char * path); /** * Send a http request. @@ -87,9 +77,7 @@ DIR * avOpendir(const char * path) * @param httpArg http command argument (NULL if none) * @returns 0 on success */ -int davReq(FD_t ctrl, const char * httpCmd, /*@null@*/ const char * httpArg) - /*@globals fileSystem, internalState @*/ - /*@modifies ctrl, fileSystem, internalState @*/; +int davReq(FD_t ctrl, const char * httpCmd, const char * httpArg); /** * Read a http response. @@ -98,112 +86,75 @@ int davReq(FD_t ctrl, const char * httpCmd, /*@null@*/ const char * httpArg) * @retval *str error msg * @returns 0 on success */ -int davResp(urlinfo u, FD_t ctrl, /*@out@*/ /*@null@*/ char *const * str) - /*@globals fileSystem, internalState @*/ - /*@modifies ctrl, *str, fileSystem, internalState @*/; +int davResp(urlinfo u, FD_t ctrl, char *const * str); /** */ -/*@null@*/ -FD_t davOpen(const char * url, /*@unused@*/ int flags, - /*@unused@*/ mode_t mode, /*@out@*/ urlinfo * uret) - /*@globals internalState @*/ - /*@modifies *uret, internalState @*/; +FD_t davOpen(const char * url, int flags, + mode_t mode, urlinfo * uret); /** */ -/*@-incondefs@*/ -ssize_t davRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies buf, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (count - 1) @*/ - /*@ensures maxRead(buf) == result @*/; -/*@=incondefs@*/ +ssize_t davRead(void * cookie, char * buf, size_t count); /** */ -ssize_t davWrite(void * cookie, const char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +ssize_t davWrite(void * cookie, const char * buf, size_t count); /** */ -int davSeek(void * cookie, _libio_pos_t pos, int whence) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int davSeek(void * cookie, _libio_pos_t pos, int whence); /** */ -int davClose(void * cookie) - /*@globals fileSystem, internalState @*/ - /*@modifies cookie, fileSystem, internalState @*/; +int davClose(void * cookie); /** */ -int davMkdir(const char * path, mode_t mode) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int davMkdir(const char * path, mode_t mode); /** */ -int davRmdir(const char * path) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int davRmdir(const char * path); /** */ -int davRename(const char * oldpath, const char * newpath) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int davRename(const char * oldpath, const char * newpath); /** */ -int davUnlink(const char * path) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int davUnlink(const char * path); /** * Close a DAV collection. * @param dir argv DIR * @return 0 always */ -int davClosedir(/*@only@*/ DIR * dir) - /*@globals fileSystem @*/ - /*@modifies dir, fileSystem @*/; +int davClosedir(DIR * dir); /** * Return next entry from a DAV collection. * @param dir argv DIR * @return next entry */ -/*@dependent@*/ /*@null@*/ -struct dirent * davReaddir(DIR * dir) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +struct dirent * davReaddir(DIR * dir); /** * Create an argv directory from DAV collection. * @param path URL for DAV collection path * @return argv DIR */ -/*@null@*/ -DIR * davOpendir(const char * path) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +DIR * davOpendir(const char * path); /** * stat(2) clone. */ -int davStat(const char * path, /*@out@*/ struct stat * st) - /*@globals fileSystem, internalState @*/ - /*@modifies *st, fileSystem, internalState @*/; +int davStat(const char * path, struct stat * st); /** * lstat(2) clone. */ -int davLstat(const char * path, /*@out@*/ struct stat * st) - /*@globals fileSystem, internalState @*/ - /*@modifies *st, fileSystem, internalState @*/; +int davLstat(const char * path, struct stat * st); #ifdef __cplusplus } diff --git a/rpmio/rpmerr.h b/rpmio/rpmerr.h index 9f99fa305..211f1ad0d 100644 --- a/rpmio/rpmerr.h +++ b/rpmio/rpmerr.h @@ -22,20 +22,15 @@ /** * Tokens used by rpmError(). */ -/*@-typeuse @*/ typedef enum rpmerrCode_e { -/*@-enummemuse@*/ RPMERR_GDBMOPEN = _em(2), /*!< gdbm open failed */ RPMERR_GDBMREAD = _em(3), /*!< gdbm read failed */ RPMERR_GDBMWRITE = _em(4), /*!< gdbm write failed */ -/*@=enummemuse@*/ RPMERR_INTERNAL = _em(5), /*!< internal RPM error */ RPMERR_DBCORRUPT = _em(6), /*!< rpm database is corrupt */ -/*@-enummemuse@*/ RPMERR_OLDDBCORRUPT = _em(7), /*!< old style rpm database is corrupt */ RPMERR_OLDDBMISSING = _em(8), /*!< old style rpm database is missing */ RPMERR_NOCREATEDB = _em(9), /*!< cannot create new database */ -/*@=enummemuse@*/ RPMERR_DBOPEN = _em(10), /*!< database open failed */ RPMERR_DBGETINDEX = _em(11), /*!< database get from index failed */ RPMERR_DBPUTINDEX = _em(12), /*!< database get from index failed */ @@ -44,60 +39,44 @@ typedef enum rpmerrCode_e { RPMERR_RENAME = _em(15), /*!< rename(2) failed */ RPMERR_UNLINK = _em(16), /*!< unlink(2) failed */ RPMERR_RMDIR = _em(17), /*!< rmdir(2) failed */ -/*@-enummemuse@*/ RPMERR_PKGINSTALLED = _em(18), /*!< package already installed */ RPMERR_CHOWN = _em(19), /*!< chown() call failed */ RPMERR_NOUSER = _em(20), /*!< user does not exist */ RPMERR_NOGROUP = _em(21), /*!< group does not exist */ -/*@=enummemuse@*/ RPMERR_MKDIR = _em(22), /*!< mkdir() call failed */ -/*@-enummemuse@*/ RPMERR_FILECONFLICT = _em(23), /*!< file being installed exists */ -/*@=enummemuse@*/ RPMERR_RPMRC = _em(24), /*!< bad line in rpmrc */ RPMERR_NOSPEC = _em(25), /*!< .spec file is missing */ RPMERR_NOTSRPM = _em(26), /*!< a source rpm was expected */ -/*@-enummemuse@*/ RPMERR_FLOCK = _em(27), /*!< locking the database failed */ RPMERR_OLDPACKAGE = _em(28), /*!< trying upgrading to old version */ /* RPMERR_BADARCH = _em(29), bad architecture or arch mismatch */ -/*@=enummemuse@*/ RPMERR_CREATE = _em(30), /*!< failed to create a file */ RPMERR_NOSPACE = _em(31), /*!< out of disk space */ -/*@-enummemuse@*/ RPMERR_NORELOCATE = _em(32), /*!< tried to do improper relocatation */ /* RPMERR_BADOS = _em(33), bad architecture or arch mismatch */ RPMMESS_BACKUP = _em(34), /*!< backup made during [un]install */ -/*@=enummemuse@*/ RPMERR_MTAB = _em(35), /*!< failed to read mount table */ RPMERR_STAT = _em(36), /*!< failed to stat something */ RPMERR_BADDEV = _em(37), /*!< file on device not listed in mtab */ -/*@-enummemuse@*/ RPMMESS_ALTNAME = _em(38), /*!< file written as .rpmnew */ RPMMESS_PREREQLOOP = _em(39), /*!< loop in prerequisites */ RPMERR_BADRELOCATE = _em(40), /*!< bad relocation was specified */ RPMERR_OLDDB = _em(41), /*!< old format database */ -/*@=enummemuse@*/ RPMERR_UNMATCHEDIF = _em(107), /*!< unclosed %ifarch or %ifos */ RPMERR_RELOAD = _em(108), /*!< */ RPMERR_BADARG = _em(109), /*!< */ RPMERR_SCRIPT = _em(110), /*!< errors related to script exec */ RPMERR_READ = _em(111), /*!< */ -/*@-enummemuse@*/ RPMERR_UNKNOWNOS = _em(112), /*!< */ RPMERR_UNKNOWNARCH = _em(113), /*!< */ -/*@=enummemuse@*/ RPMERR_EXEC = _em(114), /*!< */ RPMERR_FORK = _em(115), /*!< */ RPMERR_CPIO = _em(116), /*!< */ -/*@-enummemuse@*/ RPMERR_GZIP = _em(117), /*!< */ -/*@=enummemuse@*/ RPMERR_BADSPEC = _em(118), /*!< */ -/*@-enummemuse@*/ RPMERR_LDD = _em(119), /*!< couldn't understand ldd output */ -/*@=enummemuse@*/ RPMERR_BADFILENAME = _em(120), /*!< */ RPMERR_OPEN = _em(121), /*!< */ RPMERR_POPEN = _em(122), /*!< */ @@ -105,11 +84,9 @@ typedef enum rpmerrCode_e { RPMERR_QUERY = _em(124), /*!< */ RPMERR_QFMT = _em(125), /*!< */ RPMERR_DBCONFIG = _em(126), /*!< */ -/*@-enummemuse@*/ RPMERR_DBERR = _em(127), /*!< */ RPMERR_BADPACKAGE = _em(128), /*!< getNextHeader: %s */ RPMERR_FREELIST = _em(129), /*!< free list corrupt (%u)- please ... */ -/*@=enummemuse@*/ RPMERR_DATATYPE = _em(130), /*!< Data type %d not supported */ RPMERR_BUILDROOT = _em(131), /*!< */ RPMERR_MAKETEMP = _em(132), /*!< makeTempFile failed */ @@ -131,11 +108,8 @@ typedef enum rpmerrCode_e { RPMDEBUG_UNLINK = _dm(512u+16), /*!< unlink(2) failed */ RPMDEBUG_RMDIR = _dm(512u+17), /*!< rmdir(2) failed */ -/*@-enummemuse@*/ RPMWARN_FLOCK = _wm(512u+27) /*!< locking the database failed */ -/*@=enummemuse@*/ } rpmerrCode; -/*@=typeuse @*/ /** * Retrofit rpmError() onto rpmlog sub-system. @@ -144,9 +118,7 @@ typedef enum rpmerrCode_e { #define rpmErrorCode() rpmlogCode() #define rpmErrorString() rpmlogMessage() #define rpmErrorSetCallback(_cb) rpmlogSetCallback(_cb) -/*@-typeuse@*/ typedef rpmlogCallback rpmErrorCallBackType; -/*@=typeuse@*/ #endif /* H_RPMERR */ diff --git a/rpmio/rpmhook.c b/rpmio/rpmhook.c index 87e251e31..a59794407 100644 --- a/rpmio/rpmhook.c +++ b/rpmio/rpmhook.c @@ -1,4 +1,3 @@ -/*@-bounds@*/ #include "system.h" #include <stdlib.h> @@ -19,7 +18,6 @@ typedef struct rpmhookItem_s { typedef struct rpmhookBucket_s { unsigned long hash; -/*@relnull@*/ char *name; rpmhookItem item; } * rpmhookBucket; @@ -46,9 +44,7 @@ rpmhookArgs rpmhookArgsFree(rpmhookArgs args) return NULL; } -/*@only@*/ static rpmhookTable rpmhookTableNew(int size) - /*@*/ { rpmhookTable table = (rpmhookTable) xcalloc(1, sizeof(*table) + sizeof(table->bucket) * (size-1)); @@ -58,7 +54,6 @@ static rpmhookTable rpmhookTableNew(int size) #if 0 static rpmhookTable rpmhookTableFree(rpmhookTable table) - /*@*/ { rpmhookItem item, nextItem; int i; @@ -78,11 +73,9 @@ static rpmhookTable rpmhookTableFree(rpmhookTable table) } #endif -static void rpmhookTableRehash(rpmhookTable *table) - /*@modifies *table @*/; +static void rpmhookTableRehash(rpmhookTable *table); static int rpmhookTableFindBucket(rpmhookTable *table, const char *name) - /*@modifies *table @*/ { /* Hash based on http://www.isthe.com/chongo/tech/comp/fnv/ */ unsigned long perturb; @@ -104,9 +97,7 @@ static int rpmhookTableFindBucket(rpmhookTable *table, const char *name) while (bucket->name && (bucket->hash != hash || strcmp(bucket->name, name) != 0)) { /* Collision resolution based on Python's perturb scheme. */ -/*@-shiftimplementation@*/ ret = ((ret << 2) + ret + perturb + 1) % (*table)->size; -/*@=shiftimplementation@*/ perturb >>= 5; bucket = &(*table)->bucket[ret]; } @@ -116,12 +107,10 @@ static int rpmhookTableFindBucket(rpmhookTable *table, const char *name) } static void rpmhookTableRehash(rpmhookTable *table) - /*@modifies *table @*/ { rpmhookTable newtable = rpmhookTableNew((*table)->size*2); int n, i = 0; -/*@-branchstate@*/ for (; i != (*table)->size; i++) { if ((*table)->bucket[i].name == NULL) continue; @@ -129,17 +118,13 @@ static void rpmhookTableRehash(rpmhookTable *table) newtable->bucket[n].name = (*table)->bucket[i].name; newtable->bucket[n].item = (*table)->bucket[i].item; } -/*@=branchstate@*/ newtable->used = (*table)->used; -/*@-unqualifiedtrans@*/ free(*table); -/*@=unqualifiedtrans@*/ *table = newtable; } static void rpmhookTableAddItem(rpmhookTable *table, const char *name, rpmhookFunc func, void *data) - /*@modifies *table @*/ { int n = rpmhookTableFindBucket(table, name); rpmhookBucket bucket = &(*table)->bucket[n]; @@ -151,15 +136,12 @@ static void rpmhookTableAddItem(rpmhookTable *table, const char *name, while (*item) item = &(*item)->next; *item = xcalloc(1, sizeof(**item)); (*item)->func = func; -/*@-temptrans@*/ (*item)->data = data; -/*@=temptrans@*/ } static void rpmhookTableDelItem(rpmhookTable *table, const char *name, - /*@null@*/ rpmhookFunc func, /*@null@*/ void *data, + rpmhookFunc func, void *data, int matchfunc, int matchdata) - /*@modifies *table @*/ { int n = rpmhookTableFindBucket(table, name); rpmhookBucket bucket = &(*table)->bucket[n]; @@ -168,7 +150,6 @@ static void rpmhookTableDelItem(rpmhookTable *table, const char *name, rpmhookItem nextItem; while (item) { nextItem = item->next; -/*@-branchstate@*/ if ((!matchfunc || item->func == func) && (!matchdata || item->data == data)) { free(item); @@ -179,8 +160,6 @@ static void rpmhookTableDelItem(rpmhookTable *table, const char *name, } else { lastItem = item; } -/*@=branchstate@*/ -/*@-usereleased@*/ item = nextItem; } if (!bucket->item) { @@ -188,38 +167,32 @@ static void rpmhookTableDelItem(rpmhookTable *table, const char *name, bucket->name = NULL; (*table)->used--; } -/*@=usereleased@*/ } static rpmhookArgs rpmhookArgsParse(const char *argt, va_list ap) - /*@*/ { rpmhookArgs args = rpmhookArgsNew(strlen(argt)); int i; -/*@-temptrans@*/ args->argt = argt; -/*@=temptrans@*/ for (i = 0; i != args->argc; i++) { switch (argt[i]) { case 's': args->argv[i].s = va_arg(ap, char *); - /*@switchbreak@*/ break; + break; case 'i': args->argv[i].i = va_arg(ap, int); - /*@switchbreak@*/ break; + break; case 'f': args->argv[i].f = (float)va_arg(ap, double); - /*@switchbreak@*/ break; + break; case 'p': args->argv[i].p = va_arg(ap, void *); - /*@switchbreak@*/ break; + break; default: -/*@-modfilesys @*/ fprintf(stderr, "error: unsupported type '%c' as " "a hook argument\n", argt[i]); -/*@=modfilesys @*/ - /*@switchbreak@*/ break; + break; } } return args; @@ -227,7 +200,6 @@ static rpmhookArgs rpmhookArgsParse(const char *argt, va_list ap) static void rpmhookTableCallArgs(rpmhookTable *table, const char *name, rpmhookArgs args) - /*@modifies *table @*/ { int n = rpmhookTableFindBucket(table, name); rpmhookItem item = (*table)->bucket[n].item; @@ -238,12 +210,9 @@ static void rpmhookTableCallArgs(rpmhookTable *table, const char *name, } } -/*@unchecked@*/ /*@only@*/ /*@null@*/ static rpmhookTable globalTable = NULL; void rpmhookRegister(const char *name, rpmhookFunc func, void *data) - /*@globals globalTable @*/ - /*@modifies globalTable @*/ { if (globalTable == NULL) globalTable = rpmhookTableNew(RPMHOOK_TABLE_INITSIZE); @@ -275,9 +244,7 @@ void rpmhookCall(const char *name, const char *argt, ...) va_list ap; va_start(ap, argt); args = rpmhookArgsParse(argt, ap); -/*@-noeffect@*/ rpmhookTableCallArgs(&globalTable, name, args); -/*@=noeffect@*/ (void) rpmhookArgsFree(args); va_end(ap); } @@ -285,9 +252,6 @@ void rpmhookCall(const char *name, const char *argt, ...) void rpmhookCallArgs(const char *name, rpmhookArgs args) { -/*@-noeffect@*/ if (globalTable != NULL) rpmhookTableCallArgs(&globalTable, name, args); -/*@=noeffect@*/ } -/*@=bounds@*/ diff --git a/rpmio/rpmhook.h b/rpmio/rpmhook.h index 925067603..c049c484f 100644 --- a/rpmio/rpmhook.h +++ b/rpmio/rpmhook.h @@ -2,11 +2,9 @@ #define RPMHOOK_H typedef union { -/*@observer@*/ const char * s; int i; float f; -/*@observer@*/ void * p; } rpmhookArgv; @@ -18,26 +16,14 @@ typedef struct rpmhookArgs_s { typedef int (*rpmhookFunc) (rpmhookArgs args, void *data); -/*@only@*/ -rpmhookArgs rpmhookArgsNew(int argc) - /*@*/; -/*@null@*/ -rpmhookArgs rpmhookArgsFree(/*@only@*/ /*@null@*/ rpmhookArgs args) - /*@modifies args @*/; +rpmhookArgs rpmhookArgsNew(int argc); +rpmhookArgs rpmhookArgsFree(rpmhookArgs args); -void rpmhookRegister(const char *name, rpmhookFunc func, void *data) - /*@globals internalState @*/ - /*@modifies internalState @*/; -void rpmhookUnregister(const char *name, rpmhookFunc func, void *data) - /*@*/; -void rpmhookUnregisterAny(const char *name, rpmhookFunc func) - /*@*/; -void rpmhookUnregisterAll(const char *name) - /*@*/; -void rpmhookCall(const char *name, const char *argt, ...) - /*@*/; -void rpmhookCallArgs(const char *name, rpmhookArgs args) - /*@globals internalState @*/ - /*@modifies internalState @*/; +void rpmhookRegister(const char *name, rpmhookFunc func, void *data); +void rpmhookUnregister(const char *name, rpmhookFunc func, void *data); +void rpmhookUnregisterAny(const char *name, rpmhookFunc func); +void rpmhookUnregisterAll(const char *name); +void rpmhookCall(const char *name, const char *argt, ...); +void rpmhookCallArgs(const char *name, rpmhookArgs args); #endif diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c index 92306b915..7e57487c3 100644 --- a/rpmio/rpmio.c +++ b/rpmio/rpmio.c @@ -27,7 +27,6 @@ /* XXX HP-UX w/o -D_XOPEN_SOURCE needs */ #if !defined(HAVE_HERRNO) && (defined(__hpux)) -/*@unchecked@*/ extern int h_errno; #endif @@ -40,7 +39,6 @@ extern int h_errno; #if !defined(HAVE_INET_ATON) static int inet_aton(const char *cp, struct in_addr *inp) - /*@modifies *inp @*/ { long addr; @@ -74,8 +72,6 @@ static int inet_aton(const char *cp, struct in_addr *inp) #include "debug.h" /*@access FILE @*/ /* XXX to permit comparison/conversion with void *. */ -/*@access urlinfo @*/ -/*@access FDSTAT_t @*/ #define FDNREFS(fd) (fd ? ((FD_t)fd)->nrefs : -9) #define FDTO(fd) (fd ? ((FD_t)fd)->rd_timeoutsecs : -99) @@ -91,7 +87,6 @@ static int inet_aton(const char *cp, struct in_addr *inp) /** */ -/*@unchecked@*/ #if _USE_LIBIO int noLibio = 0; #else @@ -102,32 +97,26 @@ int noLibio = 1; /** */ -/*@unchecked@*/ static int ftpTimeoutSecs = TIMEOUT_SECS; /** */ -/*@unchecked@*/ static int httpTimeoutSecs = TIMEOUT_SECS; /** */ -/*@unchecked@*/ int _rpmio_debug = 0; /** */ -/*@unchecked@*/ int _av_debug = 0; /** */ -/*@unchecked@*/ int _ftp_debug = 0; /** */ -/*@unchecked@*/ int _dav_debug = 0; /** @@ -135,9 +124,8 @@ int _dav_debug = 0; * @param p memory to free * @retval NULL always */ -/*@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; @@ -145,9 +133,7 @@ _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p) /* =============================================================== */ -/*@-boundswrite@*/ -static /*@observer@*/ const char * fdbg(/*@null@*/ FD_t fd) - /*@*/ +static const char * fdbg(FD_t fd) { static char buf[BUFSIZ]; char *be = buf; @@ -190,11 +176,9 @@ static /*@observer@*/ const char * fdbg(/*@null@*/ FD_t fd) sprintf(be, "BZD %p fdno %d", fps->fp, fps->fdno); #endif } else if (fps->io == fpio) { - /*@+voidabstract@*/ sprintf(be, "%s %p(%d) fdno %d", (fps->fdno < 0 ? "LIBIO" : "FP"), fps->fp, fileno(((FILE *)fps->fp)), fps->fdno); - /*@=voidabstract@*/ } else { sprintf(be, "??? io %p fp %p fdno %d ???", fps->io, fps->fp, fps->fdno); @@ -204,7 +188,6 @@ static /*@observer@*/ const char * fdbg(/*@null@*/ FD_t fd) } return buf; } -/*@=boundswrite@*/ /* =============================================================== */ off_t fdSize(FD_t fd) @@ -223,7 +206,6 @@ DBGIO(0, (stderr, "==>\tfdSize(%p) rc %ld\n", fd, (long)rc)); case URL_IS_UNKNOWN: if (fstat(Fileno(fd), &sb) == 0) rc = sb.st_size; - /*@fallthrough@*/ case URL_IS_HTTPS: case URL_IS_HTTP: case URL_IS_HKP: @@ -244,12 +226,11 @@ FD_t fdDup(int fdno) fd = fdNew("open (fdDup)"); fdSetFdno(fd, nfdno); DBGIO(fd, (stderr, "==> fdDup(%d) fd %p %s\n", fdno, (fd ? fd : NULL), fdbg(fd))); - /*@-refcounttrans@*/ return fd; /*@=refcounttrans@*/ + return fd; } -static inline /*@unused@*/ int fdSeekNot(void * cookie, - /*@unused@*/ _libio_pos_t pos, /*@unused@*/ int whence) - /*@*/ +static inline int fdSeekNot(void * cookie, + _libio_pos_t pos, int whence) { FD_t fd = c2f(cookie); FDSANE(fd); /* XXX keep gcc quiet */ @@ -274,16 +255,13 @@ DBGIO(fd, (stderr, "==> fdFdopen(%p,\"%s\") fdno %d -> fp %p fdno %d\n", cookie, #endif /* =============================================================== */ -/*@-mustmod@*/ /* FIX: cookie is modified */ -static inline /*@null@*/ FD_t XfdLink(void * cookie, const char * msg, +/* FIX: cookie is modified */ +static inline FD_t XfdLink(void * cookie, const char * msg, const char * file, unsigned line) - /*@modifies *cookie @*/ { FD_t fd; if (cookie == NULL) - /*@-castexpose@*/ DBGREFS(0, (stderr, "--> fd %p ++ %d %s at %s:%u\n", cookie, FDNREFS(cookie)+1, msg, file, line)); - /*@=castexpose@*/ fd = c2f(cookie); if (fd) { fd->nrefs++; @@ -291,12 +269,10 @@ DBGREFS(fd, (stderr, "--> fd %p ++ %d %s at %s:%u %s\n", fd, fd->nrefs, msg, fi } return fd; } -/*@=mustmod@*/ -static inline /*@null@*/ -FD_t XfdFree( /*@killref@*/ FD_t fd, const char *msg, +static inline +FD_t XfdFree( FD_t fd, const char *msg, const char *file, unsigned line) - /*@modifies fd @*/ { int i; @@ -306,7 +282,7 @@ DBGREFS(0, (stderr, "--> fd %p -- %d %s at %s:%u\n", fd, FDNREFS(fd), msg, file if (fd) { DBGREFS(fd, (stderr, "--> fd %p -- %d %s at %s:%u %s\n", fd, fd->nrefs, msg, file, line, fdbg(fd))); if (--fd->nrefs > 0) - /*@-refcounttrans -retalias@*/ return fd; /*@=refcounttrans =retalias@*/ + return fd; fd->stats = _free(fd->stats); for (i = fd->ndigests - 1; i >= 0; i--) { FDDIGEST_t fddig = fd->digests + i; @@ -316,15 +292,13 @@ DBGREFS(fd, (stderr, "--> fd %p -- %d %s at %s:%u %s\n", fd, fd->nrefs, msg, fi fddig->hashctx = NULL; } fd->ndigests = 0; - /*@-refcounttrans@*/ free(fd); /*@=refcounttrans@*/ + free(fd); } return NULL; } -static inline /*@null@*/ +static inline FD_t XfdNew(const char * msg, const char * file, unsigned line) - /*@globals internalState @*/ - /*@modifies internalState @*/ { FD_t fd = xcalloc(1, sizeof(*fd)); if (fd == NULL) /* XXX xmalloc never returns NULL */ @@ -360,11 +334,7 @@ FD_t XfdNew(const char * msg, const char * file, unsigned line) return XfdLink(fd, msg, file, line); } -static ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies buf, errno, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (count - 1) @*/ - /*@ensures maxRead(buf) == result @*/ +static ssize_t fdRead(void * cookie, char * buf, size_t count) { FD_t fd = c2f(cookie); ssize_t rc; @@ -372,7 +342,6 @@ static ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count) if (fd->bytesRemain == 0) return 0; /* XXX simulate EOF */ fdstat_enter(fd, FDSTAT_READ); -/*@-boundswrite@*/ /* HACK: flimsy wiring for davRead */ if (fd->req != NULL) { #ifdef WITH_NEON @@ -385,7 +354,6 @@ static ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count) fd->bytesRemain = 0; } else rc = read(fdFileno(fd), buf, (count > fd->bytesRemain ? fd->bytesRemain : count)); -/*@=boundswrite@*/ fdstat_exit(fd, FDSTAT_READ, rc); if (fd->ndigests && rc > 0) fdUpdateDigests(fd, (void *)buf, rc); @@ -396,8 +364,6 @@ DBGIO(fd, (stderr, "==>\tfdRead(%p,%p,%ld) rc %ld %s\n", cookie, buf, (long)coun } static ssize_t fdWrite(void * cookie, const char * buf, size_t count) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/ { FD_t fd = c2f(cookie); int fdno = fdFileno(fd); @@ -410,7 +376,6 @@ static ssize_t fdWrite(void * cookie, const char * buf, size_t count) if (count == 0) return 0; fdstat_enter(fd, FDSTAT_WRITE); -/*@-boundsread@*/ /* HACK: flimsy wiring for davWrite */ if (fd->req != NULL) { #ifdef WITH_NEON @@ -420,7 +385,6 @@ static ssize_t fdWrite(void * cookie, const char * buf, size_t count) #endif } else rc = write(fdno, buf, (count > fd->bytesRemain ? fd->bytesRemain : count)); -/*@=boundsread@*/ fdstat_exit(fd, FDSTAT_WRITE, rc); DBGIO(fd, (stderr, "==>\tfdWrite(%p,%p,%ld) rc %ld %s\n", cookie, buf, (long)count, (long)rc, fdbg(fd))); @@ -429,8 +393,6 @@ DBGIO(fd, (stderr, "==>\tfdWrite(%p,%p,%ld) rc %ld %s\n", cookie, buf, (long)cou } static inline int fdSeek(void * cookie, _libio_pos_t pos, int whence) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { #ifdef USE_COOKIE_SEEK_POINTER _IO_off64_t p = *pos; @@ -450,9 +412,7 @@ DBGIO(fd, (stderr, "==>\tfdSeek(%p,%ld,%d) rc %lx %s\n", cookie, (long)p, whence return rc; } -static int fdClose( /*@only@*/ void * cookie) - /*@globals errno, fileSystem, systemState, internalState @*/ - /*@modifies errno, fileSystem, systemState, internalState @*/ +static int fdClose( void * cookie) { FD_t fd; int fdno; @@ -466,7 +426,6 @@ static int fdClose( /*@only@*/ void * cookie) fdstat_enter(fd, FDSTAT_CLOSE); /* HACK: flimsy wiring for davClose */ -/*@-branchstate@*/ if (fd->req != NULL) { #ifdef WITH_NEON rc = davClose(fd); @@ -475,7 +434,6 @@ static int fdClose( /*@only@*/ void * cookie) #endif } else rc = ((fdno >= 0) ? close(fdno) : -2); -/*@=branchstate@*/ fdstat_exit(fd, FDSTAT_CLOSE, rc); DBGIO(fd, (stderr, "==>\tfdClose(%p) rc %lx %s\n", (fd ? fd : NULL), (unsigned long)rc, fdbg(fd))); @@ -484,9 +442,7 @@ DBGIO(fd, (stderr, "==>\tfdClose(%p) rc %lx %s\n", (fd ? fd : NULL), (unsigned l return rc; } -static /*@null@*/ FD_t fdOpen(const char *path, int flags, mode_t mode) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/ +static FD_t fdOpen(const char *path, int flags, mode_t mode) { FD_t fd; int fdno; @@ -501,16 +457,15 @@ static /*@null@*/ FD_t fdOpen(const char *path, int flags, mode_t mode) fdSetFdno(fd, fdno); fd->flags = flags; DBGIO(fd, (stderr, "==>\tfdOpen(\"%s\",%x,0%o) %s\n", path, (unsigned)flags, (unsigned)mode, fdbg(fd))); - /*@-refcounttrans@*/ return fd; /*@=refcounttrans@*/ + return fd; } -/*@-type@*/ /* LCL: function typedefs */ +/* LCL: function typedefs */ static struct FDIO_s fdio_s = { fdRead, fdWrite, fdSeek, fdClose, XfdLink, XfdFree, XfdNew, fdFileno, fdOpen, NULL, fdGetFp, NULL, mkdir, chdir, rmdir, rename, unlink }; -/*@=type@*/ -FDIO_t fdio = /*@-compmempass@*/ &fdio_s /*@=compmempass@*/ ; +FDIO_t fdio = &fdio_s ; int fdWritable(FD_t fd, int secs) { @@ -544,9 +499,7 @@ int fdWritable(FD_t fd, int secs) tvp->tv_usec = 0; } FD_SET(fdno, &wrfds); -/*@-compdef -nullpass@*/ rc = select(fdno + 1, NULL, &wrfds, NULL, tvp); -/*@=compdef =nullpass@*/ #endif /* HACK: EBADF on PUT chunked termination from ufdClose. */ @@ -556,15 +509,14 @@ fprintf(stderr, "*** fdWritable fdno %d rc %d %s\n", fdno, rc, strerror(errno)); switch (errno) { case EINTR: continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: return rc; - /*@notreached@*/ /*@switchbreak@*/ break; + break; } } return rc; } while (1); - /*@notreached@*/ } int fdReadable(FD_t fd, int secs) @@ -599,27 +551,23 @@ int fdReadable(FD_t fd, int secs) tvp->tv_usec = 0; } FD_SET(fdno, &rdfds); - /*@-compdef -nullpass@*/ rc = select(fdno + 1, &rdfds, NULL, NULL, tvp); - /*@=compdef =nullpass@*/ #endif if (rc < 0) { switch (errno) { case EINTR: continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: return rc; - /*@notreached@*/ /*@switchbreak@*/ break; + break; } } return rc; } while (1); - /*@notreached@*/ } -/*@-boundswrite@*/ int fdFgets(FD_t fd, char * buf, size_t len) { int fdno; @@ -641,13 +589,13 @@ int fdFgets(FD_t fd, char * buf, size_t len) case -1: /* error */ ec = -1; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; case 0: /* timeout */ ec = -1; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: /* data to read */ - /*@switchbreak@*/ break; + break; } errno = 0; @@ -661,9 +609,9 @@ int fdFgets(FD_t fd, char * buf, size_t len) switch (errno) { case EWOULDBLOCK: continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } if (_rpmio_debug) fprintf(stderr, "*** read: fd %p rc %d errno %d %s \"%s\"\n", fd, rc, errno, strerror(errno), buf); @@ -682,7 +630,6 @@ fprintf(stderr, "*** read: fd %p rc %d EOF errno %d %s \"%s\"\n", fd, rc, errno, return (ec >= 0 ? nb : ec); } -/*@=boundswrite@*/ /* =============================================================== */ /* Support for FTP/HTTP I/O. @@ -745,7 +692,6 @@ const char * ftpStrerror(int errorNumber) const char *urlStrerror(const char *url) { const char *retstr; - /*@-branchstate@*/ switch (urlIsURL(url)) { case URL_IS_HTTPS: case URL_IS_HTTP: @@ -762,50 +708,36 @@ const char *urlStrerror(const char *url) retstr = strerror(errno); break; } - /*@=branchstate@*/ return retstr; } #if !defined(HAVE_GETADDRINFO) #if !defined(USE_ALT_DNS) || !USE_ALT_DNS static int mygethostbyname(const char * host, - /*@out@*/ struct in_addr * address) - /*@globals h_errno @*/ - /*@modifies *address @*/ + struct in_addr * address) { struct hostent * hostinfo; - /*@-multithreaded @*/ hostinfo = gethostbyname(host); - /*@=multithreaded @*/ if (!hostinfo) return 1; -/*@-boundswrite@*/ memcpy(address, hostinfo->h_addr_list[0], sizeof(*address)); -/*@=boundswrite@*/ return 0; } #endif -/*@-boundsread@*/ /*@-compdef@*/ /* FIX: address->s_addr undefined. */ -static int getHostAddress(const char * host, /*@out@*/ struct in_addr * address) - /*@globals errno, h_errno @*/ - /*@modifies *address, errno @*/ +static int getHostAddress(const char * host, struct in_addr * address) { #if 0 /* XXX workaround nss_foo module hand-off using valgrind. */ if (!strcmp(host, "localhost")) { - /*@-moduncon @*/ if (!inet_aton("127.0.0.1", address)) return FTPERR_BAD_HOST_ADDR; - /*@=moduncon @*/ } else #endif if (xisdigit(host[0])) { - /*@-moduncon @*/ if (!inet_aton(host, address)) return FTPERR_BAD_HOST_ADDR; - /*@=moduncon @*/ } else { if (mygethostbyname(host, address)) { errno = h_errno; @@ -815,13 +747,9 @@ static int getHostAddress(const char * host, /*@out@*/ struct in_addr * address) return 0; } -/*@=compdef@*/ -/*@=boundsread@*/ #endif static int tcpConnect(FD_t ctrl, const char * host, int port) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies ctrl, fileSystem, internalState @*/ { int fdno = -1; int rc; @@ -850,7 +778,7 @@ static int tcpConnect(FD_t ctrl, const char * host, int port) getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, NI_NUMERICHOST); fprintf(stderr,"++ connect [%s]:%d on fdno %d\n", - /*@-unrecog@*/ hbuf /*@=unrecog@*/, port, fdno); + hbuf, port, fdno); } break; } @@ -862,9 +790,7 @@ static int tcpConnect(FD_t ctrl, const char * host, int port) #else /* HAVE_GETADDRINFO */ struct sockaddr_in sin; -/*@-boundswrite@*/ memset(&sin, 0, sizeof(sin)); -/*@=boundswrite@*/ sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = INADDR_ANY; @@ -878,12 +804,10 @@ static int tcpConnect(FD_t ctrl, const char * host, int port) break; } - /*@-internalglobs@*/ if (connect(fdno, (struct sockaddr *) &sin, sizeof(sin))) { rc = FTPERR_FAILED_CONNECT; break; } - /*@=internalglobs@*/ } while (0); if (rc < 0) @@ -891,9 +815,8 @@ static int tcpConnect(FD_t ctrl, const char * host, int port) if (_ftp_debug) fprintf(stderr,"++ connect %s:%d on fdno %d\n", -/*@-unrecog -moduncon -evalorderuncon @*/ inet_ntoa(sin.sin_addr) -/*@=unrecog =moduncon =evalorderuncon @*/ , +, (int)ntohs(sin.sin_port), fdno); #endif /* HAVE_GETADDRINFO */ @@ -901,19 +824,14 @@ inet_ntoa(sin.sin_addr) return 0; errxit: - /*@-observertrans@*/ fdSetSyserrno(ctrl, errno, ftpStrerror(rc)); - /*@=observertrans@*/ if (fdno >= 0) (void) close(fdno); return rc; } -/*@-boundswrite@*/ static int checkResponse(void * uu, FD_t ctrl, - /*@out@*/ int *ecp, /*@out@*/ char ** str) - /*@globals fileSystem @*/ - /*@modifies ctrl, *ecp, *str, fileSystem @*/ + int *ecp, char ** str) { urlinfo u = uu; char *buf; @@ -962,7 +880,7 @@ static int checkResponse(void * uu, FD_t ctrl, if (se > s && se[-1] == '\r') se[-1] = '\0'; if (*se == '\0') - /*@innerbreak@*/ break; + break; if (_ftp_debug) fprintf(stderr, "<- %s\n", s); @@ -970,7 +888,7 @@ fprintf(stderr, "<- %s\n", s); /* HTTP: header termination on empty line */ if (*s == '\0') { moretodo = 0; - /*@innerbreak@*/ break; + break; } *se++ = '\0'; @@ -991,7 +909,7 @@ fprintf(stderr, "<- %s\n", s); strncpy(errorCode, e, 3); errorCode[3] = '\0'; } - /*@innercontinue@*/ continue; + continue; } /* HTTP: look for "token: ..." */ @@ -1037,7 +955,7 @@ fprintf(stderr, "<- %s\n", s); if (!strncmp(s, "Allow:", ne)) { } #endif - /*@innercontinue@*/ continue; + continue; } /* HTTP: look for "<TITLE>501 ... </TITLE>" */ @@ -1072,11 +990,8 @@ fprintf(stderr, "<- %s\n", s); return ec; } -/*@=boundswrite@*/ -static int ftpCheckResponse(urlinfo u, /*@out@*/ char ** str) - /*@globals fileSystem @*/ - /*@modifies u, *str, fileSystem @*/ +static int ftpCheckResponse(urlinfo u, char ** str) { int ec = 0; int rc; @@ -1087,10 +1002,10 @@ static int ftpCheckResponse(urlinfo u, /*@out@*/ char ** str) switch (ec) { case 550: return FTPERR_FILE_NOT_FOUND; - /*@notreached@*/ break; + break; case 552: return FTPERR_NIC_ABORT_IN_PROGRESS; - /*@notreached@*/ break; + break; default: if (ec >= 400 && ec <= 599) { return FTPERR_BAD_SERVER_RESPONSE; @@ -1101,8 +1016,6 @@ static int ftpCheckResponse(urlinfo u, /*@out@*/ char ** str) } static int ftpCommand(urlinfo u, char ** str, ...) - /*@globals fileSystem, internalState @*/ - /*@modifies u, *str, fileSystem, internalState @*/ { va_list ap; int len = 0; @@ -1119,7 +1032,6 @@ static int ftpCommand(urlinfo u, char ** str, ...) len += sizeof("\r\n")-1; va_end(ap); -/*@-boundswrite@*/ t = te = alloca(len + 1); va_start(ap, str); @@ -1129,7 +1041,6 @@ static int ftpCommand(urlinfo u, char ** str, ...) } te = stpcpy(te, "\r\n"); va_end(ap); -/*@=boundswrite@*/ if (_ftp_debug) fprintf(stderr, "-> %s", t); @@ -1141,8 +1052,6 @@ fprintf(stderr, "-> %s", t); } static int ftpLogin(urlinfo u) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies u, fileSystem, internalState @*/ { const char * host; const char * user; @@ -1160,34 +1069,25 @@ static int ftpLogin(urlinfo u) if ((port = (u->proxyp > 0 ? u->proxyp : u->port)) < 0) port = IPPORT_FTP; - /*@-branchstate@*/ if ((user = (u->proxyu ? u->proxyu : u->user)) == NULL) user = "anonymous"; - /*@=branchstate@*/ - /*@-branchstate@*/ if ((password = u->password) == NULL) { uid_t uid = getuid(); struct passwd * pw; if (uid && (pw = getpwuid(uid)) != NULL) { -/*@-boundswrite@*/ char *myp = alloca(strlen(pw->pw_name) + sizeof("@")); strcpy(myp, pw->pw_name); strcat(myp, "@"); -/*@=boundswrite@*/ password = myp; } else { password = "root@"; } } - /*@=branchstate@*/ - /*@-branchstate@*/ if (fdFileno(u->ctrl) >= 0 && fdWritable(u->ctrl, 0) < 1) - /*@-refcounttrans@*/ (void) fdClose(u->ctrl); /*@=refcounttrans@*/ - /*@=branchstate@*/ + (void) fdClose(u->ctrl); -/*@-usereleased@*/ if (fdFileno(u->ctrl) < 0) { rc = tcpConnect(u->ctrl, host, port); if (rc < 0) @@ -1206,23 +1106,14 @@ static int ftpLogin(urlinfo u) if ((rc = ftpCommand(u, NULL, "TYPE", "I", NULL))) goto errxit; - /*@-compdef@*/ return 0; - /*@=compdef@*/ errxit: - /*@-observertrans@*/ fdSetSyserrno(u->ctrl, errno, ftpStrerror(rc)); - /*@=observertrans@*/ errxit2: - /*@-branchstate@*/ if (fdFileno(u->ctrl) >= 0) - /*@-refcounttrans@*/ (void) fdClose(u->ctrl); /*@=refcounttrans@*/ - /*@=branchstate@*/ - /*@-compdef@*/ + (void) fdClose(u->ctrl); return rc; - /*@=compdef@*/ -/*@=usereleased@*/ } int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) @@ -1240,7 +1131,6 @@ int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) int epsv; int port; -/*@-boundswrite@*/ URLSANE(u); if (ftpCmd == NULL) return FTPERR_UNKNOWN; /* XXX W2DO? */ @@ -1347,7 +1237,6 @@ int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) while (*chptr++ != '\0') { if (*chptr == ',') *chptr = '.'; } -/*@=boundswrite@*/ sprintf(remoteIP, "%s", passReply); } /* if (epsv) */ @@ -1415,12 +1304,10 @@ int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) dataAddress.sin_family = AF_INET; dataAddress.sin_port = htons(port); - /*@-moduncon@*/ if (!inet_aton(remoteIP, &dataAddress.sin_addr)) { rc = FTPERR_PASSIVE_ERROR; goto errxit; } - /*@=moduncon@*/ rc = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); fdSetFdno(data, (rc >= 0 ? rc : -1)); @@ -1434,7 +1321,6 @@ int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) /* XXX setsockopt SO_KEEPALIVE */ /* XXX setsockopt SO_TOS IPTOS_THROUGHPUT */ - /*@-internalglobs@*/ while (connect(fdFileno(data), (struct sockaddr *) &dataAddress, sizeof(dataAddress)) < 0) { @@ -1443,7 +1329,6 @@ int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) rc = FTPERR_FAILED_DATA_CONNECT; goto errxit; } - /*@=internalglobs@*/ #endif /* HAVE_GETADDRINFO */ if (_ftp_debug) @@ -1463,23 +1348,16 @@ fprintf(stderr, "-> %s", cmd); return 0; errxit: - /*@-observertrans@*/ fdSetSyserrno(u->ctrl, errno, ftpStrerror(rc)); - /*@=observertrans@*/ - /*@-branchstate@*/ if (fdFileno(data) >= 0) - /*@-refcounttrans@*/ (void) fdClose(data); /*@=refcounttrans@*/ - /*@=branchstate@*/ + (void) fdClose(data); return rc; } -/*@unchecked@*/ /*@null@*/ static rpmCallbackFunction urlNotify = NULL; -/*@unchecked@*/ /*@null@*/ static void * urlNotifyData = NULL; -/*@unchecked@*/ static int urlNotifyCount = -1; void urlSetCallback(rpmCallbackFunction notify, void *notifyData, int notifyCount) { @@ -1497,12 +1375,9 @@ int ufdCopy(FD_t sfd, FD_t tfd) int notifier = -1; if (urlNotify) { -/*@-boundsread@*/ - /*@-noeffectuncon @*/ /* FIX: check rc */ + /* FIX: check rc */ (void)(*urlNotify) (NULL, RPMCALLBACK_INST_OPEN_FILE, 0, 0, NULL, urlNotifyData); - /*@=noeffectuncon @*/ -/*@=boundsread@*/ } while (1) { @@ -1526,12 +1401,9 @@ int ufdCopy(FD_t sfd, FD_t tfd) if (urlNotify && urlNotifyCount > 0) { int n = itemsCopied/urlNotifyCount; if (n != notifier) { -/*@-boundsread@*/ - /*@-noeffectuncon @*/ /* FIX: check rc */ + /* FIX: check rc */ (void)(*urlNotify) (NULL, RPMCALLBACK_INST_PROGRESS, itemsCopied, 0, NULL, urlNotifyData); - /*@=noeffectuncon @*/ -/*@=boundsread@*/ notifier = n; } } @@ -1541,20 +1413,15 @@ int ufdCopy(FD_t sfd, FD_t tfd) ftpStrerror(rc))); if (urlNotify) { -/*@-boundsread@*/ - /*@-noeffectuncon @*/ /* FIX: check rc */ + /* FIX: check rc */ (void)(*urlNotify) (NULL, RPMCALLBACK_INST_OPEN_FILE, itemsCopied, itemsCopied, NULL, urlNotifyData); - /*@=noeffectuncon @*/ -/*@=boundsread@*/ } return rc; } -static int urlConnect(const char * url, /*@out@*/ urlinfo * uret) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies *uret, fileSystem, internalState @*/ +static int urlConnect(const char * url, urlinfo * uret) { urlinfo u; int rc = 0; @@ -1589,10 +1456,8 @@ static int urlConnect(const char * url, /*@out@*/ urlinfo * uret) } } -/*@-boundswrite@*/ if (uret != NULL) *uret = urlLink(u, "urlConnect"); -/*@=boundswrite@*/ u = urlFree(u, "urlSplit (urlConnect)"); return rc; @@ -1642,8 +1507,6 @@ int ftpCmd(const char * cmd, const char * url, const char * arg2) #endif static int ftpAbort(urlinfo u, FD_t data) - /*@globals fileSystem, internalState @*/ - /*@modifies u, data, fileSystem, internalState @*/ { static unsigned char ipbuf[3] = { IAC, IP, IAC }; FD_t ctrl; @@ -1662,15 +1525,14 @@ static int ftpAbort(urlinfo u, FD_t data) DBGIO(0, (stderr, "-> ABOR\n")); -/*@-usereleased -compdef@*/ if (send(fdFileno(ctrl), ipbuf, sizeof(ipbuf), MSG_OOB) != sizeof(ipbuf)) { - /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/ + (void) fdClose(ctrl); return FTPERR_SERVER_IO_ERROR; } sprintf(u->buf, "%cABOR\r\n",(char) DM); if (fdWrite(ctrl, u->buf, 7) != 7) { - /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/ + (void) fdClose(ctrl); return FTPERR_SERVER_IO_ERROR; } @@ -1679,10 +1541,8 @@ static int ftpAbort(urlinfo u, FD_t data) tosecs = data->rd_timeoutsecs; data->rd_timeoutsecs = 10; if (fdReadable(data, data->rd_timeoutsecs) > 0) { -/*@-boundswrite@*/ while (timedRead(data, u->buf, u->bufAlloced) > 0) u->buf[0] = '\0'; -/*@=boundswrite@*/ } data->rd_timeoutsecs = tosecs; /* XXX ftp abort needs to close the data channel to receive status */ @@ -1701,12 +1561,9 @@ static int ftpAbort(urlinfo u, FD_t data) u->ctrl->rd_timeoutsecs = tosecs; return rc; -/*@=usereleased =compdef@*/ } static int ftpFileDone(urlinfo u, FD_t data) - /*@globals fileSystem @*/ - /*@modifies u, data, fileSystem @*/ { int rc = 0; @@ -1722,9 +1579,7 @@ static int ftpFileDone(urlinfo u, FD_t data) return rc; } -static int httpResp(urlinfo u, FD_t ctrl, /*@out@*/ char ** str) - /*@globals fileSystem @*/ - /*@modifies ctrl, *str, fileSystem @*/ +static int httpResp(urlinfo u, FD_t ctrl, char ** str) { int ec = 0; int rc; @@ -1752,8 +1607,6 @@ fprintf(stderr, "*** httpResp: rc %d ec %d\n", rc, ec); } static int httpReq(FD_t ctrl, const char * httpCmd, const char * httpArg) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies ctrl, fileSystem, internalState @*/ { urlinfo u; const char * host; @@ -1778,18 +1631,13 @@ assert(ctrl != NULL); if ((port = (u->proxyp > 0 ? u->proxyp : u->port)) < 0) port = 80; path = (u->proxyh || u->proxyp > 0) ? u->url : httpArg; - /*@-branchstate@*/ if (path == NULL) path = ""; - /*@=branchstate@*/ reopen: - /*@-branchstate@*/ if (fdFileno(ctrl) >= 0 && (rc = fdWritable(ctrl, 0)) < 1) { - /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/ + (void) fdClose(ctrl); } - /*@=branchstate@*/ -/*@-usereleased@*/ if (fdFileno(ctrl) < 0) { rc = tcpConnect(ctrl, host, port); if (rc < 0) @@ -1806,7 +1654,6 @@ Transfer-Encoding: chunked\r\n\ \r\n\ ") + strlen(httpCmd) + strlen(path) + sizeof(VERSION) + strlen(hthost) + 20; -/*@-boundswrite@*/ req = alloca(len); *req = '\0'; @@ -1828,7 +1675,6 @@ Accept: text/plain\r\n\ \r\n\ ", httpCmd, path, (u->httpVersion ? 1 : 0), VERSION, hthost, port); } -/*@=boundswrite@*/ if (_ftp_debug) fprintf(stderr, "-> %s", req); @@ -1839,7 +1685,6 @@ fprintf(stderr, "-> %s", req); goto errxit; } - /*@-branchstate@*/ if (!strcmp(httpCmd, "PUT")) { ctrl->wr_chunked = 1; } else { @@ -1849,28 +1694,22 @@ fprintf(stderr, "-> %s", req); if (rc) { if (!retrying) { /* not HTTP_OK */ retrying = 1; - /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/ + (void) fdClose(ctrl); goto reopen; } goto errxit; } } - /*@=branchstate@*/ ctrl = fdLink(ctrl, "open data (httpReq)"); return 0; errxit: - /*@-observertrans@*/ fdSetSyserrno(ctrl, errno, ftpStrerror(rc)); - /*@=observertrans@*/ errxit2: - /*@-branchstate@*/ if (fdFileno(ctrl) >= 0) - /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/ - /*@=branchstate@*/ + (void) fdClose(ctrl); return rc; -/*@=usereleased@*/ } /* XXX DYING: unused */ @@ -1883,11 +1722,7 @@ void * ufdGetUrlinfo(FD_t fd) } /* =============================================================== */ -static ssize_t ufdRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies buf, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (count - 1) @*/ - /*@ensures maxRead(buf) == result @*/ +static ssize_t ufdRead(void * cookie, char * buf, size_t count) { FD_t fd = c2f(cookie); int bytesRead; @@ -1919,30 +1754,28 @@ static ssize_t ufdRead(void * cookie, /*@out@*/ char * buf, size_t count) case -1: /* error */ case 0: /* timeout */ return total; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: /* data to read */ - /*@switchbreak@*/ break; + break; } -/*@-boundswrite@*/ rc = fdRead(fd, buf + total, count - total); -/*@=boundswrite@*/ if (rc < 0) { switch (errno) { case EWOULDBLOCK: continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } if (_rpmio_debug) fprintf(stderr, "*** read: rc %d errno %d %s \"%s\"\n", rc, errno, strerror(errno), buf); return rc; - /*@notreached@*/ break; + break; } else if (rc == 0) { return total; - /*@notreached@*/ break; + break; } bytesRead = rc; } @@ -1951,8 +1784,6 @@ fprintf(stderr, "*** read: rc %d errno %d %s \"%s\"\n", rc, errno, strerror(errn } static ssize_t ufdWrite(void * cookie, const char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { FD_t fd = c2f(cookie); int bytesWritten; @@ -1986,9 +1817,9 @@ fprintf(stderr, "*** ufdWrite fd %p WRITE PAST END OF CONTENT\n", fd); case -1: /* error */ case 0: /* timeout */ return total; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: /* data to write */ - /*@switchbreak@*/ break; + break; } rc = fdWrite(fd, buf + total, count - total); @@ -1997,17 +1828,17 @@ fprintf(stderr, "*** ufdWrite fd %p WRITE PAST END OF CONTENT\n", fd); switch (errno) { case EWOULDBLOCK: continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } if (_rpmio_debug) fprintf(stderr, "*** write: rc %d errno %d %s \"%s\"\n", rc, errno, strerror(errno), buf); return rc; - /*@notreached@*/ break; + break; } else if (rc == 0) { return total; - /*@notreached@*/ break; + break; } bytesWritten = rc; } @@ -2016,8 +1847,6 @@ fprintf(stderr, "*** write: rc %d errno %d %s \"%s\"\n", rc, errno, strerror(err } static inline int ufdSeek(void * cookie, _libio_pos_t pos, int whence) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { FD_t fd = c2f(cookie); @@ -2032,20 +1861,18 @@ static inline int ufdSeek(void * cookie, _libio_pos_t pos, int whence) case URL_IS_DASH: default: return -2; - /*@notreached@*/ break; + break; } return fdSeek(cookie, pos, whence); } -/*@-branchstate@*/ /*@-usereleased@*/ /* LCL: fd handling is tricky here. */ -int ufdClose( /*@only@*/ void * cookie) +int ufdClose( void * cookie) { FD_t fd = c2f(cookie); UFDONLY(fd); - /*@-branchstate@*/ if (fd->url) { urlinfo u = fd->url; @@ -2061,11 +1888,9 @@ int ufdClose( /*@only@*/ void * cookie) /* XXX if not using libio, lose the fp from fpio */ { FILE * fp; - /*@+voidabstract -nullpass@*/ fp = fdGetFILE(fd); if (noLibio && fp) fdSetFp(fd, NULL); - /*@=voidabstract =nullpass@*/ } /* @@ -2092,16 +1917,13 @@ int ufdClose( /*@only@*/ void * cookie) } else { int rc; /* XXX STOR et al require close before ftpFileDone */ - /*@-refcounttrans@*/ rc = fdClose(fd); - /*@=refcounttrans@*/ #if 0 /* XXX error exit from ufdOpen does not have this set */ assert(fd->ftpFileDoneNeeded != 0); #endif - /*@-compdef@*/ /* FIX: u->data undefined */ + /* FIX: u->data undefined */ if (fd->ftpFileDoneNeeded) (void) ftpFileDone(u, fd); - /*@=compdef@*/ return rc; } } @@ -2130,11 +1952,9 @@ int ufdClose( /*@only@*/ void * cookie) /* XXX if not using libio, lose the fp from fpio */ { FILE * fp; - /*@+voidabstract -nullpass@*/ fp = fdGetFILE(fd); if (noLibio && fp) fdSetFp(fd, NULL); - /*@=voidabstract =nullpass@*/ } /* If content remains, then don't persist. */ @@ -2149,13 +1969,10 @@ int ufdClose( /*@only@*/ void * cookie) } return fdClose(fd); } -/*@=usereleased@*/ -/*@=branchstate@*/ /*@-nullstate@*/ /* FIX: u->{ctrl,data}->url undef after XurlLink. */ -/*@null@*/ FD_t ftpOpen(const char *url, /*@unused@*/ int flags, - /*@unused@*/ mode_t mode, /*@out@*/ urlinfo *uret) - /*@modifies *uret @*/ +FD_t ftpOpen(const char *url, int flags, + mode_t mode, urlinfo *uret) { urlinfo u = NULL; FD_t fd = NULL; @@ -2184,22 +2001,15 @@ int ufdClose( /*@only@*/ void * cookie) } exit: -/*@-boundswrite@*/ if (uret) *uret = u; -/*@=boundswrite@*/ - /*@-refcounttrans@*/ return fd; - /*@=refcounttrans@*/ } -/*@=nullstate@*/ #ifndef WITH_NEON -/*@-nullstate@*/ /* FIX: u->{ctrl,data}->url undef after XurlLink. */ -static /*@null@*/ FD_t httpOpen(const char * url, /*@unused@*/ int flags, - /*@unused@*/ mode_t mode, /*@out@*/ urlinfo * uret) - /*@globals internalState @*/ - /*@modifies *uret, internalState @*/ + /* FIX: u->{ctrl,data}->url undef after XurlLink. */ +static FD_t httpOpen(const char * url, int flags, + mode_t mode, urlinfo * uret) { urlinfo u = NULL; FD_t fd = NULL; @@ -2233,20 +2043,13 @@ static /*@null@*/ FD_t httpOpen(const char * url, /*@unused@*/ int flags, } exit: -/*@-boundswrite@*/ if (uret) *uret = u; -/*@=boundswrite@*/ - /*@-refcounttrans@*/ return fd; - /*@=refcounttrans@*/ } -/*@=nullstate@*/ #endif -static /*@null@*/ FD_t ufdOpen(const char * url, int flags, mode_t mode) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ +static FD_t ufdOpen(const char * url, int flags, mode_t mode) { FD_t fd = NULL; const char * cmd; @@ -2257,7 +2060,6 @@ static /*@null@*/ FD_t ufdOpen(const char * url, int flags, mode_t mode) if (_rpmio_debug) fprintf(stderr, "*** ufdOpen(%s,0x%x,0%o)\n", url, (unsigned)flags, (unsigned)mode); - /*@-branchstate@*/ switch (urlType) { case URL_IS_FTP: fd = ftpOpen(url, flags, mode, &u); @@ -2330,7 +2132,6 @@ fprintf(stderr, "*** ufdOpen(%s,0x%x,0%o)\n", url, (unsigned)flags, (unsigned)mo } break; } - /*@=branchstate@*/ if (fd == NULL) return NULL; fd->urlType = urlType; @@ -2342,35 +2143,28 @@ DBGIO(fd, (stderr, "==>\tufdOpen(\"%s\",%x,0%o) %s\n", url, (unsigned)flags, (un return fd; } -/*@-type@*/ /* LCL: function typedefs */ +/* LCL: function typedefs */ static struct FDIO_s ufdio_s = { ufdRead, ufdWrite, ufdSeek, ufdClose, XfdLink, XfdFree, XfdNew, fdFileno, ufdOpen, NULL, fdGetFp, NULL, Mkdir, Chdir, Rmdir, Rename, Unlink }; -/*@=type@*/ -FDIO_t ufdio = /*@-compmempass@*/ &ufdio_s /*@=compmempass@*/ ; +FDIO_t ufdio = &ufdio_s ; /* =============================================================== */ /* Support for GZIP library. */ #ifdef HAVE_ZLIB_H -/*@-moduncon@*/ -/*@-noparams@*/ #include <zlib.h> -/*@=noparams@*/ -static inline /*@dependent@*/ /*@null@*/ void * gzdFileno(FD_t fd) - /*@*/ +static inline void * gzdFileno(FD_t fd) { void * rc = NULL; int i; FDSANE(fd); for (i = fd->nfps; i >= 0; i--) { -/*@-boundsread@*/ FDSTACK_t * fps = &fd->fps[i]; -/*@=boundsread@*/ if (fps->io != gzdio) continue; rc = fps->fp; @@ -2380,10 +2174,8 @@ static inline /*@dependent@*/ /*@null@*/ void * gzdFileno(FD_t fd) return rc; } -static /*@null@*/ +static FD_t gzdOpen(const char * path, const char * fmode) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { FD_t fd; gzFile gzfile; @@ -2396,9 +2188,7 @@ DBGIO(fd, (stderr, "==>\tgzdOpen(\"%s\", \"%s\") fd %p %s\n", path, fmode, (fd ? return fdLink(fd, "gzdOpen"); } -static /*@null@*/ FD_t gzdFdopen(void * cookie, const char *fmode) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ +static FD_t gzdFdopen(void * cookie, const char *fmode) { FD_t fd = c2f(cookie); int fdno; @@ -2417,8 +2207,6 @@ static /*@null@*/ FD_t gzdFdopen(void * cookie, const char *fmode) } static int gzdFlush(FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { gzFile gzfile; gzfile = gzdFileno(fd); @@ -2427,9 +2215,7 @@ static int gzdFlush(FD_t fd) } /* =============================================================== */ -static ssize_t gzdRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies buf, fileSystem, internalState @*/ +static ssize_t gzdRead(void * cookie, char * buf, size_t count) { FD_t fd = c2f(cookie); gzFile gzfile; @@ -2458,8 +2244,6 @@ DBGIO(fd, (stderr, "==>\tgzdRead(%p,%p,%u) rc %lx %s\n", cookie, buf, (unsigned) } static ssize_t gzdWrite(void * cookie, const char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { FD_t fd = c2f(cookie); gzFile gzfile; @@ -2490,8 +2274,6 @@ DBGIO(fd, (stderr, "==>\tgzdWrite(%p,%p,%u) rc %lx %s\n", cookie, buf, (unsigned /* XXX zlib-1.0.4 has not */ static inline int gzdSeek(void * cookie, _libio_pos_t pos, int whence) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { #ifdef USE_COOKIE_SEEK_POINTER _IO_off64_t p = *pos; @@ -2528,9 +2310,7 @@ DBGIO(fd, (stderr, "==>\tgzdSeek(%p,%ld,%d) rc %lx %s\n", cookie, (long)p, whenc return rc; } -static int gzdClose( /*@only@*/ void * cookie) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ +static int gzdClose( void * cookie) { FD_t fd = c2f(cookie); gzFile gzfile; @@ -2540,9 +2320,7 @@ static int gzdClose( /*@only@*/ void * cookie) if (gzfile == NULL) return -2; /* XXX can't happen */ fdstat_enter(fd, FDSTAT_CLOSE); - /*@-dependenttrans@*/ rc = gzclose(gzfile); - /*@=dependenttrans@*/ /* XXX TODO: preserve fd if errors */ @@ -2562,29 +2340,24 @@ DBGIO(fd, (stderr, "==>\tgzdClose(%p) zerror %d %s\n", cookie, rc, fdbg(fd))); DBGIO(fd, (stderr, "==>\tgzdClose(%p) rc %lx %s\n", cookie, (unsigned long)rc, fdbg(fd))); if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "GZDIO", stderr); - /*@-branchstate@*/ if (rc == 0) fd = fdFree(fd, "open (gzdClose)"); - /*@=branchstate@*/ return rc; } -/*@-type@*/ /* LCL: function typedefs */ +/* LCL: function typedefs */ static struct FDIO_s gzdio_s = { gzdRead, gzdWrite, gzdSeek, gzdClose, XfdLink, XfdFree, XfdNew, fdFileno, NULL, gzdOpen, gzdFileno, gzdFlush, NULL, NULL, NULL, NULL, NULL }; -/*@=type@*/ -FDIO_t gzdio = /*@-compmempass@*/ &gzdio_s /*@=compmempass@*/ ; +FDIO_t gzdio = &gzdio_s ; -/*@=moduncon@*/ #endif /* HAVE_ZLIB_H */ /* =============================================================== */ /* Support for BZIP2 library. */ #if HAVE_BZLIB_H -/*@-moduncon@*/ #include <bzlib.h> @@ -2598,17 +2371,14 @@ FDIO_t gzdio = /*@-compmempass@*/ &gzdio_s /*@=compmempass@*/ ; # define bzwrite BZ2_bzwrite #endif /* HAVE_BZ2_1_0 */ -static inline /*@dependent@*/ void * bzdFileno(FD_t fd) - /*@*/ +static inline void * bzdFileno(FD_t fd) { void * rc = NULL; int i; FDSANE(fd); for (i = fd->nfps; i >= 0; i--) { -/*@-boundsread@*/ FDSTACK_t * fps = &fd->fps[i]; -/*@=boundsread@*/ if (fps->io != bzdio) continue; rc = fps->fp; @@ -2618,10 +2388,7 @@ static inline /*@dependent@*/ void * bzdFileno(FD_t fd) return rc; } -/*@-globuse@*/ -static /*@null@*/ FD_t bzdOpen(const char * path, const char * mode) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ +static FD_t bzdOpen(const char * path, const char * mode) { FD_t fd; BZFILE *bzfile;; @@ -2631,12 +2398,8 @@ static /*@null@*/ FD_t bzdOpen(const char * path, const char * mode) fdPop(fd); fdPush(fd, bzdio, bzfile, -1); return fdLink(fd, "bzdOpen"); } -/*@=globuse@*/ -/*@-globuse@*/ -static /*@null@*/ FD_t bzdFdopen(void * cookie, const char * fmode) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ +static FD_t bzdFdopen(void * cookie, const char * fmode) { FD_t fd = c2f(cookie); int fdno; @@ -2653,23 +2416,15 @@ static /*@null@*/ FD_t bzdFdopen(void * cookie, const char * fmode) return fdLink(fd, "bzdFdopen"); } -/*@=globuse@*/ -/*@-globuse@*/ static int bzdFlush(FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { return bzflush(bzdFileno(fd)); } -/*@=globuse@*/ /* =============================================================== */ -/*@-globuse@*/ /*@-mustmod@*/ /* LCL: *buf is modified */ -static ssize_t bzdRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies *buf, fileSystem, internalState @*/ +static ssize_t bzdRead(void * cookie, char * buf, size_t count) { FD_t fd = c2f(cookie); BZFILE *bzfile; @@ -2679,28 +2434,19 @@ static ssize_t bzdRead(void * cookie, /*@out@*/ char * buf, size_t count) bzfile = bzdFileno(fd); fdstat_enter(fd, FDSTAT_READ); if (bzfile) - /*@-compdef@*/ rc = bzread(bzfile, buf, count); - /*@=compdef@*/ if (rc == -1) { int zerror = 0; if (bzfile) fd->errcookie = bzerror(bzfile, &zerror); } else if (rc >= 0) { fdstat_exit(fd, FDSTAT_READ, rc); - /*@-compdef@*/ if (fd->ndigests && rc > 0) fdUpdateDigests(fd, (void *)buf, rc); - /*@=compdef@*/ } return rc; } -/*@=mustmod@*/ -/*@=globuse@*/ -/*@-globuse@*/ static ssize_t bzdWrite(void * cookie, const char * buf, size_t count) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { FD_t fd = c2f(cookie); BZFILE *bzfile; @@ -2721,11 +2467,9 @@ static ssize_t bzdWrite(void * cookie, const char * buf, size_t count) } return rc; } -/*@=globuse@*/ -static inline int bzdSeek(void * cookie, /*@unused@*/ _libio_pos_t pos, - /*@unused@*/ int whence) - /*@*/ +static inline int bzdSeek(void * cookie, _libio_pos_t pos, + int whence) { FD_t fd = c2f(cookie); @@ -2733,9 +2477,7 @@ static inline int bzdSeek(void * cookie, /*@unused@*/ _libio_pos_t pos, return -2; } -static int bzdClose( /*@only@*/ void * cookie) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ +static int bzdClose( void * cookie) { FD_t fd = c2f(cookie); BZFILE *bzfile; @@ -2745,9 +2487,8 @@ static int bzdClose( /*@only@*/ void * cookie) if (bzfile == NULL) return -2; fdstat_enter(fd, FDSTAT_CLOSE); - /*@-noeffectuncon@*/ /* FIX: check rc */ + /* FIX: check rc */ bzclose(bzfile); - /*@=noeffectuncon@*/ rc = 0; /* XXX FIXME */ /* XXX TODO: preserve fd if errors */ @@ -2764,28 +2505,22 @@ static int bzdClose( /*@only@*/ void * cookie) DBGIO(fd, (stderr, "==>\tbzdClose(%p) rc %lx %s\n", cookie, (unsigned long)rc, fdbg(fd))); if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "BZDIO", stderr); - /*@-branchstate@*/ if (rc == 0) fd = fdFree(fd, "open (bzdClose)"); - /*@=branchstate@*/ return rc; } -/*@-type@*/ /* LCL: function typedefs */ +/* LCL: function typedefs */ static struct FDIO_s bzdio_s = { bzdRead, bzdWrite, bzdSeek, bzdClose, XfdLink, XfdFree, XfdNew, fdFileno, NULL, bzdOpen, bzdFileno, bzdFlush, NULL, NULL, NULL, NULL, NULL }; -/*@=type@*/ -FDIO_t bzdio = /*@-compmempass@*/ &bzdio_s /*@=compmempass@*/ ; +FDIO_t bzdio = &bzdio_s ; -/*@=moduncon@*/ #endif /* HAVE_BZLIB_H */ /* =============================================================== */ -/*@observer@*/ static const char * getFdErrstr (FD_t fd) - /*@*/ { const char *errstr = NULL; @@ -2829,15 +2564,11 @@ ssize_t Fread(void *buf, size_t size, size_t nmemb, FD_t fd) { DBGIO(fd, (stderr, "==> Fread(%p,%u,%u,%p) %s\n", buf, (unsigned)size, (unsigned)nmemb, (fd ? fd : NULL), fdbg(fd))); if (fdGetIo(fd) == fpio) { - /*@+voidabstract -nullpass@*/ rc = fread(buf, size, nmemb, fdGetFILE(fd)); - /*@=voidabstract =nullpass@*/ return rc; } - /*@-nullderef@*/ _read = FDIOVEC(fd, read); - /*@=nullderef@*/ rc = (_read ? (*_read) (fd, buf, size * nmemb) : -2); return rc; @@ -2852,17 +2583,11 @@ ssize_t Fwrite(const void *buf, size_t size, size_t nmemb, FD_t fd) DBGIO(fd, (stderr, "==> Fwrite(%p,%u,%u,%p) %s\n", buf, (unsigned)size, (unsigned)nmemb, (fd ? fd : NULL), fdbg(fd))); if (fdGetIo(fd) == fpio) { -/*@-boundsread@*/ - /*@+voidabstract -nullpass@*/ rc = fwrite(buf, size, nmemb, fdGetFILE(fd)); - /*@=voidabstract =nullpass@*/ -/*@=boundsread@*/ return rc; } - /*@-nullderef@*/ _write = FDIOVEC(fd, write); - /*@=nullderef@*/ rc = (_write ? _write(fd, buf, size * nmemb) : -2); return rc; @@ -2885,16 +2610,12 @@ DBGIO(fd, (stderr, "==> Fseek(%p,%ld,%d) %s\n", fd, (long)offset, whence, fdbg(f if (fdGetIo(fd) == fpio) { FILE *fp; - /*@+voidabstract -nullpass@*/ fp = fdGetFILE(fd); rc = fseek(fp, offset, whence); - /*@=voidabstract =nullpass@*/ return rc; } - /*@-nullderef@*/ _seek = FDIOVEC(fd, seek); - /*@=nullderef@*/ rc = (_seek ? _seek(fd, pos, whence) : -2); return rc; @@ -2908,20 +2629,15 @@ int Fclose(FD_t fd) DBGIO(fd, (stderr, "==> Fclose(%p) %s\n", (fd ? fd : NULL), fdbg(fd))); fd = fdLink(fd, "Fclose"); - /*@-branchstate@*/ while (fd->nfps >= 0) { -/*@-boundsread@*/ FDSTACK_t * fps = &fd->fps[fd->nfps]; -/*@=boundsread@*/ if (fps->io == fpio) { FILE *fp; int fpno; - /*@+voidabstract -nullpass@*/ fp = fdGetFILE(fd); fpno = fileno(fp); - /*@=voidabstract =nullpass@*/ /* XXX persistent HTTP/1.1 returns the previously opened fp */ if (fd->nfps > 0 && fpno == -1 && fd->fps[fd->nfps-1].io == ufdio && @@ -2933,10 +2649,7 @@ DBGIO(fd, (stderr, "==> Fclose(%p) %s\n", (fd ? fd : NULL), fdbg(fd))); if (fp) rc = fflush(fp); fd->nfps--; - /*@-refcounttrans@*/ rc = ufdClose(fd); - /*@=refcounttrans@*/ -/*@-usereleased@*/ if (fdGetFdno(fd) >= 0) break; if (!fd->persist) @@ -2947,17 +2660,11 @@ DBGIO(fd, (stderr, "==> Fclose(%p) %s\n", (fd ? fd : NULL), fdbg(fd))); /* HACK: flimsy Keepalive wiring. */ if (hadreqpersist) { fd->nfps--; -/*@-exposetrans@*/ fdSetFp(fd, fp); -/*@=exposetrans@*/ -/*@-refcounttrans@*/ (void) fdClose(fd); -/*@=refcounttrans@*/ fdSetFp(fd, NULL); fd->nfps++; -/*@-refcounttrans@*/ (void) fdClose(fd); -/*@=refcounttrans@*/ } else rc = fclose(fp); } @@ -2973,9 +2680,7 @@ DBGIO(fd, (stderr, "==> Fclose(%p) %s\n", (fd ? fd : NULL), fdbg(fd))); } } } else { - /*@-nullderef@*/ fdio_close_function_t _close = FDIOVEC(fd, close); - /*@=nullderef@*/ rc = _close(fd); } if (fd->nfps == 0) @@ -2984,10 +2689,8 @@ DBGIO(fd, (stderr, "==> Fclose(%p) %s\n", (fd ? fd : NULL), fdbg(fd))); ec = rc; fdPop(fd); } - /*@=branchstate@*/ fd = fdFree(fd, "Fclose"); return ec; -/*@=usereleased@*/ } /** @@ -3001,12 +2704,10 @@ DBGIO(fd, (stderr, "==> Fclose(%p) %s\n", (fd ? fd : NULL), fdbg(fd))); * - bzopen: 's' is smallmode * - HACK: '.' terminates, rest is type of I/O */ -/*@-boundswrite@*/ static inline void cvtfmode (const char *m, - /*@out@*/ char *stdio, size_t nstdio, - /*@out@*/ char *other, size_t nother, - /*@out@*/ const char **end, /*@out@*/ int * f) - /*@modifies *stdio, *other, *end, *f @*/ + char *stdio, size_t nstdio, + char *other, size_t nother, + const char **end, int * f) { int flags = 0; char c; @@ -3027,33 +2728,33 @@ static inline void cvtfmode (const char *m, default: *stdio = '\0'; return; - /*@notreached@*/ break; + break; } m++; while ((c = *m++) != '\0') { switch (c) { case '.': - /*@switchbreak@*/ break; + break; case '+': flags &= ~(O_RDONLY|O_WRONLY); flags |= O_RDWR; if (--nstdio > 0) *stdio++ = c; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; case 'b': if (--nstdio > 0) *stdio++ = c; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; case 'x': flags |= O_EXCL; if (--nstdio > 0) *stdio++ = c; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; default: if (--nother > 0) *other++ = c; continue; - /*@notreached@*/ /*@switchbreak@*/ break; + break; } break; } @@ -3064,7 +2765,6 @@ static inline void cvtfmode (const char *m, if (f != NULL) *f = flags; } -/*@=boundswrite@*/ #if _USE_LIBIO #if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ == 0 @@ -3073,7 +2773,6 @@ typedef _IO_cookie_io_functions_t cookie_io_functions_t; #endif #endif -/*@-boundswrite@*/ FD_t Fdopen(FD_t ofd, const char *fmode) { char stdio[20], other[20], zstdio[20]; @@ -3096,23 +2795,18 @@ fprintf(stderr, "*** Fdopen(%p,%s) %s\n", fd, fmode, fdbg(fd)); strncat(zstdio, other, sizeof(zstdio) - strlen(zstdio)); if (end == NULL && other[0] == '\0') - /*@-refcounttrans -retalias@*/ return fd; /*@=refcounttrans =retalias@*/ + return fd; - /*@-branchstate@*/ if (end && *end) { if (!strcmp(end, "fdio")) { iof = fdio; } else if (!strcmp(end, "gzdio")) { iof = gzdio; - /*@-internalglobs@*/ fd = gzdFdopen(fd, zstdio); - /*@=internalglobs@*/ #if HAVE_BZLIB_H } else if (!strcmp(end, "bzdio")) { iof = bzdio; - /*@-internalglobs@*/ fd = bzdFdopen(fd, zstdio); - /*@=internalglobs@*/ #endif } else if (!strcmp(end, "ufdio")) { iof = ufdio; @@ -3121,18 +2815,14 @@ fprintf(stderr, "*** Fdopen(%p,%s) %s\n", fd, fmode, fdbg(fd)); if (noLibio) { int fdno = Fileno(fd); FILE * fp = fdopen(fdno, stdio); -/*@+voidabstract -nullpass@*/ if (_rpmio_debug) fprintf(stderr, "*** Fdopen fpio fp %p\n", (void *)fp); -/*@=voidabstract =nullpass@*/ if (fp == NULL) return NULL; /* XXX gzdio/bzdio use fp for private data */ - /*@+voidabstract@*/ if (fdGetFp(fd) == NULL) fdSetFp(fd, fp); fdPush(fd, fpio, fp, fdno); /* Push fpio onto stack */ - /*@=voidabstract@*/ } } } else if (other[0] != '\0') { @@ -3140,14 +2830,11 @@ fprintf(stderr, "*** Fdopen fpio fp %p\n", (void *)fp); {}; if (*end == '\0') { iof = gzdio; - /*@-internalglobs@*/ fd = gzdFdopen(fd, zstdio); - /*@=internalglobs@*/ } } - /*@=branchstate@*/ if (iof == NULL) - /*@-refcounttrans -retalias@*/ return fd; /*@=refcounttrans =retalias@*/ + return fd; if (!noLibio) { FILE * fp = NULL; @@ -3163,23 +2850,18 @@ DBGIO(fd, (stderr, "==> fopencookie(%p,\"%s\",*%p) returns fp %p\n", fd, stdio, } #endif - /*@-branchstate@*/ if (fp) { /* XXX gzdio/bzdio use fp for private data */ - /*@+voidabstract -nullpass@*/ if (fdGetFp(fd) == NULL) fdSetFp(fd, fp); fdPush(fd, fpio, fp, fileno(fp)); /* Push fpio onto stack */ - /*@=voidabstract =nullpass@*/ fd = fdLink(fd, "fopencookie"); } - /*@=branchstate@*/ } DBGIO(fd, (stderr, "==> Fdopen(%p,\"%s\") returns fd %p %s\n", ofd, fmode, (fd ? fd : NULL), fdbg(fd))); - /*@-refcounttrans -retalias@*/ return fd; /*@=refcounttrans =retalias@*/ + return fd; } -/*@=boundswrite@*/ FD_t Fopen(const char *path, const char *fmode) { @@ -3197,7 +2879,6 @@ FD_t Fopen(const char *path, const char *fmode) if (stdio[0] == '\0') return NULL; - /*@-branchstate@*/ if (end == NULL || !strcmp(end, "fdio")) { if (_rpmio_debug) fprintf(stderr, "*** Fopen fdio path %s fmode %s\n", path, fmode); @@ -3218,7 +2899,6 @@ fprintf(stderr, "*** Fopen fdio path %s fmode %s\n", path, fmode); case URL_IS_HTTP: case URL_IS_HKP: isHTTP = 1; - /*@fallthrough@*/ case URL_IS_PATH: case URL_IS_DASH: case URL_IS_FTP: @@ -3233,24 +2913,19 @@ fprintf(stderr, "*** Fopen ufdio path %s fmode %s\n", path, fmode); if (_rpmio_debug) fprintf(stderr, "*** Fopen WTFO path %s fmode %s\n", path, fmode); return NULL; - /*@notreached@*/ break; + break; } /* XXX persistent HTTP/1.1 returns the previously opened fp */ if (isHTTP && ((fp = fdGetFp(fd)) != NULL) && ((fdno = fdGetFdno(fd)) >= 0 || fd->req != NULL)) { - /*@+voidabstract@*/ fdPush(fd, fpio, fp, fileno(fp)); /* Push fpio onto stack */ - /*@=voidabstract@*/ return fd; } } - /*@=branchstate@*/ - /*@-branchstate@*/ if (fd) fd = Fdopen(fd, fmode); - /*@=branchstate@*/ return fd; } @@ -3259,9 +2934,7 @@ int Fflush(FD_t fd) void * vh; if (fd == NULL) return -1; if (fdGetIo(fd) == fpio) - /*@+voidabstract -nullpass@*/ return fflush(fdGetFILE(fd)); - /*@=voidabstract =nullpass@*/ vh = fdGetFp(fd); if (vh && fdGetIo(fd) == gzdio) @@ -3284,15 +2957,11 @@ int Ferror(FD_t fd) rc = (fd->syserrno || fd->errcookie != NULL) ? -1 : 0; } else for (i = fd->nfps; rc == 0 && i >= 0; i--) { -/*@-boundsread@*/ FDSTACK_t * fps = &fd->fps[i]; -/*@=boundsread@*/ int ec; if (fps->io == fpio) { - /*@+voidabstract -nullpass@*/ ec = ferror(fdGetFILE(fd)); - /*@=voidabstract =nullpass@*/ } else if (fps->io == gzdio) { ec = (fd->syserrno || fd->errcookie != NULL) ? -1 : 0; i--; /* XXX fdio under gzdio always has fdno == -1 */ @@ -3322,9 +2991,7 @@ int Fileno(FD_t fd) rc = 123456789; /* HACK: https has no steenkin fileno. */ else for (i = fd->nfps ; rc == -1 && i >= 0; i--) { -/*@-boundsread@*/ rc = fd->fps[i].fdno; -/*@=boundsread@*/ } DBGIO(fd, (stderr, "==> Fileno(%p) rc %d %s\n", (fd ? fd : NULL), rc, fdbg(fd))); @@ -3340,7 +3007,6 @@ int Fcntl(FD_t fd, int op, void *lip) /* =============================================================== */ /* Helper routines that may be generally useful. */ -/*@-bounds@*/ int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid) { char * d, * de; @@ -3365,9 +3031,9 @@ int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid) switch(errno) { default: return errno; - /*@notreached@*/ /*@switchbreak@*/ break; + break; case ENOENT: - /*@switchbreak@*/ break; + break; } rc = Mkdir(d, mode); if (rc) @@ -3389,9 +3055,7 @@ int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid) path, mode); return rc; } -/*@=bounds@*/ -/*@-boundswrite@*/ int rpmioSlurp(const char * fn, byte ** bp, ssize_t * blenp) { static ssize_t blenmax = (32 * BUFSIZ); @@ -3409,7 +3073,6 @@ int rpmioSlurp(const char * fn, byte ** bp, ssize_t * blenp) size = fdSize(fd); blen = (size >= 0 ? size : blenmax); - /*@-branchstate@*/ if (blen) { int nb; b = xmalloc(blen+1); @@ -3425,7 +3088,6 @@ int rpmioSlurp(const char * fn, byte ** bp, ssize_t * blenp) } b[blen] = '\0'; } - /*@=branchstate@*/ exit: if (fd) (void) Fclose(fd); @@ -3443,12 +3105,10 @@ exit: return rc; } -/*@=boundswrite@*/ -/*@-type@*/ /* LCL: function typedefs */ +/* LCL: function typedefs */ static struct FDIO_s fpio_s = { ufdRead, ufdWrite, fdSeek, ufdClose, XfdLink, XfdFree, XfdNew, fdFileno, ufdOpen, NULL, fdGetFp, NULL, Mkdir, Chdir, Rmdir, Rename, Unlink }; -/*@=type@*/ -FDIO_t fpio = /*@-compmempass@*/ &fpio_s /*@=compmempass@*/ ; +FDIO_t fpio = &fpio_s ; diff --git a/rpmio/rpmio.h b/rpmio/rpmio.h index 50366786e..cb0c40f6e 100644 --- a/rpmio/rpmio.h +++ b/rpmio/rpmio.h @@ -9,20 +9,18 @@ #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> -/*@-noparams@*/ #include "glob.h" -/*@=noparams@*/ #include <stdio.h> #include <stdlib.h> #include <unistd.h> /** */ -typedef /*@abstract@*/ struct pgpDig_s * pgpDig; +typedef struct pgpDig_s * pgpDig; /** */ -typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams; +typedef struct pgpDigParams_s * pgpDigParams; /** \ingroup rpmio * Hide libio API lossage. @@ -30,7 +28,6 @@ typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams; * argument as a pointer rather than as an off_t. The snarl below defines * typedefs to isolate the lossage. */ -/*@{*/ #if defined(__GLIBC__) && \ (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) #define USE_COOKIE_SEEK_POINTER 1 @@ -40,15 +37,14 @@ typedef _libio_off_t * _libio_pos_t; typedef off_t _libio_off_t; typedef off_t _libio_pos_t; #endif -/*@}*/ /** \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" { @@ -57,146 +53,98 @@ extern "C" { /** \ingroup rpmio * \name RPMIO Vectors. */ -/*@{*/ /** */ -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 /*@only@*/ /*@null@*/ FD_t (*fdio_ref_function_t) ( /*@only@*/ void * cookie, - const char * msg, const char * file, unsigned line) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef FD_t (*fdio_ref_function_t) ( void * cookie, + const char * msg, const char * file, unsigned line); /** */ -typedef /*@only@*/ /*@null@*/ FD_t (*fdio_deref_function_t) ( /*@only@*/ FD_t fd, - const char * msg, const char * file, unsigned line) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/; +typedef FD_t (*fdio_deref_function_t) ( FD_t fd, + const char * msg, const char * file, unsigned line); /** */ -typedef /*@only@*/ /*@null@*/ FD_t (*fdio_new_function_t) (const char * msg, - const char * file, unsigned line) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef FD_t (*fdio_new_function_t) (const char * msg, + const char * file, unsigned line); /** */ -typedef int (*fdio_fileno_function_t) (void * cookie) - /*@globals fileSystem @*/ - /*@modifies *cookie, fileSystem @*/; +typedef int (*fdio_fileno_function_t) (void * cookie); /** */ -typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t mode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t mode); /** */ -typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode); /** */ -typedef void * (*fdio_ffileno_function_t) (FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +typedef void * (*fdio_ffileno_function_t) (FD_t fd); /** */ -typedef int (*fdio_fflush_function_t) (FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; -/*@}*/ +typedef int (*fdio_fflush_function_t) (FD_t fd); /** \ingroup rpmrpc * \name RPMRPC Vectors. */ -/*@{*/ /** */ -typedef int (*fdio_mkdir_function_t) (const char * path, mode_t mode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_mkdir_function_t) (const char * path, mode_t mode); /** */ -typedef int (*fdio_chdir_function_t) (const char * path) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_chdir_function_t) (const char * path); /** */ -typedef int (*fdio_rmdir_function_t) (const char * path) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_rmdir_function_t) (const char * path); /** */ -typedef int (*fdio_rename_function_t) (const char * oldpath, const char * newpath) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +typedef int (*fdio_rename_function_t) (const char * oldpath, const char * newpath); /** */ -typedef int (*fdio_unlink_function_t) (const char * path) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; -/*@-typeuse@*/ +typedef int (*fdio_unlink_function_t) (const char * path); /** */ -typedef int (*fdio_stat_function_t) (const char * path, /*@out@*/ struct stat * st) - /*@globals errno, fileSystem @*/ - /*@modifies *st, errno, fileSystem @*/; +typedef int (*fdio_stat_function_t) (const char * path, struct stat * st); /** */ -typedef int (*fdio_lstat_function_t) (const char * path, /*@out@*/ struct stat * st) - /*@globals errno, fileSystem @*/ - /*@modifies *st, errno, fileSystem @*/; +typedef int (*fdio_lstat_function_t) (const char * path, struct stat * st); /** */ -typedef int (*fdio_access_function_t) (const char * path, int amode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; -/*@=typeuse@*/ -/*@}*/ +typedef int (*fdio_access_function_t) (const char * path, int amode); /** \ingroup rpmio @@ -228,331 +176,225 @@ struct FDIO_s { /** \ingroup rpmio * \name RPMIO Interface. */ -/*@{*/ /** * strerror(3) clone. */ -/*@observer@*/ const char * Fstrerror(/*@null@*/ FD_t fd) - /*@*/; +const char * Fstrerror(FD_t fd); /** * fread(3) clone. */ -/*@-incondefs@*/ -ssize_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) @*/ - /*@ensures maxRead(buf) == result @*/; -/*@=incondefs@*/ +ssize_t Fread(void * buf, size_t size, size_t nmemb, FD_t fd); /** * fwrite(3) clone. */ -/*@-incondefs@*/ -ssize_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/ - /*@requires maxRead(buf) >= nmemb @*/; -/*@=incondefs@*/ +ssize_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 @*/; +int Fseek(FD_t fd, _libio_off_t offset, int whence); /** * 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 @*/ - /*@modifies ofd, fileSystem @*/; +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); -/*@}*/ /** \ingroup rpmrpc * \name RPMRPC Interface. */ -/*@{*/ /** * 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); /** * 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); /** * readlink(2) clone. */ -/*@-incondefs@*/ -int Readlink(const char * path, /*@out@*/ char * buf, size_t bufsiz) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies *buf, errno, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (bufsiz - 1) @*/ - /*@ensures maxRead(buf) <= bufsiz @*/; -/*@=incondefs@*/ +int Readlink(const char * path, char * buf, size_t bufsiz); /** * stat(2) clone. */ -int Stat(const char * path, /*@out@*/ struct stat * st) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies *st, errno, fileSystem, internalState @*/; +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); /** * access(2) clone. */ -int Access(const char * path, int amode) - /*@globals errno, fileSystem @*/ - /*@modifies errno, fileSystem @*/; +int Access(const char * path, int amode); /** * 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) - /*@*/; +int Glob_error(const char * epath, int eerrno); /** * glob(3) clone. */ int Glob(const char * pattern, int flags, int errfunc(const char * epath, int eerrno), - /*@out@*/ glob_t * pglob) - /*@globals fileSystem @*/ - /*@modifies *pglob, fileSystem @*/; + glob_t * pglob); /** * globfree(3) clone. */ -void Globfree( /*@only@*/ glob_t * pglob) - /*@globals fileSystem @*/ - /*@modifies *pglob, fileSystem @*/; +void Globfree( glob_t * pglob); /** * opendir(3) clone. */ -/*@null@*/ -DIR * Opendir(const char * path) - /*@globals errno, h_errno, fileSystem, internalState @*/ - /*@modifies errno, fileSystem, internalState @*/; +DIR * Opendir(const char * path); /** * readdir(3) clone. */ -/*@dependent@*/ /*@null@*/ -struct dirent * Readdir(DIR * dir) - /*@globals errno, fileSystem @*/ - /*@modifies *dir, errno, fileSystem @*/; +struct dirent * Readdir(DIR * dir); /** * closedir(3) clone. */ -int Closedir(/*@only@*/ DIR * dir) - /*@globals errno, fileSystem @*/ - /*@modifies *dir, errno, fileSystem @*/; +int Closedir(DIR * dir); -/*@}*/ /** \ingroup rpmio * \name RPMIO Utilities. */ -/*@{*/ /** */ -off_t fdSize(FD_t fd) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem@*/; +off_t fdSize(FD_t fd); /** */ -/*@null@*/ FD_t fdDup(int fdno) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +FD_t fdDup(int fdno); #ifdef UNUSED -/*@null@*/ FILE *fdFdopen( /*@only@*/ void * cookie, const char * mode); +FILE *fdFdopen( void * cookie, const char * mode); #endif /* XXX Legacy interfaces needed by gnorpm, rpmfind et al */ -/*@-exportlocal@*/ /** */ #ifndef H_RPMIO_INTERNAL /* XXX avoid gcc warning */ -/*@unused@*/ int fdFileno(void * cookie) - /*@*/; +int fdFileno(void * cookie); #define fdFileno(_fd) fdio->_fileno(_fd) #endif /** */ -/*@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)) /** */ -/*@-incondefs@*/ -ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count) - /*@globals errno, fileSystem, internalState @*/ - /*@modifies *cookie, *buf, errno, fileSystem, internalState @*/ - /*@requires maxSet(buf) >= (count - 1) @*/ - /*@ensures maxRead(buf) == result @*/ ; +ssize_t fdRead(void * cookie, char * buf, size_t count); #define fdRead(_fd, _buf, _count) fdio->read((_fd), (_buf), (_count)) -/*@=incondefs@*/ /** */ -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) /** */ -/*@unused@*/ -/*@only@*/ /*@null@*/ -FD_t fdLink (/*@only@*/ void * cookie, const char * msg) - /*@globals fileSystem @*/ - /*@modifies *cookie, fileSystem @*/; +FD_t fdLink (void * cookie, const char * msg); #define fdLink(_fd, _msg) fdio->_fdref(_fd, _msg, __FILE__, __LINE__) /** */ -/*@unused@*/ -/*@only@*/ /*@null@*/ -FD_t fdFree(/*@only@*/ FD_t fd, const char * msg) - /*@globals fileSystem @*/ - /*@modifies fd, fileSystem @*/; +FD_t fdFree(FD_t fd, const char * msg); #define fdFree(_fd, _msg) fdio->_fdderef(_fd, _msg, __FILE__, __LINE__) /** */ -/*@unused@*/ -/*@only@*/ /*@null@*/ -FD_t fdNew (const char * msg) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +FD_t fdNew (const char * msg); #define fdNew(_msg) fdio->_fdnew(_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. @@ -562,14 +404,11 @@ int fdReadable(FD_t fd, int secs) * @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); /** * FTP and HTTP error codes. */ -/*@-typeuse@*/ typedef enum ftperrCode_e { FTPERR_NE_ERROR = -1, /*!< Generic error. */ FTPERR_NE_LOOKUP = -2, /*!< Hostname lookup failed. */ @@ -594,116 +433,94 @@ typedef enum ftperrCode_e { 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) - /*@modifies fd @*/; +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); /** */ -/*@unused@*/ int timedRead(FD_t fd, /*@out@*/ void * bufptr, int length) - /*@globals fileSystem @*/ - /*@modifies fd, *bufptr, fileSystem @*/; +int timedRead(FD_t fd, void * bufptr, int length); #define timedRead (ufdio->read) -/*@-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 fadio; -/*@=exportlocal@*/ -/*@}*/ +extern FDIO_t fadio; -/*@unused@*/ static inline int xislower(int c) /*@*/ { +static inline int xislower(int c) { return (c >= 'a' && c <= 'z'); } -/*@unused@*/ static inline int xisupper(int c) /*@*/ { +static inline int xisupper(int c) { return (c >= 'A' && c <= '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 >= '0' && c <= '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 == ' ' || c == '\t'); } -/*@unused@*/ static inline int xisspace(int c) /*@*/ { +static inline int xisspace(int c) { return (xisblank(c) || c == '\n' || c == '\r' || c == '\f' || c == '\v'); } -/*@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); } /** \ingroup rpmio * Locale insensitive strcasecmp(3). */ -int xstrcasecmp(const char * s1, const char * s2) /*@*/; +int xstrcasecmp(const char * s1, const char * s2) ; /** \ingroup rpmio * Locale insensitive strncasecmp(3). */ -int xstrncasecmp(const char *s1, const char * s2, size_t n) /*@*/; +int xstrncasecmp(const char *s1, const char * s2, size_t n) ; #ifdef __cplusplus } diff --git a/rpmio/rpmio_internal.h b/rpmio/rpmio_internal.h index cc67329cf..2c4befe4d 100644 --- a/rpmio/rpmio_internal.h +++ b/rpmio/rpmio_internal.h @@ -38,9 +38,7 @@ * Values parsed from OpenPGP signature/pubkey packet(s). */ struct pgpDigParams_s { -/*@only@*/ /*@null@*/ const char * userid; -/*@only@*/ /*@null@*/ const byte * hash; const char * params[4]; byte tag; @@ -69,19 +67,13 @@ struct pgpDig_s { size_t nbytes; /*!< No. bytes of plain text. */ -/*@only@*/ /*@null@*/ DIGEST_CTX sha1ctx; /*!< (dsa) sha1 hash context. */ -/*@only@*/ /*@null@*/ DIGEST_CTX hdrsha1ctx; /*!< (dsa) header sha1 hash context. */ -/*@only@*/ /*@null@*/ void * sha1; /*!< (dsa) V3 signature hash. */ size_t sha1len; /*!< (dsa) V3 signature hash length. */ -/*@only@*/ /*@null@*/ DIGEST_CTX md5ctx; /*!< (rsa) md5 hash context. */ -/*@only@*/ /*@null@*/ DIGEST_CTX hdrmd5ctx; /*!< (rsa) header md5 hash context. */ -/*@only@*/ /*@null@*/ void * md5; /*!< (rsa) V3 signature hash. */ size_t md5len; /*!< (rsa) V3 signature hash length. */ @@ -104,9 +96,7 @@ struct pgpDig_s { /** \ingroup rpmio */ typedef struct _FDSTACK_s { -/*@exposed@*/ FDIO_t io; -/*@dependent@*/ void * fp; int fdno; } FDSTACK_t; @@ -126,7 +116,7 @@ typedef enum fdOpX_e { /** \ingroup rpmio * Cumulative statistics for a descriptor. */ -typedef /*@abstract@*/ struct { +typedef struct { struct rpmop_s ops[FDSTAT_MAX]; /*!< Cumulative statistics. */ } * FDSTAT_t; @@ -141,7 +131,6 @@ typedef struct _FDDIGEST_s { * The FD_t File Handle data structure. */ struct _FD_s { -/*@refs@*/ int nrefs; int flags; #define RPMIO_DEBUG_IO 0x40000000 @@ -152,9 +141,7 @@ struct _FD_s { FDSTACK_t fps[8]; int urlType; /* ufdio: */ -/*@dependent@*/ void * url; /* ufdio: URL info */ -/*@relnull@*/ void * req; /* ufdio: HTTP request */ int rd_timeoutsecs; /* ufdRead: per FD_t timer */ @@ -164,7 +151,6 @@ struct _FD_s { int wr_chunked; /* ufdio: */ int syserrno; /* last system errno encountered */ -/*@observer@*/ const void *errcookie; /* gzdio/bzdio/ufdio: */ FDSTAT_t stats; /* I/O statistics */ @@ -178,34 +164,20 @@ struct _FD_s { long int fileSize; /* fadio: */ long int fd_cpioPos; /* cpio: */ }; -/*@access FD_t@*/ #define FDSANE(fd) assert(fd && fd->magic == FDMAGIC) -/*@-redecl@*/ -/*@unchecked@*/ extern int _rpmio_debug; -/*@=redecl@*/ -/*@-redecl@*/ -/*@unchecked@*/ extern int _av_debug; -/*@=redecl@*/ -/*@-redecl@*/ -/*@unchecked@*/ extern int _ftp_debug; -/*@=redecl@*/ -/*@-redecl@*/ -/*@unchecked@*/ extern int _dav_debug; -/*@=redecl@*/ #define DBG(_f, _m, _x) \ - /*@-modfilesys@*/ \ + \ if ((_rpmio_debug | ((_f) ? ((FD_t)(_f))->flags : 0)) & (_m)) fprintf _x \ - /*@=modfilesys@*/ #define DBGIO(_f, _x) DBG((_f), RPMIO_DEBUG_IO, _x) #define DBGREFS(_f, _x) DBG((_f), RPMIO_DEBUG_REFS, _x) @@ -216,134 +188,94 @@ extern "C" { /** \ingroup rpmio */ -int fdFgets(FD_t fd, char * buf, size_t len) - /*@globals errno, fileSystem @*/ - /*@modifies *buf, fd, errno, fileSystem @*/; +int fdFgets(FD_t fd, char * buf, size_t len); /** \ingroup rpmio */ -/*@null@*/ FD_t ftpOpen(const char *url, /*@unused@*/ int flags, - /*@unused@*/ mode_t mode, /*@out@*/ urlinfo *uret) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies *uret, fileSystem, internalState @*/; +FD_t ftpOpen(const char *url, int flags, + mode_t mode, urlinfo *uret); /** \ingroup rpmio */ -int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg) - /*@globals fileSystem, internalState @*/ - /*@modifies data, fileSystem, internalState @*/; +int ftpReq(FD_t data, const char * ftpCmd, const char * ftpArg); /** \ingroup rpmio */ -int ftpCmd(const char * cmd, const char * url, const char * arg2) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int ftpCmd(const char * cmd, const char * url, const char * arg2); /** \ingroup rpmio */ -int ufdClose( /*@only@*/ void * cookie) - /*@globals fileSystem, internalState @*/ - /*@modifies cookie, fileSystem, internalState @*/; +int ufdClose( void * cookie); /** \ingroup rpmio */ -/*@unused@*/ static inline -/*@null@*/ FDIO_t fdGetIo(FD_t fd) - /*@*/ +static inline +FDIO_t fdGetIo(FD_t fd) { FDSANE(fd); -/*@-boundsread@*/ return fd->fps[fd->nfps].io; -/*@=boundsread@*/ } /** \ingroup rpmio */ -/*@-nullstate@*/ /* FIX: io may be NULL */ -/*@unused@*/ static inline -void fdSetIo(FD_t fd, /*@kept@*/ /*@null@*/ FDIO_t io) - /*@modifies fd @*/ +/* FIX: io may be NULL */ +static inline +void fdSetIo(FD_t fd, FDIO_t io) { FDSANE(fd); -/*@-boundswrite@*/ - /*@-assignexpose@*/ fd->fps[fd->nfps].io = io; - /*@=assignexpose@*/ -/*@=boundswrite@*/ } -/*@=nullstate@*/ /** \ingroup rpmio */ -/*@unused@*/ static inline -/*@exposed@*/ /*@dependent@*/ /*@null@*/ FILE * fdGetFILE(FD_t fd) - /*@*/ +static inline +FILE * fdGetFILE(FD_t fd) { FDSANE(fd); -/*@-boundsread@*/ - /*@+voidabstract@*/ return ((FILE *)fd->fps[fd->nfps].fp); - /*@=voidabstract@*/ -/*@=boundsread@*/ } /** \ingroup rpmio */ -/*@unused@*/ static inline -/*@exposed@*/ /*@dependent@*/ /*@null@*/ void * fdGetFp(FD_t fd) - /*@*/ +static inline +void * fdGetFp(FD_t fd) { FDSANE(fd); -/*@-boundsread@*/ return fd->fps[fd->nfps].fp; -/*@=boundsread@*/ } /** \ingroup rpmio */ -/*@-nullstate@*/ /* FIX: fp may be NULL */ -/*@unused@*/ static inline -void fdSetFp(FD_t fd, /*@kept@*/ /*@null@*/ void * fp) - /*@modifies fd @*/ +/* FIX: fp may be NULL */ +static inline +void fdSetFp(FD_t fd, void * fp) { FDSANE(fd); -/*@-boundswrite@*/ - /*@-assignexpose@*/ fd->fps[fd->nfps].fp = fp; - /*@=assignexpose@*/ -/*@=boundswrite@*/ } -/*@=nullstate@*/ /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline int fdGetFdno(FD_t fd) - /*@*/ { FDSANE(fd); -/*@-boundsread@*/ return fd->fps[fd->nfps].fdno; -/*@=boundsread@*/ } /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline void fdSetFdno(FD_t fd, int fdno) - /*@modifies fd @*/ { FDSANE(fd); -/*@-boundswrite@*/ fd->fps[fd->nfps].fdno = fdno; -/*@=boundswrite@*/ } /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline void fdSetContentLength(FD_t fd, ssize_t contentLength) - /*@modifies fd @*/ { FDSANE(fd); fd->contentLength = fd->bytesRemain = contentLength; @@ -351,9 +283,8 @@ void fdSetContentLength(FD_t fd, ssize_t contentLength) /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline void fdPush(FD_t fd, FDIO_t io, void * fp, int fdno) - /*@modifies fd @*/ { FDSANE(fd); if (fd->nfps >= (sizeof(fd->fps)/sizeof(fd->fps[0]) - 1)) @@ -366,9 +297,8 @@ void fdPush(FD_t fd, FDIO_t io, void * fp, int fdno) /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline void fdPop(FD_t fd) - /*@modifies fd @*/ { FDSANE(fd); if (fd->nfps < 0) return; @@ -380,25 +310,20 @@ void fdPop(FD_t fd) /** \ingroup rpmio */ -/*@unused@*/ static inline /*@null@*/ -rpmop fdstat_op(/*@null@*/ FD_t fd, fdOpX opx) - /*@*/ +static inline +rpmop fdstat_op(FD_t fd, fdOpX opx) { rpmop op = NULL; -/*@-boundsread@*/ if (fd != NULL && fd->stats != NULL && opx >= 0 && opx < FDSTAT_MAX) op = fd->stats->ops + opx; -/*@=boundsread@*/ return op; } /** \ingroup rpmio */ -/*@unused@*/ static inline -void fdstat_enter(/*@null@*/ FD_t fd, int opx) - /*@globals internalState @*/ - /*@modifies internalState @*/ +static inline +void fdstat_enter(FD_t fd, int opx) { if (fd == NULL) return; if (fd->stats != NULL) @@ -407,10 +332,8 @@ void fdstat_enter(/*@null@*/ FD_t fd, int opx) /** \ingroup rpmio */ -/*@unused@*/ static inline -void fdstat_exit(/*@null@*/ FD_t fd, int opx, ssize_t rc) - /*@globals internalState @*/ - /*@modifies fd, internalState @*/ +static inline +void fdstat_exit(FD_t fd, int opx, ssize_t rc) { if (fd == NULL) return; if (rc == -1) @@ -430,11 +353,8 @@ void fdstat_exit(/*@null@*/ FD_t fd, int opx, ssize_t rc) /** \ingroup rpmio */ -/*@-boundsread@*/ -/*@unused@*/ static inline -void fdstat_print(/*@null@*/ FD_t fd, const char * msg, FILE * fp) - /*@globals fileSystem @*/ - /*@modifies *fp, fileSystem @*/ +static inline +void fdstat_print(FD_t fd, const char * msg, FILE * fp) { static int usec_scale = (1000*1000); int opx; @@ -449,40 +369,35 @@ void fdstat_print(/*@null@*/ FD_t fd, const char * msg, FILE * fp) fprintf(fp, "%8d reads, %8ld total bytes in %d.%06d secs\n", op->count, (long)op->bytes, (int)(op->usecs/usec_scale), (int)(op->usecs%usec_scale)); - /*@switchbreak@*/ break; + break; case FDSTAT_WRITE: if (msg) fprintf(fp, "%s:", msg); fprintf(fp, "%8d writes, %8ld total bytes in %d.%06d secs\n", op->count, (long)op->bytes, (int)(op->usecs/usec_scale), (int)(op->usecs%usec_scale)); - /*@switchbreak@*/ break; + break; case FDSTAT_SEEK: - /*@switchbreak@*/ break; + break; case FDSTAT_CLOSE: - /*@switchbreak@*/ break; + break; } } } -/*@=boundsread@*/ /** \ingroup rpmio */ -/*@unused@*/ static inline -void fdSetSyserrno(FD_t fd, int syserrno, /*@kept@*/ const void * errcookie) - /*@modifies fd @*/ +static inline +void fdSetSyserrno(FD_t fd, int syserrno, const void * errcookie) { FDSANE(fd); fd->syserrno = syserrno; - /*@-assignexpose@*/ fd->errcookie = errcookie; - /*@=assignexpose@*/ } /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline int fdGetRdTimeoutSecs(FD_t fd) - /*@*/ { FDSANE(fd); return fd->rd_timeoutsecs; @@ -490,9 +405,8 @@ int fdGetRdTimeoutSecs(FD_t fd) /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline long int fdGetCpioPos(FD_t fd) - /*@*/ { FDSANE(fd); return fd->fd_cpioPos; @@ -500,9 +414,8 @@ long int fdGetCpioPos(FD_t fd) /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline void fdSetCpioPos(FD_t fd, long int cpioPos) - /*@modifies fd @*/ { FDSANE(fd); fd->fd_cpioPos = cpioPos; @@ -510,24 +423,19 @@ void fdSetCpioPos(FD_t fd, long int cpioPos) /** \ingroup rpmio */ -/*@mayexit@*/ /*@unused@*/ static inline -FD_t c2f(/*@null@*/ void * cookie) - /*@*/ +static inline +FD_t c2f(void * cookie) { - /*@-castexpose@*/ FD_t fd = (FD_t) cookie; - /*@=castexpose@*/ FDSANE(fd); - /*@-refcounttrans -retalias@*/ return fd; /*@=refcounttrans =retalias@*/ + return fd; } /** \ingroup rpmio * Attach digest to fd. */ -/*@unused@*/ static inline +static inline void fdInitDigest(FD_t fd, pgpHashAlgo hashalgo, int flags) - /*@globals internalState @*/ - /*@modifies fd, internalState @*/ { FDDIGEST_t fddig = fd->digests + fd->ndigests; if (fddig != (fd->digests + FDDIGEST_MAX)) { @@ -542,10 +450,8 @@ void fdInitDigest(FD_t fd, pgpHashAlgo hashalgo, int flags) /** \ingroup rpmio * Update digest(s) attached to fd. */ -/*@unused@*/ static inline +static inline void fdUpdateDigests(FD_t fd, const unsigned char * buf, ssize_t buflen) - /*@globals internalState @*/ - /*@modifies fd, internalState @*/ { int i; @@ -562,13 +468,11 @@ void fdUpdateDigests(FD_t fd, const unsigned char * buf, ssize_t buflen) /** \ingroup rpmio */ -/*@unused@*/ static inline +static inline void fdFiniDigest(FD_t fd, pgpHashAlgo hashalgo, - /*@null@*/ /*@out@*/ void ** datap, - /*@null@*/ /*@out@*/ size_t * lenp, + void ** datap, + size_t * lenp, int asAscii) - /*@globals internalState @*/ - /*@modifies fd, *datap, *lenp, internalState @*/ { int imax = -1; int i; @@ -586,33 +490,26 @@ void fdFiniDigest(FD_t fd, pgpHashAlgo hashalgo, fddig->hashctx = NULL; break; } -/*@-boundswrite@*/ if (i < 0) { if (datap) *datap = NULL; if (lenp) *lenp = 0; } -/*@=boundswrite@*/ fd->ndigests = imax; if (i < imax) fd->ndigests++; /* convert index to count */ } -/*@-shadow@*/ /** \ingroup rpmio */ -/*@unused@*/ static inline -int fdFileno(/*@null@*/ void * cookie) - /*@*/ +static inline +int fdFileno(void * cookie) { FD_t fd; if (cookie == NULL) return -2; fd = c2f(cookie); -/*@-boundsread@*/ return fd->fps[0].fdno; -/*@=boundsread@*/ } -/*@=shadow@*/ /** * Read an entire file into a buffer. @@ -622,9 +519,7 @@ int fdFileno(/*@null@*/ void * cookie) * @return 0 on success */ int rpmioSlurp(const char * fn, - /*@out@*/ byte ** bp, /*@out@*/ ssize_t * blenp) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies *bp, *blenp, fileSystem, internalState @*/; + byte ** bp, ssize_t * blenp); #ifdef __cplusplus } diff --git a/rpmio/rpmlog.c b/rpmio/rpmlog.c index 2d8b0f226..0a8d9fd40 100644 --- a/rpmio/rpmlog.c +++ b/rpmio/rpmlog.c @@ -1,4 +1,3 @@ -/*@-boundsread@*/ /** \ingroup rpmio * \file rpmio/rpmlog.c */ @@ -20,20 +19,17 @@ # endif #endif -/*@access rpmlogRec @*/ -/*@unchecked@*/ static int nrecs = 0; -/*@unchecked@*/ -static /*@only@*/ /*@null@*/ rpmlogRec recs = NULL; +static rpmlogRec recs = NULL; /** * Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. * @param p memory to free * @retval NULL always */ -/*@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; @@ -59,7 +55,6 @@ const char * rpmlogMessage(void) return _("(no error)"); } -/*@-modfilesys@*/ void rpmlogPrint(FILE *f) { int i; @@ -74,11 +69,8 @@ void rpmlogPrint(FILE *f) fprintf(f, " %s", rec->message); } } -/*@=modfilesys@*/ void rpmlogClose (void) - /*@globals recs, nrecs @*/ - /*@modifies recs, nrecs @*/ { int i; @@ -91,22 +83,18 @@ void rpmlogClose (void) nrecs = 0; } -void rpmlogOpen (/*@unused@*/ const char *ident, /*@unused@*/ int option, - /*@unused@*/ int facility) +void rpmlogOpen (const char *ident, int option, + int facility) { } -/*@unchecked@*/ static unsigned rpmlogMask = RPMLOG_UPTO( RPMLOG_NOTICE ); #ifdef NOTYET -/*@unchecked@*/ -static /*@unused@*/ unsigned rpmlogFacility = RPMLOG_USER; +static unsigned rpmlogFacility = RPMLOG_USER; #endif int rpmlogSetMask (int mask) - /*@globals rpmlogMask @*/ - /*@modifies rpmlogMask @*/ { int omask = rpmlogMask; if (mask) @@ -114,24 +102,18 @@ int rpmlogSetMask (int mask) return omask; } -/*@unchecked@*/ -static /*@null@*/ rpmlogCallback _rpmlogCallback = NULL; +static rpmlogCallback _rpmlogCallback = NULL; rpmlogCallback rpmlogSetCallback(rpmlogCallback cb) - /*@globals _rpmlogCallback @*/ - /*@modifies _rpmlogCallback @*/ { rpmlogCallback ocb = _rpmlogCallback; _rpmlogCallback = cb; return ocb; } -/*@unchecked@*/ /*@null@*/ static FILE * _stdlog = NULL; FILE * rpmlogSetFile(FILE * fp) - /*@globals _stdlog @*/ - /*@modifies _stdlog @*/ { FILE * ofp = _stdlog; _stdlog = fp; @@ -139,7 +121,6 @@ FILE * rpmlogSetFile(FILE * fp) } /*@-readonlytrans@*/ /* FIX: double indirection. */ -/*@observer@*/ /*@unchecked@*/ static char *rpmlogMsgPrefix[] = { N_("fatal error: "),/*!< RPMLOG_EMERG */ N_("fatal error: "),/*!< RPMLOG_ALERT */ @@ -150,27 +131,23 @@ static char *rpmlogMsgPrefix[] = { "", /*!< RPMLOG_INFO */ "D: ", /*!< RPMLOG_DEBUG */ }; -/*@=readonlytrans@*/ #if !defined(HAVE_VSNPRINTF) -static inline int vsnprintf(char * buf, /*@unused@*/ int nb, +static inline int vsnprintf(char * buf, int nb, const char * fmt, va_list ap) { return vsprintf(buf, fmt, ap); } #endif -/*@-modfilesys@*/ -/*@-compmempass@*/ /* FIX: rpmlogMsgPrefix[] dependent, not unqualified */ -/*@-nullstate@*/ /* FIX: rpmlogMsgPrefix[] may be NULL */ +/* FIX: rpmlogMsgPrefix[] dependent, not unqualified */ +/* FIX: rpmlogMsgPrefix[] may be NULL */ static void vrpmlog (unsigned code, const char *fmt, va_list ap) - /*@globals nrecs, recs, internalState @*/ - /*@modifies nrecs, recs, internalState @*/ { unsigned pri = RPMLOG_PRI(code); unsigned mask = RPMLOG_MASK(pri); #ifdef NOTYET - /*@unused@*/ unsigned fac = RPMLOG_FAC(code); + unsigned fac = RPMLOG_FAC(code); #endif char *msgbuf, *msg; int msgnb = BUFSIZ, nb; @@ -179,14 +156,13 @@ static void vrpmlog (unsigned code, const char *fmt, va_list ap) if ((mask & rpmlogMask) == 0) return; -/*@-boundswrite@*/ msgbuf = xmalloc(msgnb); *msgbuf = '\0'; /* Allocate a sufficently large buffer for output. */ while (1) { va_list apc; - /*@-sysunrecog -usedef@*/ va_copy(apc, ap); /*@=sysunrecog =usedef@*/ + va_copy(apc, ap); nb = vsnprintf(msgbuf, msgnb, fmt, apc); if (nb > -1 && nb < msgnb) break; @@ -195,15 +171,12 @@ static void vrpmlog (unsigned code, const char *fmt, va_list ap) else /* glibc 2.0 */ msgnb *= 2; msgbuf = xrealloc(msgbuf, msgnb); -/*@-mods@*/ va_end(apc); -/*@=mods@*/ } msgbuf[msgnb - 1] = '\0'; msg = msgbuf; /* Save copy of all messages at warning (or below == "more important"). */ - /*@-branchstate@*/ if (pri <= RPMLOG_WARNING) { if (recs == NULL) @@ -218,14 +191,11 @@ static void vrpmlog (unsigned code, const char *fmt, va_list ap) ++nrecs; if (_rpmlogCallback) { - /*@-noeffectuncon@*/ /* FIX: useless callback */ + /* FIX: useless callback */ _rpmlogCallback(); - /*@=noeffectuncon@*/ return; /* XXX Preserve legacy rpmError behavior. */ } } - /*@=branchstate@*/ -/*@=boundswrite@*/ /* rpmMessage behavior */ @@ -253,17 +223,14 @@ static void vrpmlog (unsigned code, const char *fmt, va_list ap) if (pri <= RPMLOG_CRIT) exit(EXIT_FAILURE); } -/*@=compmempass =nullstate@*/ -/*@=modfilesys@*/ void rpmlog (int code, const char *fmt, ...) { va_list ap; va_start(ap, fmt); - /*@-internalglobs@*/ /* FIX: shrug */ + /* FIX: shrug */ vrpmlog(code, fmt, ap); - /*@=internalglobs@*/ va_end(ap); } @@ -281,4 +248,3 @@ rpmlogCallback rpmErrorSetCallback(rpmlogCallback cb) { return rpmlogSetCallback(cb); } -/*@=boundsread@*/ diff --git a/rpmio/rpmlog.h b/rpmio/rpmlog.h index d9d01a409..624a7e7f0 100644 --- a/rpmio/rpmlog.h +++ b/rpmio/rpmlog.h @@ -19,7 +19,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 +29,6 @@ typedef enum rpmlogLvl_e { RPMLOG_INFO = 6, /*!< informational */ RPMLOG_DEBUG = 7 /*!< debug-level messages */ } rpmlogLvl; -/*@=typeuse@*/ #define RPMLOG_PRIMASK 0x07 /* mask to extract priority part (internal) */ /* extract priority */ @@ -67,7 +65,6 @@ RPMCODE rpmprioritynames[] = /** * facility codes */ -/*@-enummemuse -typeuse@*/ typedef enum rpmlogFac_e { RPMLOG_KERN = (0<<3), /*!< kernel messages */ RPMLOG_USER = (1<<3), /*!< random user-level messages */ @@ -95,7 +92,6 @@ typedef enum rpmlogFac_e { #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) @@ -156,9 +152,8 @@ typedef void (*rpmlogCallback) (void); /** */ -typedef /*@abstract@*/ struct rpmlogRec_s { +typedef struct rpmlogRec_s { int code; -/*@owned@*/ /*@null@*/ const char * message; } * rpmlogRec; @@ -170,57 +165,43 @@ extern "C" { * Return number of rpmError() ressages. * @return number of messages */ -int rpmlogGetNrecs(void) /*@*/; +int rpmlogGetNrecs(void) ; /** * 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) - /*@globals internalState@*/ - /*@modifies internalState @*/; +void rpmlogOpen (const char * ident, int option, int facility); /** * 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. */ -/*@mayexit@*/ /*@printflike@*/ void rpmlog (int code, const char *fmt, ...) - /*@*/; +void rpmlog (int code, const char *fmt, ...); -/*@-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. @@ -229,53 +210,41 @@ int rpmlogSetMask (int mask) * and parsed IMHO. * @return code from last message */ -int rpmlogCode(void) - /*@*/; +int rpmlogCode(void); /** * Set rpmlog callback function. * @param cb rpmlog callback function * @return previous rpmlog callback function */ -rpmlogCallback rpmlogSetCallback(rpmlogCallback cb) - /*@globals internalState@*/ - /*@modifies internalState @*/; +rpmlogCallback rpmlogSetCallback(rpmlogCallback cb); /** * 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); /** * Set rpmlog callback function. * @deprecated gnorpm needs, use rpmlogSetCallback() instead. */ -extern rpmlogCallback rpmErrorSetCallback(rpmlogCallback cb) - /*@globals internalState@*/ - /*@modifies internalState @*/; +extern rpmlogCallback rpmErrorSetCallback(rpmlogCallback cb); /** * Return error code from last rpmError() message. * @deprecated Perl-RPM needs, use rpmlogCode() instead. * @return code from last message */ -extern int rpmErrorCode(void) - /*@*/; +extern int rpmErrorCode(void); /** * Return text of last rpmError() message. * @deprecated gnorpm needs, use rpmlogMessage() instead. * @return text of last message */ -/*@-redecl@*/ -/*@observer@*/ /*@null@*/ extern const char * rpmErrorString(void) /*@*/; -/*@=redecl@*/ +extern const char * rpmErrorString(void) ; #ifdef __cplusplus } diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c index 363216ef0..342c2cda3 100644 --- a/rpmio/rpmlua.c +++ b/rpmio/rpmlua.c @@ -1,4 +1,3 @@ -/*@-bounds -realcompare -sizeoftype -protoparammatch @*/ #include "system.h" #ifdef WITH_LUA @@ -23,7 +22,7 @@ #include "debug.h" #if !defined(HAVE_VSNPRINTF) -static inline int vsnprintf(char * buf, /*@unused@*/ int nb, +static inline int vsnprintf(char * buf, int nb, const char * fmt, va_list ap) { return vsprintf(buf, fmt, ap); @@ -33,27 +32,22 @@ static inline int vsnprintf(char * buf, /*@unused@*/ int nb, #define INITSTATE(_lua, lua) \ rpmlua lua = _lua ? _lua : \ (globalLuaState ? globalLuaState : \ - /*@-mods@*/ \ + \ (globalLuaState = rpmluaNew()) \ - /*@=mods@*/ \ + \ ) -/*@only@*/ /*@unchecked@*/ /*@null@*/ static rpmlua globalLuaState = NULL; -static int luaopen_rpm(lua_State *L) - /*@modifies L @*/; -static int rpm_print(lua_State *L) - /*@globals fileSystem @*/ - /*@modifies L, fileSystem @*/; +static int luaopen_rpm(lua_State *L); +static int rpm_print(lua_State *L); rpmlua rpmluaNew() { rpmlua lua = (rpmlua) xcalloc(1, sizeof(*lua)); lua_State *L = lua_open(); struct stat st; - /*@-readonlytrans@*/ - /*@observer@*/ /*@unchecked@*/ + static const luaL_reg lualibs[] = { {"base", luaopen_base}, {"table", luaopen_table}, @@ -66,15 +60,12 @@ rpmlua rpmluaNew() {"rpm", luaopen_rpm}, {NULL, NULL}, }; - /*@observer@*/ /*@unchecked@*/ + const luaL_reg *lib = lualibs; - /*@=readonlytrans@*/ lua->L = L; for (; lib->name; lib++) { -/*@-noeffectuncon@*/ (void) lib->func(L); -/*@=noeffectuncon@*/ lua_settop(L, 0); } lua_pushliteral(L, "LUA_PATH"); @@ -114,17 +105,14 @@ void rpmluaSetData(rpmlua _lua, const char *key, const void *data) } static void *getdata(lua_State *L, const char *key) - /*@modifies L @*/ { void *ret = NULL; lua_pushliteral(L, "rpm_"); lua_pushstring(L, key); lua_concat(L, 2); lua_rawget(L, LUA_REGISTRYINDEX); -/*@-branchstate@*/ if (lua_islightuserdata(L, -1)) ret = lua_touserdata(L, -1); -/*@=branchstate@*/ lua_pop(L, 1); return ret; } @@ -151,7 +139,6 @@ const char *rpmluaGetPrintBuffer(rpmlua _lua) } static int pushvar(lua_State *L, rpmluavType type, void *value) - /*@modifies L @*/ { int ret = 0; switch (type) { @@ -197,14 +184,11 @@ void rpmluaSetVar(rpmlua _lua, rpmluav var) } static void popvar(lua_State *L, rpmluavType *type, void *value) - /*@modifies L, *type, *value @*/ { switch (lua_type(L, -1)) { case LUA_TSTRING: *type = RPMLUAV_STRING; -/*@-observertrans -dependenttrans @*/ *((const char **)value) = lua_tostring(L, -1); -/*@=observertrans =dependenttrans @*/ break; case LUA_TNUMBER: *type = RPMLUAV_NUMBER; @@ -242,7 +226,6 @@ void rpmluaGetVar(rpmlua _lua, rpmluav var) #define FINDKEY_CREATE 1 #define FINDKEY_REMOVE 2 static int findkey(lua_State *L, int oper, const char *key, va_list va) - /*@modifies L @*/ { char buf[BUFSIZ]; const char *s, *e; @@ -260,13 +243,12 @@ static int findkey(lua_State *L, int oper, const char *key, va_list va) lua_pushnil(L); lua_rawset(L, -3); lua_pop(L, 1); - /*@switchbreak@*/ break; + break; } - /*@fallthrough@*/ case FINDKEY_RETURN: lua_rawget(L, -2); lua_remove(L, -2); - /*@switchbreak@*/ break; + break; case FINDKEY_CREATE: lua_rawget(L, -2); if (!lua_istable(L, -1)) { @@ -277,7 +259,7 @@ static int findkey(lua_State *L, int oper, const char *key, va_list va) lua_rawset(L, -4); } lua_remove(L, -2); - /*@switchbreak@*/ break; + break; } } if (*e == '\0') @@ -359,7 +341,6 @@ void rpmluavSetListMode(rpmluav var, int flag) void rpmluavSetKey(rpmluav var, rpmluavType type, const void *value) { var->keyType = type; -/*@-assignexpose -branchstate -temptrans @*/ switch (type) { case RPMLUAV_NUMBER: var->key.num = *((double *)value); @@ -370,13 +351,11 @@ void rpmluavSetKey(rpmluav var, rpmluavType type, const void *value) default: break; } -/*@=assignexpose =branchstate =temptrans @*/ } void rpmluavSetValue(rpmluav var, rpmluavType type, const void *value) { var->valueType = type; -/*@-assignexpose -branchstate -temptrans @*/ switch (type) { case RPMLUAV_NUMBER: var->value.num = *((const double *)value); @@ -387,13 +366,11 @@ void rpmluavSetValue(rpmluav var, rpmluavType type, const void *value) default: break; } -/*@=assignexpose =branchstate =temptrans @*/ } void rpmluavGetKey(rpmluav var, rpmluavType *type, void **value) { *type = var->keyType; -/*@-onlytrans@*/ switch (var->keyType) { case RPMLUAV_NUMBER: *((double **)value) = &var->key.num; @@ -404,13 +381,11 @@ void rpmluavGetKey(rpmluav var, rpmluavType *type, void **value) default: break; } -/*@=onlytrans@*/ } void rpmluavGetValue(rpmluav var, rpmluavType *type, void **value) { *type = var->valueType; -/*@-onlytrans@*/ switch (var->valueType) { case RPMLUAV_NUMBER: *((double **)value) = &var->value.num; @@ -421,7 +396,6 @@ void rpmluavGetValue(rpmluav var, rpmluavType *type, void **value) default: break; } -/*@=onlytrans@*/ } void rpmluavSetKeyNum(rpmluav var, double value) @@ -469,10 +443,8 @@ int rpmluaCheckScript(rpmlua _lua, const char *script, const char *name) INITSTATE(_lua, lua); lua_State *L = lua->L; int ret = 0; -/*@-branchstate@*/ if (name == NULL) name = "<lua>"; -/*@=branchstate@*/ if (luaL_loadbuffer(L, script, strlen(script), name) != 0) { rpmError(RPMERR_SCRIPT, _("invalid syntax in lua scriptlet: %s\n"), @@ -488,10 +460,8 @@ int rpmluaRunScript(rpmlua _lua, const char *script, const char *name) INITSTATE(_lua, lua); lua_State *L = lua->L; int ret = 0; -/*@-branchstate@*/ if (name == NULL) name = "<lua>"; -/*@=branchstate@*/ if (luaL_loadbuffer(L, script, strlen(script), name) != 0) { rpmError(RPMERR_SCRIPT, _("invalid syntax in lua script: %s\n"), lua_tostring(L, -1)); @@ -527,8 +497,6 @@ int rpmluaRunScriptFile(rpmlua _lua, const char *filename) /* From lua.c */ static int rpmluaReadline(lua_State *L, const char *prompt) - /*@globals fileSystem @*/ - /*@modifies L, fileSystem @*/ { static char buffer[1024]; if (prompt) { @@ -545,8 +513,6 @@ static int rpmluaReadline(lua_State *L, const char *prompt) /* Based on lua.c */ static void _rpmluaInteractive(lua_State *L) - /*@globals fileSystem @*/ - /*@modifies L, fileSystem @*/ { (void) fputs("\n", stdout); printf("RPM Interactive %s Interpreter\n", LUA_VERSION); @@ -556,25 +522,21 @@ static void _rpmluaInteractive(lua_State *L) if (rpmluaReadline(L, "> ") == 0) break; if (lua_tostring(L, -1)[0] == '=') { -/*@-evalorder@*/ (void) lua_pushfstring(L, "print(%s)", lua_tostring(L, -1)+1); -/*@=evalorder@*/ lua_remove(L, -2); } for (;;) { -/*@-evalorder@*/ rc = luaL_loadbuffer(L, lua_tostring(L, -1), lua_strlen(L, -1), "<lua>"); -/*@=evalorder@*/ if (rc == LUA_ERRSYNTAX && strstr(lua_tostring(L, -1), "near `<eof>'") != NULL) { if (rpmluaReadline(L, ">> ") == 0) - /*@innerbreak@*/ break; + break; lua_remove(L, -2); /* Remove error */ lua_concat(L, 2); - /*@innercontinue@*/ continue; + continue; } - /*@innerbreak@*/ break; + break; } if (rc == 0) rc = lua_pcall(L, 0, 0, 0); @@ -587,20 +549,16 @@ static void _rpmluaInteractive(lua_State *L) (void) fputs("\n", stdout); } -/*@-mods@*/ void rpmluaInteractive(rpmlua _lua) { INITSTATE(_lua, lua); _rpmluaInteractive(lua->L); } -/*@=mods@*/ /* ------------------------------------------------------------------ */ /* Lua API */ static int rpm_expand(lua_State *L) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies L, rpmGlobalMacroContext @*/ { const char *str = luaL_checkstring(L, 1); lua_pushstring(L, rpmExpand(str, NULL)); @@ -608,8 +566,6 @@ static int rpm_expand(lua_State *L) } static int rpm_define(lua_State *L) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies L, rpmGlobalMacroContext @*/ { const char *str = luaL_checkstring(L, 1); (void) rpmDefineMacro(NULL, str, 0); @@ -617,22 +573,18 @@ static int rpm_define(lua_State *L) } static int rpm_interactive(lua_State *L) - /*@globals fileSystem @*/ - /*@modifies L, fileSystem @*/ { _rpmluaInteractive(L); return 0; } typedef struct rpmluaHookData_s { -/*@shared@*/ lua_State *L; int funcRef; int dataRef; } * rpmluaHookData; static int rpmluaHookWrapper(rpmhookArgs args, void *data) - /*@*/ { rpmluaHookData hookdata = (rpmluaHookData)data; lua_State *L = hookdata->L; @@ -645,23 +597,23 @@ static int rpmluaHookWrapper(rpmhookArgs args, void *data) case 's': lua_pushstring(L, args->argv[i].s); lua_rawseti(L, -2, i+1); - /*@switchbreak@*/ break; + break; case 'i': lua_pushnumber(L, (lua_Number)args->argv[i].i); lua_rawseti(L, -2, i+1); - /*@switchbreak@*/ break; + break; case 'f': lua_pushnumber(L, (lua_Number)args->argv[i].f); lua_rawseti(L, -2, i+1); - /*@switchbreak@*/ break; + break; case 'p': lua_pushlightuserdata(L, args->argv[i].p); lua_rawseti(L, -2, i+1); - /*@switchbreak@*/ break; + break; default: (void) luaL_error(L, "unsupported type '%c' as " "a hook argument\n", args->argt[i]); - /*@switchbreak@*/ break; + break; } } if (lua_pcall(L, 1, 1, 0) != 0) { @@ -677,8 +629,6 @@ static int rpmluaHookWrapper(rpmhookArgs args, void *data) } static int rpm_register(lua_State *L) - /*@globals internalState @*/ - /*@modifies L, internalState @*/ { if (!lua_isstring(L, 1)) { (void) luaL_argerror(L, 1, "hook name expected"); @@ -691,9 +641,7 @@ static int rpm_register(lua_State *L) hookdata->dataRef = luaL_ref(L, LUA_REGISTRYINDEX); lua_pushvalue(L, 2); hookdata->funcRef = luaL_ref(L, LUA_REGISTRYINDEX); -/*@-temptrans@*/ hookdata->L = L; -/*@=temptrans@*/ rpmhookRegister(lua_tostring(L, 1), rpmluaHookWrapper, hookdata); return 1; } @@ -701,7 +649,6 @@ static int rpm_register(lua_State *L) } static int rpm_unregister(lua_State *L) - /*@modifies L @*/ { if (!lua_isstring(L, 1)) { (void) luaL_argerror(L, 1, "hook name expected"); @@ -717,8 +664,6 @@ static int rpm_unregister(lua_State *L) } static int rpm_call(lua_State *L) - /*@globals internalState @*/ - /*@modifies L, internalState @*/ { if (!lua_isstring(L, 1)) { (void) luaL_argerror(L, 1, "hook name expected"); @@ -732,10 +677,9 @@ static int rpm_call(lua_State *L) case LUA_TNIL: argt[i] = 'p'; args->argv[i].p = NULL; - /*@switchbreak@*/ break; + break; case LUA_TNUMBER: { float f = (float)lua_tonumber(L, i+1); -/*@+relaxtypes@*/ if (f == (int)f) { argt[i] = 'i'; args->argv[i].i = (int)f; @@ -743,38 +687,33 @@ static int rpm_call(lua_State *L) argt[i] = 'f'; args->argv[i].f = f; } -/*@=relaxtypes@*/ - } /*@switchbreak@*/ break; + } break; case LUA_TSTRING: argt[i] = 's'; args->argv[i].s = lua_tostring(L, i+1); - /*@switchbreak@*/ break; + break; case LUA_TUSERDATA: case LUA_TLIGHTUSERDATA: argt[i] = 'p'; args->argv[i].p = lua_touserdata(L, i+1); - /*@switchbreak@*/ break; + break; default: (void) luaL_error(L, "unsupported Lua type passed to hook"); argt[i] = 'p'; args->argv[i].p = NULL; - /*@switchbreak@*/ break; + break; } } -/*@-compdef -kepttrans -usereleased @*/ args->argt = argt; rpmhookCallArgs(name, args); free(argt); (void) rpmhookArgsFree(args); -/*@=compdef =kepttrans =usereleased @*/ } return 0; } /* Based on luaB_print. */ static int rpm_print (lua_State *L) - /*@globals fileSystem @*/ - /*@modifies L, fileSystem @*/ { rpmlua lua = (rpmlua)getdata(L, "lua"); int n = lua_gettop(L); /* number of arguments */ @@ -820,8 +759,6 @@ static int rpm_print (lua_State *L) return 0; } -/*@-readonlytrans@*/ -/*@observer@*/ /*@unchecked@*/ static const luaL_reg rpmlib[] = { {"expand", rpm_expand}, {"define", rpm_define}, @@ -831,10 +768,8 @@ static const luaL_reg rpmlib[] = { {"interactive", rpm_interactive}, {NULL, NULL} }; -/*@=readonlytrans@*/ static int luaopen_rpm(lua_State *L) - /*@modifies L @*/ { lua_pushvalue(L, LUA_GLOBALSINDEX); luaL_openlib(L, "rpm", rpmlib, 0); @@ -842,4 +777,3 @@ static int luaopen_rpm(lua_State *L) } #endif /* WITH_LUA */ -/*@=bounds =realcompare =sizeoftype =protoparammatch @*/ diff --git a/rpmio/rpmlua.h b/rpmio/rpmlua.h index 7f6f376af..02d97ab66 100644 --- a/rpmio/rpmlua.h +++ b/rpmio/rpmlua.h @@ -39,107 +39,46 @@ struct rpmluav_s { #endif /* _RPMLUA_INTERNAL */ -typedef /*@abstract@*/ struct rpmlua_s * rpmlua; -typedef /*@abstract@*/ struct rpmluav_s * rpmluav; +typedef struct rpmlua_s * rpmlua; +typedef struct rpmluav_s * rpmluav; -/*@-exportlocal@*/ -/*@only@*/ -rpmlua rpmluaNew(void) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; -/*@=exportlocal@*/ -void *rpmluaFree(/*@only@*/ rpmlua lua) - /*@modifies lua @*/; +rpmlua rpmluaNew(void); +void *rpmluaFree(rpmlua lua); -int rpmluaCheckScript(/*@null@*/ rpmlua lua, const char *script, - /*@null@*/ const char *name) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -int rpmluaRunScript(/*@null@*/ rpmlua lua, const char *script, - /*@null@*/ const char *name) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -/*@-exportlocal@*/ -int rpmluaRunScriptFile(/*@null@*/ rpmlua lua, const char *filename) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -/*@=exportlocal@*/ -void rpmluaInteractive(/*@null@*/ rpmlua lua) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; +int rpmluaCheckScript(rpmlua lua, const char *script, + const char *name); +int rpmluaRunScript(rpmlua lua, const char *script, + const char *name); +int rpmluaRunScriptFile(rpmlua lua, const char *filename); +void rpmluaInteractive(rpmlua lua); -void *rpmluaGetData(/*@null@*/ rpmlua lua, const char *key) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -/*@-exportlocal@*/ -void rpmluaSetData(/*@null@*/ rpmlua lua, const char *key, const void *data) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -/*@=exportlocal@*/ +void *rpmluaGetData(rpmlua lua, const char *key); +void rpmluaSetData(rpmlua lua, const char *key, const void *data); -/*@exposed@*/ -const char *rpmluaGetPrintBuffer(/*@null@*/ rpmlua lua) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -void rpmluaSetPrintBuffer(/*@null@*/ rpmlua lua, int flag) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; +const char *rpmluaGetPrintBuffer(rpmlua lua); +void rpmluaSetPrintBuffer(rpmlua lua, int flag); -void rpmluaGetVar(/*@null@*/ rpmlua lua, rpmluav var) - /*@globals fileSystem @*/ - /*@modifies lua, var, fileSystem @*/; -void rpmluaSetVar(/*@null@*/ rpmlua lua, rpmluav var) - /*@globals fileSystem @*/ - /*@modifies lua, var, fileSystem @*/; -void rpmluaDelVar(/*@null@*/ rpmlua lua, const char *key, ...) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -int rpmluaVarExists(/*@null@*/ rpmlua lua, const char *key, ...) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -void rpmluaPushTable(/*@null@*/ rpmlua lua, const char *key, ...) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; -void rpmluaPop(/*@null@*/ rpmlua lua) - /*@globals fileSystem @*/ - /*@modifies lua, fileSystem @*/; +void rpmluaGetVar(rpmlua lua, rpmluav var); +void rpmluaSetVar(rpmlua lua, rpmluav var); +void rpmluaDelVar(rpmlua lua, const char *key, ...); +int rpmluaVarExists(rpmlua lua, const char *key, ...); +void rpmluaPushTable(rpmlua lua, const char *key, ...); +void rpmluaPop(rpmlua lua); -/*@only@*/ -rpmluav rpmluavNew(void) - /*@*/; -void * rpmluavFree(/*@only@*/ rpmluav var) - /*@modifes var @*/; -void rpmluavSetListMode(rpmluav var, int flag) - /*@modifies var @*/; -/*@-exportlocal@*/ -void rpmluavSetKey(rpmluav var, rpmluavType type, const void *value) - /*@modifies var @*/; -/*@=exportlocal@*/ -/*@-exportlocal@*/ -void rpmluavSetValue(rpmluav var, rpmluavType type, const void *value) - /*@modifies var @*/; -/*@=exportlocal@*/ -/*@-exportlocal@*/ -void rpmluavGetKey(rpmluav var, /*@out@*/ rpmluavType *type, /*@out@*/ void **value) - /*@modifies *type, *value @*/; -/*@=exportlocal@*/ -/*@-exportlocal@*/ -void rpmluavGetValue(rpmluav var, /*@out@*/ rpmluavType *type, /*@out@*/ void **value) - /*@modifies *type, *value @*/; -/*@=exportlocal@*/ +rpmluav rpmluavNew(void); +void * rpmluavFree(rpmluav var); +void rpmluavSetListMode(rpmluav var, int flag); +void rpmluavSetKey(rpmluav var, rpmluavType type, const void *value); +void rpmluavSetValue(rpmluav var, rpmluavType type, const void *value); +void rpmluavGetKey(rpmluav var, rpmluavType *type, void **value); +void rpmluavGetValue(rpmluav var, rpmluavType *type, void **value); /* Optional helpers for numbers. */ -void rpmluavSetKeyNum(rpmluav var, double value) - /*@modifies var @*/; -void rpmluavSetValueNum(rpmluav var, double value) - /*@modifies var @*/; -double rpmluavGetKeyNum(rpmluav var) - /*@*/; -double rpmluavGetValueNum(rpmluav var) - /*@*/; -int rpmluavKeyIsNum(rpmluav var) - /*@*/; -int rpmluavValueIsNum(rpmluav var) - /*@*/; +void rpmluavSetKeyNum(rpmluav var, double value); +void rpmluavSetValueNum(rpmluav var, double value); +double rpmluavGetKeyNum(rpmluav var); +double rpmluavGetValueNum(rpmluav var); +int rpmluavKeyIsNum(rpmluav var); +int rpmluavValueIsNum(rpmluav var); #endif /* RPMLUA_H */ diff --git a/rpmio/rpmmacro.h b/rpmio/rpmmacro.h index 737a3d0b5..d6d8312df 100644 --- a/rpmio/rpmmacro.h +++ b/rpmio/rpmmacro.h @@ -6,7 +6,7 @@ */ /*! The structure used to store a macro. */ -typedef /*@abstract@*/ struct MacroEntry_s { +typedef struct MacroEntry_s { struct MacroEntry_s *prev;/*!< Macro entry stack. */ const char *name; /*!< Macro name. */ const char *opts; /*!< Macro parameters (a la getopt) */ @@ -16,29 +16,22 @@ typedef /*@abstract@*/ struct MacroEntry_s { } * MacroEntry; /*! The structure used to store the set of macros in a context. */ -typedef /*@abstract@*/ struct MacroContext_s { -/*@owned@*//*@null@*/ MacroEntry *macroTable; /*!< Macro entry table for context. */ +typedef struct MacroContext_s { +/*@owned@*/MacroEntry *macroTable; /*!< Macro entry table for context. */ int macrosAllocated;/*!< No. of allocated macros. */ int firstFree; /*!< No. of macros. */ } * MacroContext; -/*@-redecl@*/ -/*@checked@*/ extern MacroContext rpmGlobalMacroContext; -/*@checked@*/ extern MacroContext rpmCLIMacroContext; -/*@=redecl@*/ /** \ingroup rpmrc * List of macro files to read when configuring rpm. * 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 '//'. */ -/*@-redecl@*/ -/*@observer@*/ /*@checked@*/ extern const char * macrofiles; -/*@=redecl@*/ /** * Markers for sources of macros added throughout rpm. @@ -62,10 +55,8 @@ extern "C" { * @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 URL path(s) from a (URL prefixed) pattern glob. @@ -74,10 +65,8 @@ void rpmDumpMacroTable (/*@null@*/ MacroContext mc, * @retval *argvPtr array of paths (malloc'd contiguous blob) * @return 0 on success */ -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. @@ -89,11 +78,9 @@ int rpmGlob(const char * patterns, /*@out@*/ int * argcPtr, * @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 @*/ - /*@modifies *sbuf, rpmGlobalMacroContext, fileSystem @*/; +int expandMacros (void * spec, MacroContext mc, + char * sbuf, + size_t slen); /** * Add macro to context. @@ -104,20 +91,16 @@ int expandMacros (/*@null@*/ void * spec, /*@null@*/ MacroContext mc, * @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 @*/ - /*@modifies mc, rpmGlobalMacroContext @*/; +void addMacro (MacroContext mc, const char * n, + const char * o, + const char * b, int level); /** * Delete macro from context. * @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. @@ -126,47 +109,41 @@ void delMacro (/*@null@*/ MacroContext mc, const char * n) * @param level macro recursion level (0 is entry API) * @return @todo Document. */ -int rpmDefineMacro (/*@null@*/ MacroContext mc, const char * macro, - int level) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies mc, rpmGlobalMacroContext @*/; +int rpmDefineMacro (MacroContext mc, const char * macro, + int level); /** * 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 @*/ - /*@modifies rpmGlobalMacroContext @*/; +void rpmLoadMacros (MacroContext mc, int level); /** * Load macro context from a macro file. * @param mc (unused) * @param fn macro file name */ -int rpmLoadMacroFile(/*@null@*/ MacroContext mc, const char * fn) +int rpmLoadMacroFile(MacroContext mc, const char * fn) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ - /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/; +; /** * 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) +void rpmInitMacros (MacroContext mc, const char * macrofiles) /*@globals rpmGlobalMacroContext, rpmCLIMacroContext, h_errno, fileSystem, internalState @*/ - /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/; +; /** * 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 */ @@ -182,38 +159,29 @@ typedef enum rpmCompressedMagic_e { * @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 @*/; + 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, ...) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies rpmGlobalMacroContext @*/; +char * rpmExpand (const char * arg, ...); /** * Canonicalize file path. * @param path path to canonicalize (in-place) * @return canonicalized path (malloc'ed) */ -/*@null@*/ -char * rpmCleanPath (/*@returned@*/ /*@null@*/ char * path) - /*@modifies *path @*/; +char * rpmCleanPath (char * path); /** * Return (malloc'ed) expanded, canonicalized, file path. * @param path macro(s) to expand (NULL terminates list) * @return canonicalized path (malloc'ed) */ -/*@-redecl@*/ /* LCL: shrug */ -const char * rpmGetPath (/*@null@*/ const char * path, ...) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies rpmGlobalMacroContext @*/; -/*@=redecl@*/ +/* LCL: shrug */ +const char * rpmGetPath (const char * path, ...); /** * Merge 3 args into path, any or all of which may be a url. @@ -225,13 +193,10 @@ const char * rpmGetPath (/*@null@*/ const char * path, ...) * @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 @*/ - /*@modifies rpmGlobalMacroContext @*/; -/*@=redecl@*/ +/* LCL: shrug */ +const char * rpmGenPath (const char * urlroot, + const char * urlmdir, + const char * urlfile); /** * Return macro expansion as a numeric value. @@ -240,9 +205,7 @@ const char * rpmGenPath (/*@null@*/ const char * urlroot, * @param arg macro to expand * @return numeric value */ -int rpmExpandNumeric (const char * arg) - /*@globals rpmGlobalMacroContext, h_errno @*/ - /*@modifies rpmGlobalMacroContext @*/; +int rpmExpandNumeric (const char * arg); #ifdef __cplusplus } diff --git a/rpmio/rpmmalloc.c b/rpmio/rpmmalloc.c index 362463c28..eee46606b 100644 --- a/rpmio/rpmmalloc.c +++ b/rpmio/rpmmalloc.c @@ -9,19 +9,16 @@ #define EXIT_FAILURE 1 #endif -/*@-modfilesys@*/ -/*@only@*/ void *vmefail(size_t size) +void *vmefail(size_t size) { fprintf(stderr, _("memory alloc (%u bytes) returned NULL.\n"), (unsigned)size); exit(EXIT_FAILURE); - /*@notreached@*/ return NULL; } -/*@=modfilesys@*/ #if !(HAVE_MCHECK_H && defined(__GNUC__)) -/*@out@*/ /*@only@*/ void * xmalloc (size_t size) +void * xmalloc (size_t size) { register void *value; if (size == 0) size++; @@ -31,7 +28,7 @@ return value; } -/*@only@*/ void * xcalloc (size_t nmemb, size_t size) +void * xcalloc (size_t nmemb, size_t size) { register void *value; if (size == 0) size++; @@ -42,7 +39,7 @@ return value; } -/*@only@*/ void * xrealloc (/*@only@*/ void *ptr, size_t size) +void * xrealloc (void *ptr, size_t size) { register void *value; if (size == 0) size++; @@ -52,7 +49,7 @@ return value; } -/*@only@*/ char * xstrdup (const char *str) +char * xstrdup (const char *str) { size_t size = strlen(str) + 1; char *newstr = (char *) malloc (size); diff --git a/rpmio/rpmmessages.h b/rpmio/rpmmessages.h index 5bad9a64f..6f52e2da6 100644 --- a/rpmio/rpmmessages.h +++ b/rpmio/rpmmessages.h @@ -31,9 +31,8 @@ #define rpmIsDebug() \ (rpmlogSetMask(0) >= RPMLOG_MASK( RPMMESS_DEBUG )) -/*@-redef@*/ /* LCL: ??? */ -typedef /*@abstract@*/ const void * fnpyKey; -/*@=redef@*/ +/* LCL: ??? */ +typedef const void * fnpyKey; /** * Bit(s) to identify progress callbacks. @@ -68,18 +67,15 @@ extern "C" { /** */ typedef void * (*rpmCallbackFunction) - (/*@null@*/ const void * h, + (const void * h, const rpmCallbackType what, const unsigned long amount, const unsigned long total, - /*@null@*/ fnpyKey key, - /*@null@*/ rpmCallbackData data) - /*@globals internalState@*/ - /*@modifies internalState@*/; + fnpyKey key, + rpmCallbackData data); /** */ -/*@unused@*/ void urlSetCallback(rpmCallbackFunction notify, rpmCallbackData notifyData, int notifyCount); diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c index d5eda4d00..353f826da 100644 --- a/rpmio/rpmpgp.c +++ b/rpmio/rpmpgp.c @@ -1,4 +1,3 @@ -/*@-boundsread@*/ /** \ingroup rpmio signature * \file rpmio/rpmpgp.c * Routines to handle RFC-2440 detached signatures. @@ -8,19 +7,13 @@ #include "rpmio_internal.h" #include "debug.h" -/*@access pgpDig @*/ -/*@access pgpDigParams @*/ -/*@unchecked@*/ static int _debug = 0; -/*@unchecked@*/ static int _print = 0; -/*@unchecked@*/ /*@null@*/ static pgpDig _dig = NULL; -/*@unchecked@*/ /*@null@*/ static pgpDigParams _digp = NULL; struct pgpValTbl_s pgpSigTypeTbl[] = { @@ -90,13 +83,10 @@ struct pgpValTbl_s pgpHashTbl[] = { { -1, "Unknown hash algorithm" }, }; -/*@-exportlocal -exportheadervar@*/ -/*@observer@*/ /*@unchecked@*/ struct pgpValTbl_s pgpKeyServerPrefsTbl[] = { { 0x80, "No-modify" }, { -1, "Unknown key server preference" }, }; -/*@=exportlocal =exportheadervar@*/ struct pgpValTbl_s pgpSubTypeTbl[] = { { PGPSUBTYPE_SIG_CREATE_TIME,"signature creation time" }, @@ -188,25 +178,20 @@ struct pgpValTbl_s pgpArmorKeyTbl[] = { * @param p memory to free * @return NULL always */ -/*@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; } static void pgpPrtNL(void) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { if (!_print) return; fprintf(stderr, "\n"); } static void pgpPrtInt(const char *pre, int i) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { if (!_print) return; if (pre && *pre) @@ -215,8 +200,6 @@ static void pgpPrtInt(const char *pre, int i) } static void pgpPrtStr(const char *pre, const char *s) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { if (!_print) return; if (pre && *pre) @@ -225,8 +208,6 @@ static void pgpPrtStr(const char *pre, const char *s) } static void pgpPrtHex(const char *pre, const byte *p, unsigned int plen) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { if (!_print) return; if (pre && *pre) @@ -235,8 +216,6 @@ static void pgpPrtHex(const char *pre, const byte *p, unsigned int plen) } void pgpPrtVal(const char * pre, pgpValTbl vs, byte val) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { if (!_print) return; if (pre && *pre) @@ -246,9 +225,8 @@ void pgpPrtVal(const char * pre, pgpValTbl vs, byte val) /** */ -/*@unused@*/ static /*@observer@*/ +static const char * pgpMpiHex(const byte *p) - /*@*/ { static char prbuf[2048]; char *t = prbuf; @@ -256,14 +234,11 @@ const char * pgpMpiHex(const byte *p) return prbuf; } -/*@-boundswrite@*/ /** * @return 0 on success */ static int pgpHexSet(const char * pre, int lbits, - /*@out@*/ mpnumber * mpn, const byte * p, const byte * pend) - /*@globals fileSystem @*/ - /*@modifies mpn, fileSystem @*/ + mpnumber * mpn, const byte * p, const byte * pend) { unsigned int mbits = pgpMpiBits(p); unsigned int nbits; @@ -291,7 +266,6 @@ if (_debug && _print) fprintf(stderr, "\t %s ", pre), mpfprintln(stderr, mpn->size, mpn->data); return 0; } -/*@=boundswrite@*/ int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) { @@ -312,29 +286,26 @@ int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) case PGPSUBTYPE_PREFER_SYMKEY: /* preferred symmetric algorithms */ for (i = 1; i < plen; i++) pgpPrtVal(" ", pgpSymkeyTbl, p[i]); - /*@switchbreak@*/ break; + break; case PGPSUBTYPE_PREFER_HASH: /* preferred hash algorithms */ for (i = 1; i < plen; i++) pgpPrtVal(" ", pgpHashTbl, p[i]); - /*@switchbreak@*/ break; + break; case PGPSUBTYPE_PREFER_COMPRESS:/* preferred compression algorithms */ for (i = 1; i < plen; i++) pgpPrtVal(" ", pgpCompressionTbl, p[i]); - /*@switchbreak@*/ break; + break; case PGPSUBTYPE_KEYSERVER_PREFERS:/* key server preferences */ for (i = 1; i < plen; i++) pgpPrtVal(" ", pgpKeyServerPrefsTbl, p[i]); - /*@switchbreak@*/ break; + break; case PGPSUBTYPE_SIG_CREATE_TIME: -/*@-mods -mayaliasunique @*/ if (_digp && !(_digp->saved & PGPDIG_SAVED_TIME) && (sigtype == PGPSIGTYPE_POSITIVE_CERT || sigtype == PGPSIGTYPE_BINARY || sigtype == PGPSIGTYPE_TEXT || sigtype == PGPSIGTYPE_STANDALONE)) { _digp->saved |= PGPDIG_SAVED_TIME; memcpy(_digp->time, p+1, sizeof(_digp->time)); } -/*@=mods =mayaliasunique @*/ - /*@fallthrough@*/ case PGPSUBTYPE_SIG_EXPIRE_TIME: case PGPSUBTYPE_KEY_EXPIRE_TIME: if ((plen - 1) == 4) { @@ -343,18 +314,15 @@ int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) fprintf(stderr, " %-24.24s(0x%08x)", ctime(&t), (unsigned)t); } else pgpPrtHex("", p+1, plen-1); - /*@switchbreak@*/ break; + break; case PGPSUBTYPE_ISSUER_KEYID: /* issuer key ID */ -/*@-mods -mayaliasunique @*/ if (_digp && !(_digp->saved & PGPDIG_SAVED_ID) && (sigtype == PGPSIGTYPE_POSITIVE_CERT || sigtype == PGPSIGTYPE_BINARY || sigtype == PGPSIGTYPE_TEXT || sigtype == PGPSIGTYPE_STANDALONE)) { _digp->saved |= PGPDIG_SAVED_ID; memcpy(_digp->signid, p+1, sizeof(_digp->signid)); } -/*@=mods =mayaliasunique @*/ - /*@fallthrough@*/ case PGPSUBTYPE_EXPORTABLE_CERT: case PGPSUBTYPE_TRUST_SIG: case PGPSUBTYPE_REGEX: @@ -383,7 +351,7 @@ int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) case PGPSUBTYPE_INTERNAL_110: default: pgpPrtHex("", p+1, plen-1); - /*@switchbreak@*/ break; + break; } pgpPrtNL(); p += plen; @@ -392,25 +360,19 @@ int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) return 0; } -/*@-varuse =readonlytrans @*/ -/*@observer@*/ /*@unchecked@*/ static const char * pgpSigRSA[] = { " m**d =", NULL, }; -/*@observer@*/ /*@unchecked@*/ static const char * pgpSigDSA[] = { " r =", " s =", NULL, }; -/*@=varuse =readonlytrans @*/ -static int pgpPrtSigParams(/*@unused@*/ pgpTag tag, byte pubkey_algo, byte sigtype, +static int pgpPrtSigParams(pgpTag tag, byte pubkey_algo, byte sigtype, const byte *p, const byte *h, unsigned int hlen) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ { const byte * pend = h + hlen; int i; @@ -426,9 +388,9 @@ static int pgpPrtSigParams(/*@unused@*/ pgpTag tag, byte pubkey_algo, byte sigty (void) mpnsethex(&_dig->c, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t m**d = "), mpfprintln(stderr, _dig->c.size, _dig->c.data); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } pgpPrtStr("", pgpSigRSA[i]); @@ -442,13 +404,13 @@ fprintf(stderr, "\t m**d = "), mpfprintln(stderr, _dig->c.size, _dig->c.data); switch (i) { case 0: /* r */ xx = pgpHexSet(pgpSigDSA[i], 160, &_dig->r, p, pend); - /*@switchbreak@*/ break; + break; case 1: /* s */ xx = pgpHexSet(pgpSigDSA[i], 160, &_dig->s, p, pend); - /*@switchbreak@*/ break; + break; default: xx = 1; - /*@switchbreak@*/ break; + break; } if (xx) return xx; } @@ -465,8 +427,6 @@ fprintf(stderr, "\t m**d = "), mpfprintln(stderr, _dig->c.size, _dig->c.data); } int pgpPrtSig(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals _digp @*/ - /*@modifies *_digp @*/ { byte version = h[0]; byte * p; @@ -571,8 +531,6 @@ fprintf(stderr, " unhash[%u] -- %s\n", plen, pgpHexStr(p, plen)); return rc; } -/*@-varuse =readonlytrans @*/ -/*@observer@*/ /*@unchecked@*/ static const char * pgpPublicRSA[] = { " n =", " e =", @@ -580,7 +538,6 @@ static const char * pgpPublicRSA[] = { }; #ifdef NOTYET -/*@observer@*/ /*@unchecked@*/ static const char * pgpSecretRSA[] = { " d =", " p =", @@ -590,7 +547,6 @@ static const char * pgpSecretRSA[] = { }; #endif -/*@observer@*/ /*@unchecked@*/ static const char * pgpPublicDSA[] = { " p =", " q =", @@ -600,14 +556,12 @@ static const char * pgpPublicDSA[] = { }; #ifdef NOTYET -/*@observer@*/ /*@unchecked@*/ static const char * pgpSecretDSA[] = { " x =", NULL, }; #endif -/*@observer@*/ /*@unchecked@*/ static const char * pgpPublicELGAMAL[] = { " p =", " g =", @@ -616,18 +570,14 @@ static const char * pgpPublicELGAMAL[] = { }; #ifdef NOTYET -/*@observer@*/ /*@unchecked@*/ static const char * pgpSecretELGAMAL[] = { " x =", NULL, }; #endif -/*@=varuse =readonlytrans @*/ static const byte * pgpPrtPubkeyParams(byte pubkey_algo, - /*@returned@*/ const byte *p, const byte *h, unsigned int hlen) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ + const byte *p, const byte *h, unsigned int hlen) { int i; @@ -640,14 +590,14 @@ static const byte * pgpPrtPubkeyParams(byte pubkey_algo, (void) mpbsethex(&_dig->rsa_pk.n, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t n = "), mpfprintln(stderr, _dig->rsa_pk.n.size, _dig->rsa_pk.n.modl); - /*@switchbreak@*/ break; + break; case 1: /* e */ (void) mpnsethex(&_dig->rsa_pk.e, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t e = "), mpfprintln(stderr, _dig->rsa_pk.e.size, _dig->rsa_pk.e.data); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } pgpPrtStr("", pgpPublicRSA[i]); @@ -659,24 +609,24 @@ fprintf(stderr, "\t e = "), mpfprintln(stderr, _dig->rsa_pk.e.size, _dig->r (void) mpbsethex(&_dig->p, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t p = "), mpfprintln(stderr, _dig->p.size, _dig->p.modl); - /*@switchbreak@*/ break; + break; case 1: /* q */ (void) mpbsethex(&_dig->q, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t q = "), mpfprintln(stderr, _dig->q.size, _dig->q.modl); - /*@switchbreak@*/ break; + break; case 2: /* g */ (void) mpnsethex(&_dig->g, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t g = "), mpfprintln(stderr, _dig->g.size, _dig->g.data); - /*@switchbreak@*/ break; + break; case 3: /* y */ (void) mpnsethex(&_dig->y, pgpMpiHex(p)); if (_debug && _print) fprintf(stderr, "\t y = "), mpfprintln(stderr, _dig->y.size, _dig->y.data); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } pgpPrtStr("", pgpPublicDSA[i]); @@ -694,10 +644,8 @@ fprintf(stderr, "\t y = "), mpfprintln(stderr, _dig->y.size, _dig->y.data); return p; } -static const byte * pgpPrtSeckeyParams(/*@unused@*/ byte pubkey_algo, - /*@returned@*/ const byte *p, const byte *h, unsigned int hlen) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/ +static const byte * pgpPrtSeckeyParams(byte pubkey_algo, + const byte *p, const byte *h, unsigned int hlen) { int i; @@ -712,21 +660,20 @@ static const byte * pgpPrtSeckeyParams(/*@unused@*/ byte pubkey_algo, case 0x00: pgpPrtVal(" simple ", pgpHashTbl, p[2]); p += 2; - /*@innerbreak@*/ break; + break; case 0x01: pgpPrtVal(" salted ", pgpHashTbl, p[2]); pgpPrtHex("", p+3, 8); p += 10; - /*@innerbreak@*/ break; + break; case 0x03: pgpPrtVal(" iterated/salted ", pgpHashTbl, p[2]); - /*@-shiftnegative -shiftimplementation @*/ /* FIX: unsigned cast */ + /* FIX: unsigned cast */ i = (16 + (p[11] & 0xf)) << ((p[11] >> 4) + 6); - /*@=shiftnegative =shiftimplementation @*/ pgpPrtHex("", p+3, 8); pgpPrtInt(" iter", i); p += 11; - /*@innerbreak@*/ break; + break; } break; default: @@ -769,8 +716,6 @@ static const byte * pgpPrtSeckeyParams(/*@unused@*/ byte pubkey_algo, } int pgpPrtKey(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals _digp @*/ - /*@modifies *_digp @*/ { byte version = *h; const byte * p; @@ -829,10 +774,7 @@ int pgpPrtKey(pgpTag tag, const byte *h, unsigned int hlen) return rc; } -/*@-boundswrite@*/ int pgpPrtUserID(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals _digp @*/ - /*@modifies *_digp @*/ { pgpPrtVal("", pgpTagTbl, tag); if (_print) @@ -845,7 +787,6 @@ int pgpPrtUserID(pgpTag tag, const byte *h, unsigned int hlen) } return 0; } -/*@=boundswrite@*/ int pgpPrtComment(pgpTag tag, const byte *h, unsigned int hlen) { @@ -873,7 +814,7 @@ int pgpPrtComment(pgpTag tag, const byte *h, unsigned int hlen) return 0; } -int pgpPubkeyFingerprint(const byte * pkt, /*@unused@*/ unsigned int pktlen, +int pgpPubkeyFingerprint(const byte * pkt, unsigned int pktlen, byte * keyid) { const byte *s = pkt; @@ -893,13 +834,11 @@ int pgpPubkeyFingerprint(const byte * pkt, /*@unused@*/ unsigned int pktlen, switch (v->pubkey_algo) { case PGPPUBKEYALGO_RSA: s += (pgpMpiLen(s) - 8); -/*@-boundswrite@*/ memmove(keyid, s, 8); -/*@=boundswrite@*/ rc = 0; - /*@innerbreak@*/ break; + break; default: /* TODO: md5 of mpi bodies (i.e. no length) */ - /*@innerbreak@*/ break; + break; } } break; case 4: @@ -912,11 +851,11 @@ int pgpPubkeyFingerprint(const byte * pkt, /*@unused@*/ unsigned int pktlen, case PGPPUBKEYALGO_RSA: for (i = 0; i < 2; i++) s += pgpMpiLen(s); - /*@innerbreak@*/ break; + break; case PGPPUBKEYALGO_DSA: for (i = 0; i < 4; i++) s += pgpMpiLen(s); - /*@innerbreak@*/ break; + break; } ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE); @@ -924,9 +863,7 @@ int pgpPubkeyFingerprint(const byte * pkt, /*@unused@*/ unsigned int pktlen, (void) rpmDigestFinal(ctx, (void **)&SHA1, NULL, 0); s = SHA1 + 12; -/*@-boundswrite@*/ memmove(keyid, s, 8); -/*@=boundswrite@*/ rc = 0; if (SHA1) free(SHA1); @@ -970,14 +907,11 @@ int pgpPrtPkt(const byte *pkt, unsigned int pleft) case PGPTAG_PUBLIC_KEY: /* Get the public key fingerprint. */ if (_digp) { -/*@-mods@*/ if (!pgpPubkeyFingerprint(pkt, pktlen, _digp->signid)) _digp->saved |= PGPDIG_SAVED_ID; else memset(_digp->signid, 0, sizeof(_digp->signid)); -/*@=mods@*/ } - /*@fallthrough@*/ case PGPTAG_PUBLIC_SUBKEY: rc = pgpPrtKey(tag, h, hlen); break; @@ -1023,7 +957,6 @@ pgpDig pgpNewDig(void) return dig; } -/*@-boundswrite@*/ void pgpCleanDig(pgpDig dig) { if (dig != NULL) { @@ -1032,12 +965,11 @@ void pgpCleanDig(pgpDig dig) dig->pubkey.userid = _free(dig->pubkey.userid); dig->signature.hash = _free(dig->signature.hash); dig->pubkey.hash = _free(dig->pubkey.hash); - /*@-unqualifiedtrans@*/ /* FIX: double indirection */ + /* FIX: double indirection */ for (i = 0; i < 4; i++) { dig->signature.params[i] = _free(dig->signature.params[i]); dig->pubkey.params[i] = _free(dig->pubkey.params[i]); } - /*@=unqualifiedtrans@*/ memset(&dig->signature, 0, sizeof(dig->signature)); memset(&dig->pubkey, 0, sizeof(dig->pubkey)); @@ -1053,30 +985,22 @@ void pgpCleanDig(pgpDig dig) mpnfree(&dig->c); mpnfree(&dig->rsahm); } -/*@-nullstate@*/ return; -/*@=nullstate@*/ } -/*@=boundswrite@*/ -pgpDig pgpFreeDig(/*@only@*/ /*@null@*/ pgpDig dig) - /*@modifies dig @*/ +pgpDig pgpFreeDig(pgpDig dig) { if (dig != NULL) { /* DUmp the signature/pubkey data. */ pgpCleanDig(dig); - /*@-branchstate@*/ if (dig->hdrsha1ctx != NULL) (void) rpmDigestFinal(dig->hdrsha1ctx, NULL, NULL, 0); - /*@=branchstate@*/ dig->hdrsha1ctx = NULL; - /*@-branchstate@*/ if (dig->sha1ctx != NULL) (void) rpmDigestFinal(dig->sha1ctx, NULL, NULL, 0); - /*@=branchstate@*/ dig->sha1ctx = NULL; mpbfree(&dig->p); @@ -1088,17 +1012,13 @@ pgpDig pgpFreeDig(/*@only@*/ /*@null@*/ pgpDig dig) mpnfree(&dig->s); #ifdef NOTYET - /*@-branchstate@*/ if (dig->hdrmd5ctx != NULL) (void) rpmDigestFinal(dig->hdrmd5ctx, NULL, NULL, 0); - /*@=branchstate@*/ dig->hdrmd5ctx = NULL; #endif - /*@-branchstate@*/ if (dig->md5ctx != NULL) (void) rpmDigestFinal(dig->md5ctx, NULL, NULL, 0); - /*@=branchstate@*/ dig->md5ctx = NULL; mpbfree(&dig->rsa_pk.n); @@ -1113,8 +1033,6 @@ pgpDig pgpFreeDig(/*@only@*/ /*@null@*/ pgpDig dig) } int pgpPrtPkts(const byte * pkts, unsigned int pktlen, pgpDig dig, int printing) - /*@globals _dig, _digp, _print @*/ - /*@modifies _dig, _digp, *_digp, _print @*/ { unsigned int val = *pkts; const byte *p; @@ -1140,7 +1058,6 @@ int pgpPrtPkts(const byte * pkts, unsigned int pktlen, pgpDig dig, int printing) return 0; } -/*@-boundswrite@*/ pgpArmor pgpReadPkts(const char * fn, const byte ** pkt, size_t * pktlen) { byte * b = NULL; @@ -1199,7 +1116,7 @@ pgpArmor pgpReadPkts(const char * fn, const byte ** pkt, size_t * pktlen) continue; *t = '\0'; pstate++; - /*@switchbreak@*/ break; + break; case 1: enc = NULL; rc = pgpValTok(pgpArmorKeyTbl, t, te); @@ -1211,7 +1128,7 @@ pgpArmor pgpReadPkts(const char * fn, const byte ** pkt, size_t * pktlen) } enc = te; /* Start of encoded packets */ pstate++; - /*@switchbreak@*/ break; + break; case 2: crcenc = NULL; if (*t != '=') @@ -1219,7 +1136,7 @@ pgpArmor pgpReadPkts(const char * fn, const byte ** pkt, size_t * pktlen) *t++ = '\0'; /* Terminate encoded packets */ crcenc = t; /* Start of encoded crc */ pstate++; - /*@switchbreak@*/ break; + break; case 3: pstate = 0; if (!TOKEQ(t, "-----END PGP ")) { @@ -1272,7 +1189,7 @@ pgpArmor pgpReadPkts(const char * fn, const byte ** pkt, size_t * pktlen) blen = declen; ec = PGPARMOR_PUBKEY; /* XXX ASCII Pubkeys only, please. */ goto exit; - /*@notreached@*/ /*@switchbreak@*/ break; + break; } } ec = PGPARMOR_NONE; @@ -1286,7 +1203,6 @@ exit: *pktlen = blen; return ec; } -/*@=boundswrite@*/ char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns) { @@ -1297,7 +1213,6 @@ char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns) int lc; nt = ((ns + 2) / 3) * 4; - /*@-globs@*/ /* Add additional bytes necessary for eol string(s). */ if (b64encode_chars_per_line > 0 && b64encode_eolstr != NULL) { lc = (nt + b64encode_chars_per_line - 1) / b64encode_chars_per_line; @@ -1305,18 +1220,14 @@ char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns) ++lc; nt += lc * strlen(b64encode_eolstr); } - /*@=globs@*/ nt += 512; /* XXX slop for armor and crc */ -/*@-boundswrite@*/ val = t = xmalloc(nt + 1); *t = '\0'; t = stpcpy(t, "-----BEGIN PGP "); t = stpcpy(t, pgpValStr(pgpArmorTbl, atype)); - /*@-globs@*/ t = stpcpy( stpcpy(t, "-----\nVersion: rpm-"), VERSION); - /*@=globs@*/ t = stpcpy(t, " (beecrypt-4.1.2)\n\n"); if ((enc = b64encode(s, ns)) != NULL) { @@ -1332,9 +1243,7 @@ char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns) t = stpcpy(t, "-----END PGP "); t = stpcpy(t, pgpValStr(pgpArmorTbl, atype)); t = stpcpy(t, "-----\n"); -/*@=boundswrite@*/ return val; } -/*@=boundsread@*/ diff --git a/rpmio/rpmpgp.h b/rpmio/rpmpgp.h index d90d4e73c..758aee81d 100644 --- a/rpmio/rpmpgp.h +++ b/rpmio/rpmpgp.h @@ -13,20 +13,18 @@ #include <string.h> #if !defined(_BEECRYPT_API_H) -/*@-redef@*/ typedef unsigned char byte; -/*@=redef@*/ #endif /* _BEECRYPT_API_H */ /** */ -typedef /*@abstract@*/ struct DIGEST_CTX_s * DIGEST_CTX; +typedef struct DIGEST_CTX_s * DIGEST_CTX; /** */ typedef const struct pgpValTbl_s { int val; -/*@observer@*/ const char * str; +const char * str; } * pgpValTbl; /** @@ -64,7 +62,6 @@ typedef enum pgpTag_e { /** */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpTagTbl[]; /** @@ -114,7 +111,6 @@ typedef struct pgpPktPubkey_s { * 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 */ @@ -134,11 +130,9 @@ typedef enum pgpSigType_e { PGPSIGTYPE_CERT_REVOKE = 0x30, /*!< Certification revocation */ PGPSIGTYPE_TIMESTAMP = 0x40 /*!< Timestamp */ } pgpSigType; -/*@=typeuse@*/ /** */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpSigTypeTbl[]; /** @@ -164,7 +158,6 @@ extern struct pgpValTbl_s pgpSigTypeTbl[]; * encryption. Implementations SHOULD implement RSA keys. * Implementations MAY implement any other algorithm. */ -/*@-typeuse@*/ typedef enum pgpPubkeyAlgo_e { PGPPUBKEYALGO_RSA = 1, /*!< RSA */ PGPPUBKEYALGO_RSA_ENCRYPT = 2, /*!< RSA(Encrypt-Only) */ @@ -176,11 +169,9 @@ typedef enum pgpPubkeyAlgo_e { PGPPUBKEYALGO_ELGAMAL = 20, /*!< Elgamal */ PGPPUBKEYALGO_DH = 21 /*!< Diffie-Hellman (X9.42) */ } pgpPubkeyAlgo; -/*@=typeuse@*/ /** */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpPubkeyTbl[]; /** @@ -207,7 +198,6 @@ extern struct pgpValTbl_s pgpPubkeyTbl[]; * implement IDEA and CAST5. Implementations MAY implement any other * algorithm. */ -/*@-typeuse@*/ typedef enum pgpSymkeyAlgo_e { PGPSYMKEYALGO_PLAINTEXT = 0, /*!< Plaintext */ PGPSYMKEYALGO_IDEA = 1, /*!< IDEA */ @@ -222,12 +212,10 @@ typedef enum pgpSymkeyAlgo_e { PGPSYMKEYALGO_TWOFISH = 10, /*!< TWOFISH(256-bit key) */ PGPSYMKEYALGO_NOENCRYPT = 110 /*!< no encryption */ } pgpSymkeyAlgo; -/*@=typeuse@*/ /** * Symmetric key (string, value) pairs. */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpSymkeyTbl[]; /** @@ -245,19 +233,16 @@ extern struct pgpValTbl_s pgpSymkeyTbl[]; * 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@*/ /** * Compression (string, value) pairs. */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpCompressionTbl[]; /** @@ -296,7 +281,6 @@ typedef enum pgpHashAlgo_e { /** * Hash (string, value) pairs. */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpHashTbl[]; /** @@ -426,7 +410,6 @@ typedef struct pgpPktSigV4_s { * 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 */ @@ -467,12 +450,10 @@ typedef enum pgpSubType_e { PGPSUBTYPE_CRITICAL = 128 /*!< critical subpacket marker */ } pgpSubType; -/*@=typeuse@*/ /** * Subtype (string, value) pairs. */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpSubTypeTbl[]; /** @@ -926,7 +907,6 @@ union pgpPktPre_u { /** */ -/*@-typeuse@*/ typedef enum pgpArmor_e { PGPARMOR_ERR_CRC_CHECK = -7, PGPARMOR_ERR_BODY_DECODE = -6, @@ -945,17 +925,14 @@ typedef enum pgpArmor_e { PGPARMOR_PRIVKEY = 6, /*!< PRIVATE KEY BLOCK */ PGPARMOR_SECKEY = 7 /*!< SECRET KEY BLOCK */ } pgpArmor; -/*@=typeuse@*/ /** * Armor (string, value) pairs. */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpArmorTbl[]; /** */ -/*@-typeuse@*/ typedef enum pgpArmorKey_e { PGPARMORKEY_VERSION = 1, /*!< Version: */ PGPARMORKEY_COMMENT = 2, /*!< Comment: */ @@ -963,12 +940,10 @@ typedef enum pgpArmorKey_e { PGPARMORKEY_HASH = 4, /*!< Hash: */ PGPARMORKEY_CHARSET = 5 /*!< Charset: */ } pgpArmorKey; -/*@=typeuse@*/ /** * Armor key (string, value) pairs. */ -/*@observer@*/ /*@unchecked@*/ /*@unused@*/ extern struct pgpValTbl_s pgpArmorKeyTbl[]; /** \ingroup rpmio @@ -979,7 +954,6 @@ typedef enum rpmDigestFlags_e { } rpmDigestFlags; -/*@-fcnuse@*/ #ifdef __cplusplus extern "C" { #endif @@ -990,16 +964,13 @@ extern "C" { * @param nbytes no. of bytes * @return native-endian integer */ -/*@unused@*/ static inline +static inline unsigned int pgpGrab(const byte *s, int nbytes) - /*@*/ { unsigned int i = 0; int nb = (nbytes <= sizeof(i) ? nbytes : sizeof(i)); -/*@-boundsread@*/ while (nb--) i = (i << 8) | *s++; -/*@=boundsread@*/ return i; } @@ -1009,11 +980,9 @@ unsigned int pgpGrab(const byte *s, int nbytes) * @retval *lenp no. of bytes in packet * @return no. of bytes in length prefix */ -/*@unused@*/ static inline -int pgpLen(const byte *s, /*@out@*/ unsigned int *lenp) - /*@modifies *lenp @*/ +static inline +int pgpLen(const byte *s, unsigned int *lenp) { -/*@-boundswrite@*/ if (*s < 192) { (*lenp) = *s++; return 1; @@ -1024,7 +993,6 @@ int pgpLen(const byte *s, /*@out@*/ unsigned int *lenp) (*lenp) = pgpGrab(s+1, 4); return 5; } -/*@=boundswrite@*/ } /** @@ -1032,10 +1000,8 @@ int pgpLen(const byte *s, /*@out@*/ unsigned int *lenp) * @param p pointer to multiprecision integer * @return no. of bits */ -/*@unused@*/ static inline +static inline unsigned int pgpMpiBits(const byte *p) - /*@requires maxRead(p) >= 1 @*/ - /*@*/ { return ((p[0] << 8) | p[1]); } @@ -1045,10 +1011,8 @@ unsigned int pgpMpiBits(const byte *p) * @param p pointer to multiprecision integer * @return no. of bytes */ -/*@unused@*/ static inline +static inline unsigned int pgpMpiLen(const byte *p) - /*@requires maxRead(p) >= 1 @*/ - /*@*/ { return (2 + ((pgpMpiBits(p)+7)>>3)); } @@ -1060,12 +1024,10 @@ unsigned int pgpMpiLen(const byte *p) * @param nbytes no. of bytes * @return target buffer */ -/*@unused@*/ static inline -char * pgpHexCvt(/*@returned@*/ char *t, const byte *s, int nbytes) - /*@modifies *t @*/ +static inline +char * pgpHexCvt(char *t, const byte *s, int nbytes) { static char hex[] = "0123456789abcdef"; -/*@-boundswrite@*/ while (nbytes-- > 0) { unsigned int i; i = *s++; @@ -1073,7 +1035,6 @@ char * pgpHexCvt(/*@returned@*/ char *t, const byte *s, int nbytes) *t++ = hex[ (i ) & 0xf ]; } *t = '\0'; -/*@=boundswrite@*/ return t; } @@ -1084,9 +1045,8 @@ char * pgpHexCvt(/*@returned@*/ char *t, const byte *s, int nbytes) * @param plen no. of bytes * @return hex formatted string */ -/*@unused@*/ static inline /*@observer@*/ +static inline char * pgpHexStr(const byte *p, unsigned int plen) - /*@*/ { static char prbuf[8*BUFSIZ]; /* XXX ick */ char *t = prbuf; @@ -1100,10 +1060,8 @@ char * pgpHexStr(const byte *p, unsigned int plen) * @param p bytes * @return hex formatted string */ -/*@unused@*/ static inline /*@observer@*/ +static inline const char * pgpMpiStr(const byte *p) - /*@requires maxRead(p) >= 3 @*/ - /*@*/ { static char prbuf[8*BUFSIZ]; /* XXX ick */ char *t = prbuf; @@ -1119,9 +1077,8 @@ const char * pgpMpiStr(const byte *p) * @param val byte value to lookup * @return string value of byte */ -/*@unused@*/ static inline /*@observer@*/ +static inline const char * pgpValStr(pgpValTbl vs, byte val) - /*@*/ { do { if (vs->val == val) @@ -1137,9 +1094,8 @@ const char * pgpValStr(pgpValTbl vs, byte val) * @param se end-of-string address * @return byte value */ -/*@unused@*/ static inline +static inline int pgpValTok(pgpValTbl vs, const char * s, const char * se) - /*@*/ { do { int vlen = strlen(vs->str); @@ -1149,16 +1105,13 @@ int pgpValTok(pgpValTbl vs, const char * s, const char * se) return vs->val; } -/*@-exportlocal@*/ /** * Print an OpenPGP value. * @param pre output prefix * @param vs table of (string,value) pairs * @param val byte value to print */ -void pgpPrtVal(const char * pre, pgpValTbl vs, byte val) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +void pgpPrtVal(const char * pre, pgpValTbl vs, byte val); /** * Print/parse an OpenPGP subtype packet. @@ -1167,9 +1120,7 @@ void pgpPrtVal(const char * pre, pgpValTbl vs, byte val) * @param sigtype signature type * @return 0 on success */ -int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype); /** * Print/parse an OpenPGP signature packet. @@ -1178,9 +1129,7 @@ int pgpPrtSubType(const byte *h, unsigned int hlen, pgpSigType sigtype) * @param hlen packet length (no. of bytes) * @return 0 on success */ -int pgpPrtSig(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int pgpPrtSig(pgpTag tag, const byte *h, unsigned int hlen); /** * Print/parse an OpenPGP key packet. @@ -1189,9 +1138,7 @@ int pgpPrtSig(pgpTag tag, const byte *h, unsigned int hlen) * @param hlen packet length (no. of bytes) * @return 0 on success */ -int pgpPrtKey(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int pgpPrtKey(pgpTag tag, const byte *h, unsigned int hlen); /** * Print/parse an OpenPGP userid packet. @@ -1200,9 +1147,7 @@ int pgpPrtKey(pgpTag tag, const byte *h, unsigned int hlen) * @param hlen packet length (no. of bytes) * @return 0 on success */ -int pgpPrtUserID(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int pgpPrtUserID(pgpTag tag, const byte *h, unsigned int hlen); /** * Print/parse an OpenPGP comment packet. @@ -1211,9 +1156,7 @@ int pgpPrtUserID(pgpTag tag, const byte *h, unsigned int hlen) * @param hlen packet length (no. of bytes) * @return 0 on success */ -int pgpPrtComment(pgpTag tag, const byte *h, unsigned int hlen) - /*@globals fileSystem @*/ - /*@modifies fileSystem @*/; +int pgpPrtComment(pgpTag tag, const byte *h, unsigned int hlen); /** * Calculate OpenPGP public key fingerprint. @@ -1224,8 +1167,7 @@ int pgpPrtComment(pgpTag tag, const byte *h, unsigned int hlen) * @return 0 on sucess, else -1 */ int pgpPubkeyFingerprint(const byte * pkt, unsigned int pktlen, - /*@out@*/ byte * keyid) - /*@modifies *keyid @*/; + byte * keyid); /** * Print/parse next OpenPGP packet. @@ -1233,10 +1175,7 @@ int pgpPubkeyFingerprint(const byte * pkt, unsigned int pktlen, * @param pleft no. bytes remaining * @return -1 on error, otherwise this packet length */ -int pgpPrtPkt(const byte *pkt, unsigned int pleft) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; -/*@=exportlocal@*/ +int pgpPrtPkt(const byte *pkt, unsigned int pleft); /** * Print/parse a OpenPGP packet(s). @@ -1246,9 +1185,7 @@ int pgpPrtPkt(const byte *pkt, unsigned int pleft) * @param printing should packets be printed? * @return -1 on error, 0 on success */ -int pgpPrtPkts(const byte *pkts, unsigned int pktlen, pgpDig dig, int printing) - /*@globals fileSystem, internalState @*/ - /*@modifies dig, fileSystem, internalState @*/; +int pgpPrtPkts(const byte *pkts, unsigned int pktlen, pgpDig dig, int printing); /** * Parse armored OpenPGP packets from a file. @@ -1258,9 +1195,7 @@ int pgpPrtPkts(const byte *pkts, unsigned int pktlen, pgpDig dig, int printing) * @return type of armor found */ pgpArmor pgpReadPkts(const char * fn, - /*@out@*/ const byte ** pkt, /*@out@*/ size_t * pktlen) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies *pkt, *pktlen, fileSystem, internalState @*/; + const byte ** pkt, size_t * pktlen); /** * Wrap a OpenPGP packets in ascii armor for transport. @@ -1269,45 +1204,36 @@ pgpArmor pgpReadPkts(const char * fn, * @param ns binary pkt data length * @return formatted string */ -char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns) - /*@*/; +char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns); /** * Create a container for parsed OpenPGP packates. * @return container */ -/*@only@*/ -pgpDig pgpNewDig(void) - /*@*/; +pgpDig pgpNewDig(void); /** * Release (malloc'd) data from container. * @param dig container */ -void pgpCleanDig(/*@null@*/ pgpDig dig) - /*@modifies dig @*/; +void pgpCleanDig(pgpDig dig); /** * Destroy a container for parsed OpenPGP packates. * @param dig container * @return NULL always */ -/*@only@*/ /*@null@*/ -pgpDig pgpFreeDig(/*@only@*/ /*@null@*/ pgpDig dig) - /*@modifies dig @*/; +pgpDig pgpFreeDig(pgpDig dig); /** * Is buffer at beginning of an OpenPGP packet? * @param p buffer * @return 1 if an OpenPGP packet, 0 otherwise */ -/*@unused@*/ static inline +static inline int pgpIsPkt(const byte * p) - /*@*/ { -/*@-boundsread@*/ unsigned int val = *p++; -/*@=boundsread@*/ pgpTag tag; int rc; @@ -1363,17 +1289,14 @@ int pgpIsPkt(const byte * p) * @param len no. of bytes * @return crc of buffer */ -/*@unused@*/ static inline +static inline unsigned int pgpCRC(const byte *octets, size_t len) - /*@*/ { unsigned int crc = CRC24_INIT; int i; while (len--) { -/*@-boundsread@*/ crc ^= (*octets++) << 16; -/*@=boundsread@*/ for (i = 0; i < 8; i++) { crc <<= 1; if (crc & 0x1000000) @@ -1388,9 +1311,7 @@ unsigned int pgpCRC(const byte *octets, size_t len) * @param octx existing digest context * @return duplicated digest context */ -/*@only@*/ -DIGEST_CTX rpmDigestDup(DIGEST_CTX octx) - /*@*/; +DIGEST_CTX rpmDigestDup(DIGEST_CTX octx); /** \ingroup rpmio * Initialize digest. @@ -1399,9 +1320,7 @@ DIGEST_CTX rpmDigestDup(DIGEST_CTX octx) * @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 rpmio * Update context with next plain text buffer. @@ -1410,8 +1329,7 @@ DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags) * @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 rpmio * Return digest and destroy context. @@ -1424,14 +1342,12 @@ int rpmDigestUpdate(/*@null@*/ DIGEST_CTX ctx, const void * data, size_t len) * @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); #ifdef __cplusplus } #endif -/*@=fcnuse@*/ #endif /* H_RPMPGP */ diff --git a/rpmio/rpmrpc.c b/rpmio/rpmrpc.c index a13ab3bb0..dc9102693 100644 --- a/rpmio/rpmrpc.c +++ b/rpmio/rpmrpc.c @@ -16,27 +16,21 @@ #include "ugid.h" #include "debug.h" -/*@access DIR @*/ -/*@access FD_t @*/ -/*@access urlinfo @*/ /** * Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. * @param p memory to free * @retval NULL always */ -/*@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; } /* =============================================================== */ -static int ftpMkdir(const char * path, /*@unused@*/ mode_t mode) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ +static int ftpMkdir(const char * path, mode_t mode) { int rc; if ((rc = ftpCmd("MKD", path, NULL)) != 0) @@ -51,22 +45,16 @@ static int ftpMkdir(const char * path, /*@unused@*/ mode_t mode) } static int ftpChdir(const char * path) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { return ftpCmd("CWD", path, NULL); } static int ftpRmdir(const char * path) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { return ftpCmd("RMD", path, NULL); } static int ftpRename(const char * oldpath, const char * newpath) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { int rc; if ((rc = ftpCmd("RNFR", oldpath, NULL)) != 0) @@ -75,8 +63,6 @@ static int ftpRename(const char * oldpath, const char * newpath) } static int ftpUnlink(const char * path) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { return ftpCmd("DELE", path, NULL); } @@ -90,23 +76,22 @@ int Mkdir (const char * path, mode_t mode) switch (ut) { case URL_IS_FTP: return ftpMkdir(path, mode); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef WITH_NEON return davMkdir(path, mode); #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return mkdir(path, mode); } @@ -119,7 +104,7 @@ int Chdir (const char * path) switch (ut) { case URL_IS_FTP: return ftpChdir(path); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef NOTYET @@ -127,17 +112,16 @@ int Chdir (const char * path) #else return -2; #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return chdir(path); } @@ -150,23 +134,22 @@ int Rmdir (const char * path) switch (ut) { case URL_IS_FTP: return ftpRmdir(path); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef WITH_NEON return davRmdir(path); #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return rmdir(path); } @@ -189,7 +172,7 @@ int Rename (const char * oldpath, const char * newpath) #ifdef WITH_NEON return davRename(oldpath, newpath); #endif - /*@notreached@*/ break; + break; case URL_IS_FTP: /* XXX WRONG WRONG WRONG */ case URL_IS_PATH: case URL_IS_UNKNOWN: @@ -198,7 +181,7 @@ int Rename (const char * oldpath, const char * newpath) case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } newut = urlPath(newpath, &ne); @@ -210,7 +193,7 @@ fprintf(stderr, "*** rename old %*s new %*s\n", (int)(oe - oldpath), oldpath, (i !xstrncasecmp(oldpath, newpath, (oe - oldpath)))) return -2; return ftpRename(oldpath, newpath); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */ case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */ case URL_IS_PATH: @@ -223,7 +206,7 @@ fprintf(stderr, "*** rename old %*s new %*s\n", (int)(oe - oldpath), oldpath, (i case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return rename(oldpath, newpath); } @@ -246,7 +229,7 @@ int Link (const char * oldpath, const char * newpath) case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } newut = urlPath(newpath, &ne); @@ -269,7 +252,7 @@ fprintf(stderr, "*** link old %*s new %*s\n", (int)(oe - oldpath), oldpath, (int case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return link(oldpath, newpath); } @@ -283,23 +266,22 @@ int Unlink(const char * path) { switch (ut) { case URL_IS_FTP: return ftpUnlink(path); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef WITH_NEON return davUnlink(path); #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return unlink(path); } @@ -312,26 +294,18 @@ int Unlink(const char * path) { /* * FIXME: this is broken. It depends on mc not crossing border on month! */ -/*@unchecked@*/ static int current_mday; -/*@unchecked@*/ static int current_mon; -/*@unchecked@*/ static int current_year; /* Following stuff (parse_ls_lga) is used by ftpfs and extfs */ #define MAXCOLS 30 -/*@unchecked@*/ static char *columns [MAXCOLS]; /* Points to the string in column n */ -/*@unchecked@*/ static int column_ptr [MAXCOLS]; /* Index from 0 to the starting positions of the columns */ -/*@-boundswrite@*/ static int vfs_split_text (char *p) - /*@globals columns, column_ptr @*/ - /*@modifies *p, columns, column_ptr @*/ { char *original = p; int numcols; @@ -349,41 +323,31 @@ vfs_split_text (char *p) } return numcols; } -/*@=boundswrite@*/ -/*@-boundsread@*/ static int is_num (int idx) - /*@*/ { if (!columns [idx] || columns [idx][0] < '0' || columns [idx][0] > '9') return 0; return 1; } -/*@=boundsread@*/ -/*@-boundsread@*/ static int -is_dos_date(/*@null@*/ const char *str) - /*@*/ +is_dos_date(const char *str) { if (str != NULL && strlen(str) == 8 && str[2] == str[5] && strchr("\\-/", (int)str[2]) != NULL) return 1; return 0; } -/*@=boundsread@*/ static int -is_week (/*@null@*/ const char * str, /*@out@*/ struct tm * tim) - /*@modifies *tim @*/ +is_week (const char * str, struct tm * tim) { -/*@observer@*/ static const char * week = "SunMonTueWedThuFriSat"; +static const char * week = "SunMonTueWedThuFriSat"; const char * pos; - /*@-observertrans -mayaliasunique@*/ if (str != NULL && (pos=strstr(week, str)) != NULL) { - /*@=observertrans =mayaliasunique@*/ if (tim != NULL) tim->tm_wday = (pos - week)/3; return 1; @@ -392,15 +356,12 @@ is_week (/*@null@*/ const char * str, /*@out@*/ struct tm * tim) } static int -is_month (/*@null@*/ const char * str, /*@out@*/ struct tm * tim) - /*@modifies *tim @*/ +is_month (const char * str, struct tm * tim) { -/*@observer@*/ static const char * month = "JanFebMarAprMayJunJulAugSepOctNovDec"; +static const char * month = "JanFebMarAprMayJunJulAugSepOctNovDec"; const char * pos; - /*@-observertrans -mayaliasunique@*/ if (str != NULL && (pos = strstr(month, str)) != NULL) { - /*@=observertrans -mayaliasunique@*/ if (tim != NULL) tim->tm_mon = (pos - month)/3; return 1; @@ -409,8 +370,7 @@ is_month (/*@null@*/ const char * str, /*@out@*/ struct tm * tim) } static int -is_time (/*@null@*/ const char * str, /*@out@*/ struct tm * tim) - /*@modifies *tim @*/ +is_time (const char * str, struct tm * tim) { const char * p, * p2; @@ -428,8 +388,7 @@ is_time (/*@null@*/ const char * str, /*@out@*/ struct tm * tim) return 1; } -static int is_year(/*@null@*/ const char * str, /*@out@*/ struct tm * tim) - /*@modifies *tim @*/ +static int is_year(const char * str, struct tm * tim) { long year; @@ -461,7 +420,6 @@ static int is_year(/*@null@*/ const char * str, /*@out@*/ struct tm * tim) static int vfs_parse_filetype (char c) - /*@*/ { switch (c) { case 'd': return S_IFDIR; @@ -480,7 +438,6 @@ vfs_parse_filetype (char c) } static int vfs_parse_filemode (const char *p) - /*@*/ { /* converts rw-rw-rw- into 0666 */ int res = 0; switch (*(p++)) { @@ -538,9 +495,7 @@ static int vfs_parse_filemode (const char *p) return res; } -/*@-boundswrite@*/ -static int vfs_parse_filedate(int idx, /*@out@*/ time_t *t) - /*@modifies *t @*/ +static int vfs_parse_filedate(int idx, time_t *t) { /* This thing parses from idx in columns[] array */ char *p; @@ -585,9 +540,7 @@ static int vfs_parse_filedate(int idx, /*@out@*/ time_t *t) /* Here just this special case with MM-DD-YY */ if (is_dos_date(p)){ - /*@-mods@*/ p[2] = p[5] = '-'; - /*@=mods@*/ memset(d, 0, sizeof(d)); if (sscanf(p, "%2d-%2d-%2d", &d[0], &d[1], &d[2]) == 3){ @@ -646,14 +599,11 @@ static int vfs_parse_filedate(int idx, /*@out@*/ time_t *t) *t = 0; return idx; } -/*@=boundswrite@*/ -/*@-boundswrite@*/ static int -vfs_parse_ls_lga (char * p, /*@out@*/ struct stat * st, - /*@out@*/ const char ** filename, - /*@out@*/ const char ** linkname) - /*@modifies *p, *st, *filename, *linkname @*/ +vfs_parse_ls_lga (char * p, struct stat * st, + const char ** filename, + const char ** linkname) { int idx, idx2, num_cols; int i; @@ -676,13 +626,11 @@ vfs_parse_ls_lga (char * p, /*@out@*/ struct stat * st, if (strlen (p) <= 8 || p [8] != ']') goto error; /* Should parse here the Notwell permissions :) */ - /*@-unrecog@*/ if (S_ISDIR (st->st_mode)) st->st_mode |= (S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR | S_IXUSR | S_IXGRP | S_IXOTH); else st->st_mode |= (S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR); p += 9; - /*@=unrecog@*/ } else { if ((i = vfs_parse_filemode(p)) == -1) goto error; @@ -846,13 +794,10 @@ error: } #endif - /*@-usereleased@*/ if (p_copy != p) /* Carefull! */ - /*@=usereleased@*/ g_free (p_copy); return 0; } -/*@=boundswrite@*/ typedef enum { DO_FTP_STAT = 1, @@ -864,20 +809,17 @@ typedef enum { /** */ -/*@unchecked@*/ static size_t ftpBufAlloced = 0; /** */ -/*@unchecked@*/ -static /*@only@*/ char * ftpBuf = NULL; +static char * ftpBuf = NULL; #define alloca_strdup(_s) strcpy(alloca(strlen(_s)+1), (_s)) -/*@-boundswrite@*/ static int ftpNLST(const char * url, ftpSysCall_t ftpSysCall, - /*@out@*/ /*@null@*/ struct stat * st, - /*@out@*/ /*@null@*/ char * rlbuf, size_t rlbufsiz) + struct stat * st, + char * rlbuf, size_t rlbufsiz) /*@globals ftpBufAlloced, ftpBuf, h_errno, fileSystem, internalState @*/ /*@modifies *st, *rlbuf, ftpBufAlloced, ftpBuf, @@ -910,14 +852,12 @@ static int ftpNLST(const char * url, ftpSysCall_t ftpSysCall, break; default: urldn = alloca_strdup(url); - /*@-branchstate@*/ if ((bn = strrchr(urldn, '/')) == NULL) return -2; else if (bn == path) bn = "."; else *bn++ = '\0'; - /*@=branchstate@*/ nbn = strlen(bn); rc = ftpChdir(urldn); /* XXX don't care about CWD */ @@ -980,44 +920,44 @@ static int ftpNLST(const char * url, ftpSysCall_t ftpSysCall, while (*se && *se != '\n') se++; if (se > s && se[-1] == '\r') se[-1] = '\0'; if (*se == '\0') - /*@innerbreak@*/ break; + break; *se++ = '\0'; if (!strncmp(s, "total ", sizeof("total ")-1)) - /*@innercontinue@*/ continue; + continue; o = NULL; for (bingo = 0, n = se; n >= s; n--) { switch (*n) { case '\0': oe = ne = n; - /*@switchbreak@*/ break; + break; case ' ': if (o || !(n[-3] == ' ' && n[-2] == '-' && n[-1] == '>')) { while (*(++n) == ' ') {}; bingo++; - /*@switchbreak@*/ break; + break; } for (o = n + 1; *o == ' '; o++) {}; n -= 3; ne = n; - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } if (bingo) - /*@innerbreak@*/ break; + break; } if (nbn != (ne - n)) /* Same name length? */ - /*@innercontinue@*/ continue; + continue; if (strncmp(n, bn, nbn)) /* Same name? */ - /*@innercontinue@*/ continue; + continue; moretodo = 0; - /*@innerbreak@*/ break; + break; } if (moretodo && se > s) { @@ -1034,7 +974,6 @@ static int ftpNLST(const char * url, ftpSysCall_t ftpSysCall, if (o && oe) { /* XXX FIXME: symlink, replace urldn/bn from [o,oe) and restart */ } - /*@fallthrough@*/ case DO_FTP_LSTAT: if (st == NULL || !(n && ne)) { rc = -1; @@ -1066,11 +1005,9 @@ exit: (void) ufdClose(fd); return rc; } -/*@=boundswrite@*/ static const char * statstr(const struct stat * st, - /*@returned@*/ /*@out@*/ char * buf) - /*@modifies *buf @*/ + char * buf) { sprintf(buf, "*** dev %x ino %x mode %0o nlink %d uid %d gid %d rdev %x size %x\n", @@ -1085,13 +1022,10 @@ static const char * statstr(const struct stat * st, return buf; } -/*@unchecked@*/ static int ftp_st_ino = 0xdead0000; /* FIXME: borked for path with trailing '/' */ -static int ftpStat(const char * path, /*@out@*/ struct stat *st) - /*@globals ftp_st_ino, h_errno, fileSystem, internalState @*/ - /*@modifies *st, ftp_st_ino, fileSystem, internalState @*/ +static int ftpStat(const char * path, struct stat *st) { char buf[1024]; int rc; @@ -1105,9 +1039,7 @@ fprintf(stderr, "*** ftpStat(%s) rc %d\n%s", path, rc, statstr(st, buf)); } /* FIXME: borked for path with trailing '/' */ -static int ftpLstat(const char * path, /*@out@*/ struct stat *st) - /*@globals ftp_st_ino, h_errno, fileSystem, internalState @*/ - /*@modifies *st, ftp_st_ino, fileSystem, internalState @*/ +static int ftpLstat(const char * path, struct stat *st) { char buf[1024]; int rc; @@ -1120,9 +1052,7 @@ fprintf(stderr, "*** ftpLstat(%s) rc %d\n%s\n", path, rc, statstr(st, buf)); return rc; } -static int ftpReadlink(const char * path, /*@out@*/ char * buf, size_t bufsiz) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies *buf, fileSystem, internalState @*/ +static int ftpReadlink(const char * path, char * buf, size_t bufsiz) { int rc; rc = ftpNLST(path, DO_FTP_READLINK, NULL, buf, bufsiz); @@ -1131,11 +1061,7 @@ fprintf(stderr, "*** ftpReadlink(%s) rc %d\n", path, rc); return rc; } -/*@-boundswrite@*/ -/*@null@*/ static DIR * ftpOpendir(const char * path) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/ { AVDIR avdir; struct dirent * dp; @@ -1167,7 +1093,7 @@ fprintf(stderr, "*** ftpOpendir(%s)\n", path); switch (c) { case '/': sb = se; - /*@switchbreak@*/ break; + break; case '\r': if (sb == NULL) { for (sb = se; sb > s && sb[-1] != ' '; sb--) @@ -1179,41 +1105,33 @@ fprintf(stderr, "*** ftpOpendir(%s)\n", path); if (*se == '\n') se++; sb = NULL; s = se; - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } nb += sizeof(*avdir) + sizeof(*dp) + ((ac + 1) * sizeof(*av)) + (ac + 1); avdir = xcalloc(1, nb); - /*@-abstract@*/ dp = (struct dirent *) (avdir + 1); av = (const char **) (dp + 1); dt = (unsigned char *) (av + (ac + 1)); t = (char *) (dt + ac + 1); - /*@=abstract@*/ avdir->fd = avmagicdir; -/*@-usereleased@*/ avdir->data = (char *) dp; -/*@=usereleased@*/ avdir->allocation = nb; avdir->size = ac; avdir->offset = -1; avdir->filepos = 0; #if defined(HAVE_PTHREAD_H) -/*@-moduncon -noeffectuncon@*/ (void) pthread_mutex_init(&avdir->lock, NULL); -/*@=moduncon =noeffectuncon@*/ #endif ac = 0; - /*@-dependenttrans -unrecog@*/ dt[ac] = DT_DIR; av[ac++] = t; t = stpcpy(t, "."); t++; dt[ac] = DT_DIR; av[ac++] = t; t = stpcpy(t, ".."); t++; - /*@=dependenttrans =unrecog@*/ sb = NULL; s = se = ftpBuf; while ((c = *se) != '\0') { @@ -1221,40 +1139,36 @@ fprintf(stderr, "*** ftpOpendir(%s)\n", path); switch (c) { case '/': sb = se; - /*@switchbreak@*/ break; + break; case '\r': - /*@-dependenttrans@*/ av[ac] = t; - /*@=dependenttrans@*/ if (sb == NULL) { - /*@-unrecog@*/ switch(*s) { case 'p': dt[ac] = DT_FIFO; - /*@innerbreak@*/ break; + break; case 'c': dt[ac] = DT_CHR; - /*@innerbreak@*/ break; + break; case 'd': dt[ac] = DT_DIR; - /*@innerbreak@*/ break; + break; case 'b': dt[ac] = DT_BLK; - /*@innerbreak@*/ break; + break; case '-': dt[ac] = DT_REG; - /*@innerbreak@*/ break; + break; case 'l': dt[ac] = DT_LNK; - /*@innerbreak@*/ break; + break; case 's': dt[ac] = DT_SOCK; - /*@innerbreak@*/ break; + break; default: dt[ac] = DT_UNKNOWN; - /*@innerbreak@*/ break; + break; } - /*@=unrecog@*/ for (sb = se; sb > s && sb[-1] != ' '; sb--) {}; } @@ -1264,18 +1178,15 @@ fprintf(stderr, "*** ftpOpendir(%s)\n", path); if (*se == '\n') se++; sb = NULL; s = se; - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } av[ac] = NULL; -/*@-kepttrans@*/ return (DIR *) avdir; -/*@=kepttrans@*/ } -/*@=boundswrite@*/ int Stat(const char * path, struct stat * st) { @@ -1287,23 +1198,22 @@ fprintf(stderr, "*** Stat(%s,%p)\n", path, st); switch (ut) { case URL_IS_FTP: return ftpStat(path, st); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef WITH_NEON return davStat(path, st); #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return stat(path, st); } @@ -1318,23 +1228,22 @@ fprintf(stderr, "*** Lstat(%s,%p)\n", path, st); switch (ut) { case URL_IS_FTP: return ftpLstat(path, st); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef WITH_NEON return davLstat(path, st); #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return lstat(path, st); } @@ -1347,7 +1256,7 @@ int Readlink(const char * path, char * buf, size_t bufsiz) switch (ut) { case URL_IS_FTP: return ftpReadlink(path, buf, bufsiz); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef NOTYET @@ -1355,21 +1264,19 @@ int Readlink(const char * path, char * buf, size_t bufsiz) #else return -2; #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } -/*@-compdef@*/ /* FIX: *buf is undefined */ +/* FIX: *buf is undefined */ return readlink(path, buf, bufsiz); -/*@=compdef@*/ } int Access(const char * path, int amode) @@ -1385,14 +1292,13 @@ fprintf(stderr, "*** Access(%s,%d)\n", path, amode); case URL_IS_FTP: /* XXX WRONG WRONG WRONG */ case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return access(path, amode); } @@ -1438,7 +1344,7 @@ int Glob_pattern_p (const char * pattern, int quote) return (0); } -int Glob_error(/*@unused@*/const char * epath, /*@unused@*/ int eerrno) +int Glob_error(/*@unused@*/const char * epath, int eerrno) { return 1; } @@ -1449,34 +1355,29 @@ int Glob(const char *pattern, int flags, const char * lpath; int ut = urlPath(pattern, &lpath); -/*@-castfcnptr@*/ if (_rpmio_debug) fprintf(stderr, "*** Glob(%s,0x%x,%p,%p)\n", pattern, (unsigned)flags, (void *)errfunc, pglob); -/*@=castfcnptr@*/ switch (ut) { case URL_IS_HTTPS: case URL_IS_HTTP: case URL_IS_FTP: -/*@-type@*/ pglob->gl_closedir = (void *) Closedir; pglob->gl_readdir = (void *) Readdir; pglob->gl_opendir = (void *) Opendir; pglob->gl_lstat = Lstat; pglob->gl_stat = Stat; -/*@=type@*/ flags |= GLOB_ALTDIRFUNC; flags &= ~GLOB_TILDE; break; case URL_IS_PATH: pattern = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return -2; - /*@notreached@*/ break; + break; } return glob(pattern, flags, errfunc, pglob); } @@ -1498,27 +1399,24 @@ fprintf(stderr, "*** Opendir(%s)\n", path); switch (ut) { case URL_IS_FTP: return ftpOpendir(path); - /*@notreached@*/ break; + break; case URL_IS_HTTPS: case URL_IS_HTTP: #ifdef WITH_NEON return davOpendir(path); #endif - /*@notreached@*/ break; + break; case URL_IS_PATH: path = lpath; - /*@fallthrough@*/ case URL_IS_UNKNOWN: break; case URL_IS_DASH: case URL_IS_HKP: default: return NULL; - /*@notreached@*/ break; + break; } - /*@-dependenttrans@*/ return opendir(path); - /*@=dependenttrans@*/ } struct dirent * Readdir(DIR * dir) diff --git a/rpmio/rpmsq.c b/rpmio/rpmsq.c index 736e2c983..2ddbe6c0c 100644 --- a/rpmio/rpmsq.c +++ b/rpmio/rpmsq.c @@ -19,13 +19,9 @@ #endif #ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -/*@unchecked@*/ static pthread_mutex_t rpmsigTbl_lock = PTHREAD_MUTEX_INITIALIZER; #else -/*@unchecked@*/ -/*@-type@*/ static pthread_mutex_t rpmsigTbl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -/*@=type@*/ #endif #define DO_LOCK() pthread_mutex_lock(&rpmsigTbl_lock); @@ -56,8 +52,8 @@ static pthread_mutex_t rpmsigTbl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; #define DO_LOCK() #define DO_UNLOCK() #define INIT_LOCK() -#define ADD_REF(__tbl) /*@-noeffect@*/ (0) /*@=noeffect@*/ -#define SUB_REF(__tbl) /*@-noeffect@*/ (0) /*@=noeffect@*/ +#define ADD_REF(__tbl) (0) +#define SUB_REF(__tbl) (0) #define CLEANUP_HANDLER(__handler, __arg, __oldtypeptr) #define CLEANUP_RESET(__execute, __oldtype) @@ -72,16 +68,11 @@ static pthread_mutex_t rpmsigTbl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; #include "debug.h" #define _RPMSQ_DEBUG 0 -/*@unchecked@*/ int _rpmsq_debug = _RPMSQ_DEBUG; -/*@unchecked@*/ static struct rpmsqElem rpmsqRock; -/*@-compmempass@*/ -/*@unchecked@*/ rpmsq rpmsqQueue = &rpmsqRock; -/*@=compmempass@*/ int rpmsqInsert(void * elem, void * prev) { @@ -99,9 +90,7 @@ fprintf(stderr, " Insert(%p): %p\n", ME(), sq); sq->reaped = 0; sq->status = 0; sq->reaper = 1; -/*@-bounds@*/ sq->pipes[0] = sq->pipes[1] = -1; -/*@=bounds@*/ sq->id = ME(); ret = pthread_mutex_init(&sq->mutex, NULL); @@ -132,11 +121,9 @@ fprintf(stderr, " Remove(%p): %p\n", ME(), sq); ret = pthread_mutex_destroy(&sq->mutex); sq->id = NULL; -/*@-bounds@*/ if (sq->pipes[1]) ret = close(sq->pipes[1]); if (sq->pipes[0]) ret = close(sq->pipes[0]); sq->pipes[0] = sq->pipes[1] = -1; -/*@=bounds@*/ #ifdef NOTYET /* rpmpsmWait debugging message needs */ sq->reaper = 1; sq->status = 0; @@ -149,11 +136,8 @@ fprintf(stderr, " Remove(%p): %p\n", ME(), sq); return ret; } -/*@unchecked@*/ sigset_t rpmsqCaught; -/*@unchecked@*/ -/*@-fullinitblock@*/ static struct rpmsig_s { int signum; void (*handler) (int signum, void * info, void * context); @@ -174,10 +158,9 @@ static struct rpmsig_s { #define rpmsigTbl_sigpipe (&rpmsigTbl[5]) { -1, NULL }, }; -/*@=fullinitblock@*/ void rpmsqAction(int signum, - /*@unused@*/ void * info, /*@unused@*/ void * context) + void * info, void * context) { int save = errno; rpmsig tbl; @@ -197,7 +180,7 @@ void rpmsqAction(int signum, /* XXX errno set to ECHILD/EINVAL/EINTR. */ if (reaped <= 0) - /*@innerbreak@*/ break; + break; /* XXX insque(3)/remque(3) are dequeue, not ring. */ for (sq = rpmsqQueue->q_forw; @@ -207,7 +190,7 @@ void rpmsqAction(int signum, int ret; if (sq->child != reaped) - /*@innercontinue@*/ continue; + continue; sq->reaped = reaped; sq->status = status; @@ -218,21 +201,19 @@ void rpmsqAction(int signum, */ ret = pthread_mutex_unlock(&sq->mutex); - /*@innerbreak@*/ break; + break; } } - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } break; } errno = save; } -int rpmsqEnable(int signum, /*@null@*/ rpmsqAction_t handler) - /*@globals rpmsigTbl @*/ - /*@modifies rpmsigTbl @*/ +int rpmsqEnable(int signum, rpmsqAction_t handler) { int tblsignum = (signum >= 0 ? signum : -signum); struct sigaction sa; @@ -309,11 +290,9 @@ fprintf(stderr, " Enable(%p): %p\n", ME(), sq); if (!nothreads) { if(pthread_mutex_lock(&sq->mutex)) { /* Yack we did not get the lock, lets just give up */ -/*@-bounds@*/ xx = close(sq->pipes[0]); xx = close(sq->pipes[1]); sq->pipes[0] = sq->pipes[1] = -1; -/*@=bounds@*/ goto out; } } @@ -321,22 +300,18 @@ fprintf(stderr, " Enable(%p): %p\n", ME(), sq); pid = fork(); if (pid < (pid_t) 0) { /* fork failed. */ sq->child = (pid_t)-1; -/*@-bounds@*/ xx = close(sq->pipes[0]); xx = close(sq->pipes[1]); sq->pipes[0] = sq->pipes[1] = -1; -/*@=bounds@*/ goto out; } else if (pid == (pid_t) 0) { /* Child. */ int yy; /* Block to permit parent time to wait. */ -/*@-bounds@*/ xx = close(sq->pipes[1]); xx = read(sq->pipes[0], &yy, sizeof(yy)); xx = close(sq->pipes[0]); sq->pipes[0] = sq->pipes[1] = -1; -/*@=bounds@*/ #ifdef _RPMSQ_DEBUG if (_rpmsq_debug) @@ -366,8 +341,6 @@ out: * @return 0 on success */ static int rpmsqWaitUnregister(rpmsq sq) - /*@globals fileSystem, internalState @*/ - /*@modifies sq, fileSystem, internalState @*/ { int nothreads = 0; int ret = 0; @@ -377,19 +350,16 @@ static int rpmsqWaitUnregister(rpmsq sq) ret = sighold(SIGCHLD); /* Start the child, linux often runs child before parent. */ -/*@-bounds@*/ if (sq->pipes[0] >= 0) xx = close(sq->pipes[0]); if (sq->pipes[1] >= 0) xx = close(sq->pipes[1]); sq->pipes[0] = sq->pipes[1] = -1; -/*@=bounds@*/ /* Put a stopwatch on the time spent waiting to measure performance gain. */ (void) rpmswEnter(&sq->op, -1); /* Wait for handler to receive SIGCHLD. */ - /*@-infloops@*/ while (ret == 0 && sq->reaped != sq->child) { if (nothreads) /* Note that sigpause re-enables SIGCHLD. */ @@ -406,7 +376,6 @@ static int rpmsqWaitUnregister(rpmsq sq) xx = sighold(SIGCHLD); } } - /*@=infloops@*/ /* Accumulate stopwatch time spent waiting, potential performance gain. */ sq->ms_scriptlets += rpmswExit(&sq->op, -1)/1000; @@ -492,8 +461,6 @@ int rpmsqThreadEqual(void * thread) */ static void sigchld_cancel (void *arg) - /*@globals rpmsigTbl, fileSystem, internalState @*/ - /*@modifies rpmsigTbl, fileSystem, internalState @*/ { pid_t child = *(pid_t *) arg; pid_t result; @@ -517,8 +484,6 @@ sigchld_cancel (void *arg) */ int rpmsqExecve (const char ** argv) - /*@globals rpmsigTbl @*/ - /*@modifies rpmsigTbl @*/ { int oldtype; int status = -1; diff --git a/rpmio/rpmsq.h b/rpmio/rpmsq.h index f1ba5d4f7..86ee8b805 100644 --- a/rpmio/rpmsq.h +++ b/rpmio/rpmsq.h @@ -22,13 +22,9 @@ typedef struct rpmsqElem * rpmsq; * @param info (siginfo_t) signal info * @param context signal context */ -typedef void (*rpmsqAction_t) (int signum, void * info, void * context) - /*@*/; +typedef void (*rpmsqAction_t) (int signum, void * info, void * context); -/*@-redecl@*/ -/*@unchecked@*/ extern int _rpmsq_debug; -/*@=redecl@*/ /** * SIGCHLD queue element. @@ -43,18 +39,13 @@ struct rpmsqElem { rpmtime_t ms_scriptlets; /*!< Accumulated script duration (msecs). */ int reaper; /*!< Register SIGCHLD handler? */ int pipes[2]; /*!< Parent/child interlock. */ -/*@shared@*/ void * id; /*!< Blocking thread id (pthread_t). */ pthread_mutex_t mutex; /*!< Signal delivery to thread condvar. */ pthread_cond_t cond; }; -/*@-exportlocal@*/ -/*@unchecked@*/ extern rpmsq rpmsqQueue; -/*@=exportlocal@*/ -/*@unchecked@*/ extern sigset_t rpmsqCaught; #ifdef __cplusplus @@ -67,22 +58,14 @@ extern "C" { * @param prev previous node from queue * @return 0 on success */ -/*@-exportlocal@*/ -int rpmsqInsert(/*@null@*/ void * elem, /*@null@*/ void * prev) - /*@globals systemState @*/ - /*@modifies elem, prev, systemState @*/; -/*@=exportlocal@*/ +int rpmsqInsert(void * elem, void * prev); /** * Remove node from queue. * @param elem node to link * @return 0 on success */ -/*@-exportlocal@*/ -int rpmsqRemove(/*@null@*/ void * elem) - /*@globals fileSystem, internalState @*/ - /*@modifies elem, fileSystem, internalState @*/; -/*@=exportlocal@*/ +int rpmsqRemove(void * elem); /** * Default signal handler. @@ -90,11 +73,7 @@ int rpmsqRemove(/*@null@*/ void * elem) * @param info (siginfo_t) signal info * @param context signal context */ -/*@-exportlocal@*/ -void rpmsqAction(int signum, void * info, void * context) - /*@globals rpmsqCaught, rpmsqQueue, errno, fileSystem @*/ - /*@modifies rpmsqCaught, rpmsqQueue, errno, fileSystem @*/; -/*@=exportlocal@*/ +void rpmsqAction(int signum, void * info, void * context); /** * Enable or disable a signal handler. @@ -102,27 +81,21 @@ void rpmsqAction(int signum, void * info, void * context) * @param handler sa_sigaction handler (or NULL to use rpmsqHandler()) * @return no. of refs, -1 on error */ -int rpmsqEnable(int signum, /*@null@*/ rpmsqAction_t handler) - /*@globals rpmsqCaught, rpmsqQueue, fileSystem, internalState @*/ - /*@modifies rpmsqCaught, rpmsqQueue, fileSystem, internalState @*/; +int rpmsqEnable(int signum, rpmsqAction_t handler); /** * Fork a child process. * @param sq scriptlet queue element * @return fork(2) pid */ -pid_t rpmsqFork(rpmsq sq) - /*@globals fileSystem, internalState @*/ - /*@modifies sq, fileSystem, internalState @*/; +pid_t rpmsqFork(rpmsq sq); /** * Wait for child process to be reaped. * @param sq scriptlet queue element * @return reaped child pid */ -pid_t rpmsqWait(rpmsq sq) - /*@globals fileSystem, internalState @*/ - /*@modifies sq, fileSystem, internalState @*/; +pid_t rpmsqWait(rpmsq sq); /** * Call a function in a thread. @@ -130,34 +103,26 @@ pid_t rpmsqWait(rpmsq sq) * @param arg function argument * @return thread pointer (NULL on error) */ -void * rpmsqThread(void * (*start) (void * arg), void * arg) - /*@globals internalState @*/ - /*@modifies internalState @*/; +void * rpmsqThread(void * (*start) (void * arg), void * arg); /** * Wait for thread to terminate. * @param thread thread * @return 0 on success */ -int rpmsqJoin(/*@null@*/ void * thread) - /*@globals internalState @*/ - /*@modifies internalState @*/; +int rpmsqJoin(void * thread); /** * Compare thread with current thread. * @param thread thread * @return 0 if not equal */ -int rpmsqThreadEqual(/*@null@*/ void * thread) - /*@globals internalState @*/ - /*@modifies internalState @*/; +int rpmsqThreadEqual(void * thread); /** * Execute a command, returning its status. */ -int rpmsqExecve (const char ** argv) - /*@globals fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int rpmsqExecve (const char ** argv); #ifdef __cplusplus } diff --git a/rpmio/rpmsw.c b/rpmio/rpmsw.c index 52e3f63b5..b4005c57b 100644 --- a/rpmio/rpmsw.c +++ b/rpmio/rpmsw.c @@ -6,16 +6,12 @@ #include <rpmsw.h> #include "debug.h" -/*@unchecked@*/ static rpmtime_t rpmsw_overhead = 0; -/*@unchecked@*/ static rpmtime_t rpmsw_cycles = 1; -/*@unchecked@*/ static int rpmsw_type = 0; -/*@unchecked@*/ static int rpmsw_initialized = 0; #if defined(__i386__) @@ -95,9 +91,8 @@ rpmsw rpmswNow(rpmsw sw) * @return difference in milli-seconds */ static inline -rpmtime_t tvsub(/*@null@*/ const struct timeval * etv, - /*@null@*/ const struct timeval * btv) - /*@*/ +rpmtime_t tvsub(const struct timeval * etv, + const struct timeval * btv) { time_t secs, usecs; if (etv == NULL || btv == NULL) return 0; @@ -134,8 +129,6 @@ rpmtime_t rpmswDiff(rpmsw end, rpmsw begin) #if defined(HP_TIMING_NOW) static rpmtime_t rpmswCalibrate(void) - /*@globals internalState @*/ - /*@modifies internalState @*/ { struct rpmsw_s begin, end; rpmtime_t ticks; @@ -143,9 +136,7 @@ static rpmtime_t rpmswCalibrate(void) int rc; int i; -/*@-uniondef@*/ (void) rpmswNow(&begin); -/*@=uniondef@*/ req.tv_sec = 0; req.tv_nsec = 20 * 1000 * 1000; for (i = 0; i < 100; i++) { @@ -156,9 +147,7 @@ static rpmtime_t rpmswCalibrate(void) break; req = rem; /* structure assignment */ } -/*@-uniondef@*/ ticks = rpmswDiff(rpmswNow(&end), &begin); -/*@=uniondef@*/ return ticks; } @@ -194,9 +183,7 @@ rpmtime_t rpmswInit(void) /* Start wall clock. */ rpmsw_type = 0; -/*@-uniondef@*/ (void) rpmswNow(&begin); -/*@=uniondef@*/ /* Get no. of cycles while doing nanosleep. */ rpmsw_type = 1; @@ -207,9 +194,7 @@ rpmtime_t rpmswInit(void) /* Compute wall clock delta in usecs. */ rpmsw_type = 0; -/*@-uniondef@*/ sum_usecs += rpmswDiff(rpmswNow(&end), &begin); -/*@=uniondef@*/ rpmsw_type = 1; /* Compute cycles/usec */ @@ -219,10 +204,8 @@ rpmtime_t rpmswInit(void) #endif /* Calculate timing overhead in usecs. */ -/*@-uniondef@*/ (void) rpmswNow(&begin); sum_overhead += rpmswDiff(rpmswNow(&end), &begin); -/*@=uniondef@*/ rpmsw_overhead = sum_overhead/(i+1); @@ -241,9 +224,7 @@ int rpmswEnter(rpmop op, ssize_t rc) op->bytes = 0; op->usecs = 0; } -/*@-uniondef@*/ (void) rpmswNow(&op->begin); -/*@=uniondef@*/ return 0; } @@ -254,9 +235,7 @@ rpmtime_t rpmswExit(rpmop op, ssize_t rc) if (op == NULL) return 0; -/*@-uniondef@*/ op->usecs += rpmswDiff(rpmswNow(&end), &op->begin); -/*@=uniondef@*/ if (rc > 0) op->bytes += rc; op->begin = end; /* structure assignment */ diff --git a/rpmio/rpmsw.h b/rpmio/rpmsw.h index 9a76af988..0ece22389 100644 --- a/rpmio/rpmsw.h +++ b/rpmio/rpmsw.h @@ -45,31 +45,19 @@ extern "C" { * @param *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 time stamp * @param *begin begin time stamp * @return difference in micro-seconds */ -/*@-exportlocal@*/ -rpmtime_t rpmswDiff(/*@null@*/ rpmsw end, /*@null@*/ rpmsw begin) - /*@*/; -/*@=exportlocal@*/ +rpmtime_t rpmswDiff(rpmsw end, rpmsw begin); /** 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. @@ -77,9 +65,7 @@ rpmtime_t rpmswInit(void) * @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. @@ -87,9 +73,7 @@ int rpmswEnter(/*@null@*/ rpmop op, ssize_t rc) * @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. @@ -97,8 +81,7 @@ rpmtime_t rpmswExit(/*@null@*/ rpmop op, ssize_t rc) * @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. @@ -106,8 +89,7 @@ rpmtime_t rpmswAdd(/*@null@*/ rpmop to, /*@null@*/ rpmop from) * @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); #ifdef __cplusplus } diff --git a/rpmio/rpmurl.h b/rpmio/rpmurl.h index 4b02a21f4..d100636ea 100644 --- a/rpmio/rpmurl.h +++ b/rpmio/rpmurl.h @@ -23,28 +23,20 @@ typedef enum urltype_e { #define URLMAGIC 0xd00b1ed0 #define URLSANE(u) assert(u && u->magic == URLMAGIC) -typedef /*@abstract@*/ /*@refcounted@*/ struct urlinfo_s * urlinfo; +typedef struct urlinfo_s * urlinfo; /** * URL control structure. */ struct urlinfo_s { -/*@refs@*/ int nrefs; /*!< no. of references */ -/*@owned@*/ /*@relnull@*/ +int nrefs; /*!< no. of references */ const char * url; /*!< copy of original url */ -/*@owned@*/ /*@relnull@*/ const char * scheme; /*!< URI scheme. */ -/*@owned@*/ /*@null@*/ const char * user; /*!< URI user. */ -/*@owned@*/ /*@null@*/ const char * password; /*!< URI password. */ -/*@owned@*/ /*@relnull@*/ const char * host; /*!< URI host. */ -/*@owned@*/ /*@null@*/ const char * portstr; /*!< URI port string. */ -/*@owned@*/ /*@null@*/ const char * proxyu; /*!< FTP: proxy user */ -/*@owned@*/ /*@null@*/ const char * proxyh; /*!< FTP/HTTP: proxy host */ int proxyp; /*!< FTP/HTTP: proxy port */ int port; /*!< URI port. */ @@ -52,11 +44,8 @@ struct urlinfo_s { FD_t ctrl; /*!< control channel */ FD_t data; /*!< per-xfer data channel */ -/*@relnull@*/ void * capabilities; /*!< neon: ne_server_capabilities ptr */ -/*@relnull@*/ void * lockstore; /*!< neon: ne_lock_store ptr */ -/*@relnull@*/ void * sess; /*!< neon: ne_session ptr */ off_t current; /*!< neon: current body offset. */ off_t total; /*!< neon: total body length. */ @@ -71,7 +60,6 @@ typedef enum { #endif int bufAlloced; /*!< sizeof I/O buffer */ -/*@owned@*/ char * buf; /*!< I/O buffer */ int openError; /*!< Type of open failure */ int httpVersion; @@ -83,18 +71,13 @@ typedef enum { extern "C" { #endif -/*@unchecked@*/ extern int _url_count; /*!< No. of cached URL's. */ -/*@unchecked@*/ -/*@only@*/ /*@null@*/ extern urlinfo * _url_cache; /*!< URL cache. */ -/*@unchecked@*/ extern int _url_iobuf_size; /*!< Initial size of URL I/O buffer. */ #define RPMURL_IOBUF_SIZE 4096 -/*@unchecked@*/ extern int _url_debug; /*!< URL debugging? */ #define RPMURL_DEBUG_IO 0x40000000 #define RPMURL_DEBUG_REFS 0x20000000 @@ -105,10 +88,10 @@ extern int _url_debug; /*!< URL debugging? */ * @param msg debugging identifier (unused) * @return new instance */ -/*@unused@*/ urlinfo urlNew(const char * msg) /*@*/; +urlinfo urlNew(const char * msg) ; /** @todo Remove debugging entry from the ABI. */ -urlinfo XurlNew(const char * msg, const char * file, unsigned line) /*@*/; +urlinfo XurlNew(const char * msg, const char * file, unsigned line) ; #define urlNew(_msg) XurlNew(_msg, __FILE__, __LINE__) /** @@ -117,12 +100,10 @@ urlinfo XurlNew(const char * msg, const char * file, unsigned line) /*@*/; * @param msg debugging identifier (unused) * @return referenced instance */ -/*@unused@*/ urlinfo urlLink(urlinfo u, const char * msg) - /*@modifies u @*/; +urlinfo urlLink(urlinfo u, const char * msg); /** @todo Remove debugging entry from the ABI. */ -urlinfo XurlLink(urlinfo u, const char * msg, const char * file, unsigned line) - /*@modifies u @*/; +urlinfo XurlLink(urlinfo u, const char * msg, const char * file, unsigned line); #define urlLink(_u, _msg) XurlLink(_u, _msg, __FILE__, __LINE__) /** @@ -131,31 +112,24 @@ urlinfo XurlLink(urlinfo u, const char * msg, const char * file, unsigned line) * @param msg debugging identifier (unused) * @return dereferenced instance (NULL if freed) */ -/*@unused@*/ urlinfo urlFree( /*@killref@*/ urlinfo u, const char * msg) - /*@globals fileSystem, internalState @*/ - /*@modifies u, fileSystem, internalState @*/; +urlinfo urlFree( urlinfo u, const char * msg); /** @todo Remove debugging entry from the ABI. */ -urlinfo XurlFree( /*@killref@*/ urlinfo u, const char * msg, - const char * file, unsigned line) - /*@globals fileSystem, internalState @*/ - /*@modifies u, fileSystem, internalState @*/; +urlinfo XurlFree( urlinfo u, const char * msg, + const char * file, unsigned line); #define urlFree(_u, _msg) XurlFree(_u, _msg, __FILE__, __LINE__) /** * Free cached URL control structures. */ -void urlFreeCache(void) - /*@globals _url_cache, _url_count, fileSystem, internalState @*/ - /*@modifies _url_cache, _url_count, fileSystem, internalState @*/; +void urlFreeCache(void); /** * Return type of URL. * @param url url string * @return type of url */ -urltype urlIsURL(const char * url) - /*@*/; +urltype urlIsURL(const char * url); /** * Return path component of URL. @@ -163,11 +137,7 @@ urltype urlIsURL(const char * url) * @retval pathp pointer to path component of url * @return type of url */ -/*@-incondefs@*/ -urltype urlPath(const char * url, /*@out@*/ const char ** pathp) - /*@ensures maxSet(*pathp) == 0 /\ maxRead(*pathp) == 0 @*/ - /*@modifies *pathp @*/; -/*@=incondefs@*/ +urltype urlPath(const char * url, const char ** pathp); /** * Parse URL string into a control structure. @@ -175,9 +145,7 @@ urltype urlPath(const char * url, /*@out@*/ const char ** pathp) * @retval uret address of new control instance pointer * @return 0 on success, -1 on error */ -int urlSplit(const char * url, /*@out@*/ urlinfo * uret) - /*@globals h_errno, internalState @*/ - /*@modifies *uret, internalState @*/; +int urlSplit(const char * url, urlinfo * uret); /** * Copy data from URL to local file. @@ -185,9 +153,7 @@ int urlSplit(const char * url, /*@out@*/ urlinfo * uret) * @param dest file name of destination * @return 0 on success, otherwise FTPERR_* code */ -int urlGetFile(const char * url, /*@null@*/ const char * dest) - /*@globals h_errno, fileSystem, internalState @*/ - /*@modifies fileSystem, internalState @*/; +int urlGetFile(const char * url, const char * dest); #ifdef __cplusplus } diff --git a/rpmio/strcasecmp.c b/rpmio/strcasecmp.c index 774365058..669522b4a 100644 --- a/rpmio/strcasecmp.c +++ b/rpmio/strcasecmp.c @@ -17,10 +17,8 @@ int xstrcasecmp(const char * s1, const char * s2) do { -/*@-boundsread@*/ c1 = xtolower (*p1++); c2 = xtolower (*p2++); -/*@=boundsread@*/ if (c1 == '\0') break; } @@ -40,10 +38,8 @@ int xstrncasecmp(const char *s1, const char *s2, size_t n) do { -/*@-boundsread@*/ c1 = xtolower (*p1++); c2 = xtolower (*p2++); -/*@=boundsread@*/ if (c1 == '\0' || c1 != c2) break; } while (--n > 0); diff --git a/rpmio/tax.c b/rpmio/tax.c index ee2679b32..9c2f5a9bb 100644 --- a/rpmio/tax.c +++ b/rpmio/tax.c @@ -40,12 +40,10 @@ AjjDx3lJnQBXUDmxM484YXLXZjWFXCiY8GJt6whjf7/2c3rIoT3Z7PQpEvPmM\ * @param nbytes no. of bytes * @return target buffer */ -/*@unused@*/ static inline -char * pgpHexCvt(/*@returned@*/ char *t, const byte *s, int nbytes) - /*@modifies *t @*/ +static inline +char * pgpHexCvt(char *t, const byte *s, int nbytes) { static char hex[] = "0123456789abcdef"; -/*@-boundswrite@*/ while (nbytes-- > 0) { unsigned int i; i = *s++; @@ -53,7 +51,6 @@ char * pgpHexCvt(/*@returned@*/ char *t, const byte *s, int nbytes) *t++ = hex[ (i ) & 0xf ]; } *t = '\0'; -/*@=boundswrite@*/ return t; } @@ -64,9 +61,8 @@ char * pgpHexCvt(/*@returned@*/ char *t, const byte *s, int nbytes) * @param plen no. of bytes * @return hex formatted string */ -/*@unused@*/ static inline /*@observer@*/ +static inline char * pgpHexStr(const byte *p, unsigned int plen) - /*@*/ { static char prbuf[2048]; char *t = prbuf; diff --git a/rpmio/tdir.c b/rpmio/tdir.c index d8a79aa1f..e909afffc 100644 --- a/rpmio/tdir.c +++ b/rpmio/tdir.c @@ -60,9 +60,9 @@ main(int argc, const char *argv[]) switch (rc) { case 'v': rpmIncreaseVerbosity(); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } @@ -78,7 +78,7 @@ _dav_debug = -1; printDir(ftppath); printDir(httppath); -/*@i@*/ urlFreeCache(); +urlFreeCache(); return 0; } diff --git a/rpmio/tfts.c b/rpmio/tfts.c index c74b915a8..6a1ecbf03 100644 --- a/rpmio/tfts.c +++ b/rpmio/tfts.c @@ -8,7 +8,6 @@ #include "debug.h" -/*@unchecked@*/ static int _fts_debug = 0; #if 0 @@ -153,9 +152,9 @@ main(int argc, const char *argv[]) switch (rc) { case 'v': rpmIncreaseVerbosity(); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } @@ -174,7 +173,7 @@ _dav_debug = 1; ftsWalk(httpspath); #endif -/*@i@*/ urlFreeCache(); +urlFreeCache(); return 0; } diff --git a/rpmio/tget.c b/rpmio/tget.c index 6ba475521..eb412e9fb 100644 --- a/rpmio/tget.c +++ b/rpmio/tget.c @@ -61,9 +61,9 @@ main(int argc, const char *argv[]) switch (rc) { case 'v': rpmIncreaseVerbosity(); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } @@ -94,7 +94,7 @@ _dav_debug = 1; readFile(httpspath); #endif -/*@i@*/ urlFreeCache(); +urlFreeCache(); return 0; } diff --git a/rpmio/tglob.c b/rpmio/tglob.c index 55d20bb8c..b5554b052 100644 --- a/rpmio/tglob.c +++ b/rpmio/tglob.c @@ -75,9 +75,9 @@ main(int argc, const char *argv[]) switch (rc) { case 'v': rpmIncreaseVerbosity(); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } diff --git a/rpmio/thkp.c b/rpmio/thkp.c index 8cd7388ff..57fb4cfe0 100644 --- a/rpmio/thkp.c +++ b/rpmio/thkp.c @@ -116,9 +116,9 @@ main(int argc, const char *argv[]) switch (rc) { case 'v': rpmIncreaseVerbosity(); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } @@ -129,7 +129,7 @@ main(int argc, const char *argv[]) readKeys(hkppath); -/*@i@*/ urlFreeCache(); +urlFreeCache(); return 0; } diff --git a/rpmio/tinv.c b/rpmio/tinv.c index c5af5047b..1ba280026 100644 --- a/rpmio/tinv.c +++ b/rpmio/tinv.c @@ -104,10 +104,8 @@ fprintf(stderr, " D: "), mpfprintln(stderr, ysize, D); if (result) { mpsetx(b->size, result, ysize, A); - /*@-usedef@*/ if (*A & 0x80000000) (void) mpneg(b->size, result); - /*@=usedef@*/ while (--k > 0) mpadd(b->size, result, result); } @@ -397,10 +395,8 @@ fprintf(stderr, " D: "), mpfprintln(stderr, ysize, D); if (result) { mpsetx(b->size, result, ysize, D); - /*@-usedef@*/ if (*D & 0x80000000) (void) mpadd(b->size, result, b->modl); - /*@=usedef@*/ } fprintf(stderr, "=== EXIT: "), mpfprintln(stderr, b->size, result); @@ -477,7 +473,7 @@ main(int argc, const char * argv[]) while ((rc = poptGetNextOpt(optCon)) > 0) { switch (rc) { default: - /*@switchbreak@*/ break; + break; } } diff --git a/rpmio/tput.c b/rpmio/tput.c index e0c7b9cbd..244a6d7d8 100644 --- a/rpmio/tput.c +++ b/rpmio/tput.c @@ -121,9 +121,9 @@ main(int argc, const char *argv[]) switch (rc) { case 'v': rpmIncreaseVerbosity(); - /*@switchbreak@*/ break; + break; default: - /*@switchbreak@*/ break; + break; } } @@ -144,7 +144,7 @@ _dav_debug = -1; doFile(httpspath); #endif -/*@i@*/ urlFreeCache(); +urlFreeCache(); return 0; } diff --git a/rpmio/tring.c b/rpmio/tring.c index 45b1f1c83..7b3d31349 100644 --- a/rpmio/tring.c +++ b/rpmio/tring.c @@ -35,8 +35,7 @@ main (int argc, const char *argv[]) const char * fn; int rc, ec = 0; - while ((rc = poptGetNextOpt(optCon)) > 0) - ; + while ((rc = poptGetNextOpt(optCon)) > 0); if ((args = poptGetArgs(optCon)) != NULL) while ((fn = *args++) != NULL) { diff --git a/rpmio/ugid.c b/rpmio/ugid.c index b9a0898c2..fb84f746d 100644 --- a/rpmio/ugid.c +++ b/rpmio/ugid.c @@ -15,7 +15,7 @@ int unameToUid(const char * thisUname, uid_t * uid) { -/*@only@*/ static char * lastUname = NULL; +static char * lastUname = NULL; static size_t lastUnameLen = 0; static size_t lastUnameAlloced; static uid_t lastUid; @@ -26,9 +26,7 @@ int unameToUid(const char * thisUname, uid_t * uid) lastUnameLen = 0; return -1; } else if (strcmp(thisUname, "root") == 0) { -/*@-boundswrite@*/ *uid = 0; -/*@=boundswrite@*/ return 0; } @@ -40,15 +38,12 @@ int unameToUid(const char * thisUname, uid_t * uid) lastUnameAlloced = thisUnameLen + 10; lastUname = xrealloc(lastUname, lastUnameAlloced); /* XXX memory leak */ } -/*@-boundswrite@*/ strcpy(lastUname, thisUname); -/*@=boundswrite@*/ pwent = getpwnam(thisUname); if (pwent == NULL) { - /*@-internalglobs@*/ /* FIX: shrug */ + /* FIX: shrug */ endpwent(); - /*@=internalglobs@*/ pwent = getpwnam(thisUname); if (pwent == NULL) return -1; } @@ -56,16 +51,14 @@ int unameToUid(const char * thisUname, uid_t * uid) lastUid = pwent->pw_uid; } -/*@-boundswrite@*/ *uid = lastUid; -/*@=boundswrite@*/ return 0; } int gnameToGid(const char * thisGname, gid_t * gid) { -/*@only@*/ static char * lastGname = NULL; +static char * lastGname = NULL; static size_t lastGnameLen = 0; static size_t lastGnameAlloced; static gid_t lastGid; @@ -76,9 +69,7 @@ int gnameToGid(const char * thisGname, gid_t * gid) lastGnameLen = 0; return -1; } else if (strcmp(thisGname, "root") == 0) { -/*@-boundswrite@*/ *gid = 0; -/*@=boundswrite@*/ return 0; } @@ -90,28 +81,21 @@ int gnameToGid(const char * thisGname, gid_t * gid) lastGnameAlloced = thisGnameLen + 10; lastGname = xrealloc(lastGname, lastGnameAlloced); /* XXX memory leak */ } -/*@-boundswrite@*/ strcpy(lastGname, thisGname); -/*@=boundswrite@*/ grent = getgrnam(thisGname); if (grent == NULL) { - /*@-internalglobs@*/ /* FIX: shrug */ + /* FIX: shrug */ endgrent(); - /*@=internalglobs@*/ grent = getgrnam(thisGname); if (grent == NULL) { /* XXX The filesystem package needs group/lock w/o getgrnam. */ if (strcmp(thisGname, "lock") == 0) { -/*@-boundswrite@*/ *gid = lastGid = 54; -/*@=boundswrite@*/ return 0; } else if (strcmp(thisGname, "mail") == 0) { -/*@-boundswrite@*/ *gid = lastGid = 12; -/*@=boundswrite@*/ return 0; } else return -1; @@ -120,9 +104,7 @@ int gnameToGid(const char * thisGname, gid_t * gid) lastGid = grent->gr_gid; } -/*@-boundswrite@*/ *gid = lastGid; -/*@=boundswrite@*/ return 0; } @@ -130,7 +112,7 @@ int gnameToGid(const char * thisGname, gid_t * gid) char * uidToUname(uid_t uid) { static uid_t lastUid = (uid_t) -1; -/*@only@*/ static char * lastUname = NULL; +static char * lastUname = NULL; static size_t lastUnameLen = 0; if (uid == (uid_t) -1) { @@ -152,9 +134,7 @@ char * uidToUname(uid_t uid) lastUnameLen = len + 20; lastUname = xrealloc(lastUname, lastUnameLen); } -/*@-boundswrite@*/ strcpy(lastUname, pwent->pw_name); -/*@=boundswrite@*/ return lastUname; } @@ -163,7 +143,7 @@ char * uidToUname(uid_t uid) char * gidToGname(gid_t gid) { static gid_t lastGid = (gid_t) -1; -/*@only@*/ static char * lastGname = NULL; +static char * lastGname = NULL; static size_t lastGnameLen = 0; if (gid == (gid_t) -1) { @@ -185,9 +165,7 @@ char * gidToGname(gid_t gid) lastGnameLen = len + 20; lastGname = xrealloc(lastGname, lastGnameLen); } -/*@-boundswrite@*/ strcpy(lastGname, grent->gr_name); -/*@=boundswrite@*/ return lastGname; } diff --git a/rpmio/ugid.h b/rpmio/ugid.h index b0b07ffec..0ef555950 100644 --- a/rpmio/ugid.h +++ b/rpmio/ugid.h @@ -13,19 +13,14 @@ extern "C" { * These may be called w/ a NULL argument to flush the cache -- they return * -1 if the user can't be found. */ -int unameToUid(const char * thisUname, /*@out@*/ uid_t * uid) - /*@modifies *uid @*/; -int gnameToGid(const char * thisGname, /*@out@*/ gid_t * gid) - /*@modifies *gid @*/; +int unameToUid(const char * thisUname, uid_t * uid); +int gnameToGid(const char * thisGname, gid_t * gid); /* * Call w/ -1 to flush the cache, returns NULL if the user can't be found. */ -/*@observer@*/ /*@null@*/ char * uidToUname(uid_t uid) - /*@*/; -/*@unused@*/ -/*@observer@*/ /*@null@*/ char * gidToGname(gid_t gid) - /*@*/; +char * uidToUname(uid_t uid); +char * gidToGname(gid_t gid); #ifdef __cplusplus } diff --git a/rpmio/url.c b/rpmio/url.c index 3f947f571..43fc46dcf 100644 --- a/rpmio/url.c +++ b/rpmio/url.c @@ -13,7 +13,6 @@ #include "debug.h" /*@access FD_t@*/ /* XXX compared with NULL */ -/*@access urlinfo@*/ #ifndef IPPORT_FTP #define IPPORT_FTP 21 @@ -30,12 +29,10 @@ /** */ -/*@unchecked@*/ int _url_iobuf_size = RPMURL_IOBUF_SIZE; /** */ -/*@unchecked@*/ int _url_debug = 0; #define URLDBG(_f, _m, _x) if ((_url_debug | (_f)) & (_m)) fprintf _x @@ -45,13 +42,10 @@ int _url_debug = 0; /** */ -/*@unchecked@*/ -/*@only@*/ /*@null@*/ urlinfo *_url_cache = NULL; /** */ -/*@unchecked@*/ int _url_count = 0; /** @@ -59,8 +53,8 @@ int _url_count = 0; * @param p memory to free * @retval NULL always */ -/*@unused@*/ static inline /*@null@*/ void * -_free(/*@only@*/ /*@null@*/ const void * p) /*@modifies p@*/ +static inline void * +_free(const void * p) { if (p != NULL) free((void *)p); return NULL; @@ -70,10 +64,8 @@ urlinfo XurlLink(urlinfo u, const char *msg, const char *file, unsigned line) { URLSANE(u); u->nrefs++; -/*@-modfilesys@*/ URLDBGREFS(0, (stderr, "--> url %p ++ %d %s at %s:%u\n", u, u->nrefs, msg, file, line)); -/*@=modfilesys@*/ - /*@-refcounttrans@*/ return u; /*@=refcounttrans@*/ + return u; } urlinfo XurlNew(const char *msg, const char *file, unsigned line) @@ -103,28 +95,24 @@ urlinfo XurlFree(urlinfo u, const char *msg, const char *file, unsigned line) URLSANE(u); URLDBGREFS(0, (stderr, "--> url %p -- %d %s at %s:%u\n", u, u->nrefs, msg, file, line)); if (--u->nrefs > 0) - /*@-refcounttrans -retalias@*/ return u; /*@=refcounttrans =retalias@*/ + return u; if (u->ctrl) { #ifndef NOTYET void * fp = fdGetFp(u->ctrl); - /*@-branchstate@*/ if (fp) { fdPush(u->ctrl, fpio, fp, -1); /* Push fpio onto stack */ (void) Fclose(u->ctrl); } else if (fdio->_fileno(u->ctrl) >= 0) xx = fdio->close(u->ctrl); - /*@=branchstate@*/ #else (void) Fclose(u->ctrl); #endif u->ctrl = fdio->_fdderef(u->ctrl, "persist ctrl (urlFree)", file, line); - /*@-usereleased@*/ if (u->ctrl) fprintf(stderr, _("warning: u %p ctrl %p nrefs != 0 (%s %s)\n"), u, u->ctrl, (u->host ? u->host : ""), (u->scheme ? u->scheme : "")); - /*@=usereleased@*/ } if (u->data) { #ifndef NOTYET @@ -139,12 +127,10 @@ URLDBGREFS(0, (stderr, "--> url %p -- %d %s at %s:%u\n", u, u->nrefs, msg, file, #endif u->data = fdio->_fdderef(u->data, "persist data (urlFree)", file, line); - /*@-usereleased@*/ if (u->data) fprintf(stderr, _("warning: u %p data %p nrefs != 0 (%s %s)\n"), u, u->data, (u->host ? u->host : ""), (u->scheme ? u->scheme : "")); - /*@=usereleased@*/ } if (u->sess != NULL) { #ifdef WITH_NEON @@ -163,11 +149,10 @@ URLDBGREFS(0, (stderr, "--> url %p -- %d %s at %s:%u\n", u, u->nrefs, msg, file, u->proxyu = _free((void *)u->proxyu); u->proxyh = _free((void *)u->proxyh); - /*@-refcounttrans@*/ u = _free(u); /*@-refcounttrans@*/ + u = _free(u); return NULL; } -/*@-boundswrite@*/ void urlFreeCache(void) { if (_url_cache) { @@ -186,10 +171,8 @@ void urlFreeCache(void) _url_cache = _free(_url_cache); _url_count = 0; } -/*@=boundswrite@*/ -static int urlStrcmp(/*@null@*/ const char * str1, /*@null@*/ const char * str2) - /*@*/ +static int urlStrcmp(const char * str1, const char * str2) { if (str1) if (str2) @@ -199,11 +182,7 @@ static int urlStrcmp(/*@null@*/ const char * str1, /*@null@*/ const char * str2) return 0; } -/*@-boundswrite@*/ -/*@-mods@*/ -static void urlFind(/*@null@*/ /*@in@*/ /*@out@*/ urlinfo * uret, int mustAsk) - /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ - /*@modifies *uret, rpmGlobalMacroContext, fileSystem, internalState @*/ +static void urlFind(urlinfo * uret, int mustAsk) { urlinfo u; int ucx; @@ -257,9 +236,7 @@ static void urlFind(/*@null@*/ /*@in@*/ /*@out@*/ urlinfo * uret, int mustAsk) if (_url_cache) /* XXX always true */ u = urlLink(_url_cache[ucx], "_url_cache"); *uret = u; - /*@-usereleased@*/ u = urlFree(u, "_url_cache (urlFind)"); - /*@=usereleased@*/ /* Zap proxy host and port in case they have been reset */ u->proxyp = -1; @@ -275,9 +252,7 @@ static void urlFind(/*@null@*/ /*@in@*/ /*@out@*/ urlinfo * uret, int mustAsk) prompt = alloca(strlen(host) + strlen(user) + 256); sprintf(prompt, _("Password for %s@%s: "), user, host); u->password = _free(u->password); -/*@-dependenttrans -moduncon @*/ - u->password = /*@-unrecog@*/ getpass(prompt) /*@=unrecog@*/; -/*@=dependenttrans =moduncon @*/ + u->password = getpass(prompt); if (u->password) u->password = xstrdup(u->password); } @@ -285,7 +260,6 @@ static void urlFind(/*@null@*/ /*@in@*/ /*@out@*/ urlinfo * uret, int mustAsk) if (u->proxyh == NULL) { const char *proxy = rpmExpand("%{_ftpproxy}", NULL); if (proxy && *proxy != '%') { -/*@observer@*/ const char * host = (u->host ? u->host : ""); const char *uu = (u->user ? u->user : "anonymous"); char *nu = xmalloc(strlen(uu) + sizeof("@") + strlen(host)); @@ -341,14 +315,10 @@ static void urlFind(/*@null@*/ /*@in@*/ /*@out@*/ urlinfo * uret, int mustAsk) return; } -/*@=mods@*/ -/*@=boundswrite@*/ /** */ -/*@observer@*/ /*@unchecked@*/ static struct urlstring { -/*@observer@*/ /*@null@*/ const char * leadin; urltype ret; } urlstrings[] = { @@ -365,7 +335,6 @@ urltype urlIsURL(const char * url) { struct urlstring *us; -/*@-boundsread@*/ if (url && *url) { for (us = urlstrings; us->leadin != NULL; us++) { if (strncmp(url, us->leadin, strlen(us->leadin))) @@ -373,12 +342,10 @@ urltype urlIsURL(const char * url) return us->ret; } } -/*@=boundsread@*/ return URL_IS_UNKNOWN; } -/*@-boundswrite@*/ /* Return path portion of url (or pointer to NUL if url == NULL) */ urltype urlPath(const char * url, const char ** pathp) { @@ -387,7 +354,6 @@ urltype urlPath(const char * url, const char ** pathp) path = url; urltype = urlIsURL(url); - /*@-branchstate@*/ switch (urltype) { case URL_IS_FTP: url += sizeof("ftp://") - 1; @@ -421,14 +387,10 @@ urltype urlPath(const char * url, const char ** pathp) path = ""; break; } - /*@=branchstate@*/ if (pathp) - /*@-observertrans@*/ *pathp = path; - /*@=observertrans@*/ return urltype; } -/*@=boundswrite@*/ /* * Split URL into components. The URL can look like @@ -436,8 +398,6 @@ urltype urlPath(const char * url, const char ** pathp) * or as in RFC2732 for IPv6 address * service://user:password@[ip:v6:ad:dr:es:s]:port/path */ -/*@-bounds@*/ -/*@-modfilesys@*/ int urlSplit(const char * url, urlinfo *uret) { urlinfo u; @@ -477,7 +437,6 @@ int urlSplit(const char * url, urlinfo *uret) /* Look for ...@host... */ fe = f = s; while (*fe && *fe != '@') fe++; - /*@-branchstate@*/ if (*fe == '@') { s = fe + 1; *fe = '\0'; @@ -489,7 +448,6 @@ int urlSplit(const char * url, urlinfo *uret) } u->user = xstrdup(f); } - /*@=branchstate@*/ /* Look for ...host:port or [v6addr]:port*/ fe = f = s; @@ -518,10 +476,8 @@ int urlSplit(const char * url, urlinfo *uret) if (u->port < 0 && u->scheme != NULL) { struct servent *serv; -/*@-multithreaded -moduncon @*/ /* HACK hkp:// might lookup "pgpkeyserver" */ serv = getservbyname(u->scheme, "tcp"); -/*@=multithreaded =moduncon @*/ if (serv != NULL) u->port = ntohs(serv->s_port); else if (u->urltype == URL_IS_FTP) @@ -537,14 +493,11 @@ int urlSplit(const char * url, urlinfo *uret) myurl = _free(myurl); if (uret) { *uret = u; -/*@-globs -mods @*/ /* FIX: rpmGlobalMacroContext not in <rpmlib.h> */ +/* FIX: rpmGlobalMacroContext not in <rpmlib.h> */ urlFind(uret, 0); -/*@=globs =mods @*/ } return 0; } -/*@=modfilesys@*/ -/*@=bounds@*/ int urlGetFile(const char * url, const char * dest) { @@ -595,7 +548,7 @@ fprintf(stderr, "*** urlGetFile sfd %p %s tfd %p %s\n", sfd, url, (tfd ? tfd : N if ((rc = ufdGetFile(sfd, tfd))) { (void) Unlink(dest); /* XXX FIXME: sfd possibly closed by copyData */ - /*@-usereleased@*/ (void) Fclose(sfd) /*@=usereleased@*/ ; + (void) Fclose(sfd) ; } sfd = NULL; /* XXX Fclose(sfd) done by ufdGetFile */ break; |