From 00dcfeff38c8af85dfb7a96834e9ca758dd273fa Mon Sep 17 00:00:00 2001 From: jbj Date: Fri, 17 Sep 1999 20:52:46 +0000 Subject: [PATCH] lclint annotations. CVS patchset: 3290 CVS date: 1999/09/17 20:52:46 --- lib/dbindex.c | 6 +++++- lib/dbindex.h | 12 ++++++------ lib/fprint.c | 9 ++++++--- lib/hash.c | 12 ++++++------ lib/messages.c | 8 ++++---- lib/package.c | 36 ++++++++++++++++++------------------ lib/problems.c | 7 +++++-- lib/transaction.c | 29 +++++++++++++++++------------ 8 files changed, 67 insertions(+), 52 deletions(-) diff --git a/lib/dbindex.c b/lib/dbindex.c index 59cb43e4e..fa30c1f45 100644 --- a/lib/dbindex.c +++ b/lib/dbindex.c @@ -39,7 +39,7 @@ dbiIndex * dbiOpenIndex(const char * filename, int flags, int perms, DBTYPE type void dbiCloseIndex(dbiIndex * dbi) { dbi->db->close(dbi->db); - free(dbi->indexname); + xfree(dbi->indexname); free(dbi); } @@ -54,6 +54,8 @@ int dbiGetFirstKey(dbiIndex * dbi, const char ** keyp) { if (dbi == NULL || dbi->db == NULL) return 1; + key.data = NULL; + key.size = 0; rc = dbi->db->seq(dbi->db, &key, &data, R_FIRST); if (rc) { return 1; @@ -74,6 +76,8 @@ int dbiSearchIndex(dbiIndex * dbi, const char * str, dbiIndexSet * set) { key.data = (void *)str; key.size = strlen(str); + data.data = NULL; + data.size = 0; rc = dbi->db->get(dbi->db, &key, &data, 0); if (rc == -1) { diff --git a/lib/dbindex.h b/lib/dbindex.h index ddb7223df..08e654763 100644 --- a/lib/dbindex.h +++ b/lib/dbindex.h @@ -25,27 +25,27 @@ typedef /*@abstract@*/ struct { typedef /*@abstract@*/ struct { DB * db; - char * indexname; + const char * indexname; } dbiIndex; #ifdef __cplusplus extern "C" { #endif -dbiIndex * dbiOpenIndex(const char * filename, int flags, int perms, DBTYPE type); -void dbiCloseIndex(dbiIndex * dbi); +/*@only@*/dbiIndex * dbiOpenIndex(const char * filename, int flags, int perms, DBTYPE type); +void dbiCloseIndex(/*@only@*/dbiIndex * dbi); void dbiSyncIndex(dbiIndex * dbi); -int dbiSearchIndex(dbiIndex * dbi, const char * str, dbiIndexSet * set); +int dbiSearchIndex(dbiIndex * dbi, const char * str, /*@out@*/dbiIndexSet * set); /* -1 error, 0 success, 1 not found */ int dbiUpdateIndex(dbiIndex * dbi, const char * str, dbiIndexSet * set); /* 0 on success */ -int dbiAppendIndexRecord(dbiIndexSet * set, dbiIndexRecord rec); +int dbiAppendIndexRecord(/*@out@*/dbiIndexSet * set, dbiIndexRecord rec); /* 0 on success - should never fail */ int dbiRemoveIndexRecord(dbiIndexSet * set, dbiIndexRecord rec); /* 0 on success - fails if rec is not found */ dbiIndexSet dbiCreateIndexRecord(void); void dbiFreeIndexRecord(dbiIndexSet set); -int dbiGetFirstKey(dbiIndex * dbi, const char ** key); +int dbiGetFirstKey(dbiIndex * dbi, /*@out@*/const char ** key); extern unsigned int dbiIndexSetCount(dbiIndexSet set); diff --git a/lib/fprint.c b/lib/fprint.c index 2780fee98..95f055f0f 100644 --- a/lib/fprint.c +++ b/lib/fprint.c @@ -71,7 +71,8 @@ static fingerPrint doLookup(const char * fullName, int scareMemory, /* if the current directory doesn't exist, we might fail. oh well. likewise if it's too long. */ - if (realpath(".", dir) != NULL) { + dir[0] = '\0'; + if ( /*@-unrecog@*/ realpath(".", dir) /*@=unrecog@*/ != NULL) { char *s = alloca(strlen(dir) + strlen(fullName) + 2); sprintf(s, "%s/%s", dir, fullName); fullName = chptr1 = s; @@ -136,8 +137,8 @@ unsigned int fpHashFunction(const void * key) chptr = fp->basename; while (*chptr) ch ^= *chptr++; - hash |= ch << 24; - hash |= (((fp->dev >> 8) ^ fp->dev) & 0xFF) << 16; + hash |= ((unsigned)ch) << 24; + hash |= (((((unsigned)fp->dev) >> 8) ^ fp->dev) & 0xFF) << 16; hash |= fp->ino & 0xFFFF; return hash; @@ -174,6 +175,8 @@ void fpLookupList(const char ** fullNames, fingerPrint * fpList, int numItems, cache.matchLength = 0; cache.pathsStripped = 0; cache.stripLength = 0; + cache.dev = 0; + cache.ino = 0; for (i = 0; i < numItems; i++) { fpList[i] = doLookup(fullNames[i], 1, &cache); diff --git a/lib/hash.c b/lib/hash.c index 45eca4783..8ee66cad6 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -4,10 +4,10 @@ #include "hash.h" struct hashBucket { - const void * key; - const void ** data; + /*@owned@*/const void * key; + /*@owned@*/const void ** data; int dataCount; - struct hashBucket * next; + /*@dependent@*/struct hashBucket * next; }; struct hashTable_s { @@ -18,7 +18,7 @@ struct hashTable_s { hashEqualityType eq; }; -static struct hashBucket * findEntry(hashTable ht, const void * key) +static /*@shared@*/ struct hashBucket * findEntry(hashTable ht, const void * key) { unsigned int hash; struct hashBucket * b; @@ -53,7 +53,7 @@ unsigned int hashFunctionString(const void * string) sum += *chp; } - return ((len << 16) + (sum << 8) + xorValue); + return ((((unsigned)len) << 16) + (((unsigned)sum) << 8) + xorValue); } hashTable htCreate(int numBuckets, int keySize, hashFunctionType fn, @@ -89,7 +89,7 @@ void htAddEntry(hashTable ht, const void * key, const void * data) memcpy(k, key, ht->keySize); b->key = k; } else { - b->key = (void *) key; + b->key = key; } b->dataCount = 0; b->next = ht->buckets[hash]; diff --git a/lib/messages.c b/lib/messages.c index 342ea2bce..ee6f7c1ef 100644 --- a/lib/messages.c +++ b/lib/messages.c @@ -63,15 +63,15 @@ void rpmMessage(int level, const char * format, ...) { fprintf(stderr, _("fatal error: ")); vfprintf(stderr, format, args); fflush(stderr); - exit(1); - break; + exit(EXIT_FAILURE); + /*@unreached@*/ break; default: fprintf(stderr, _("internal error (rpm bug?): ")); vfprintf(stderr, format, args); fflush(stderr); - exit(1); - break; + exit(EXIT_FAILURE); + /*@unreached@*/ break; } } diff --git a/lib/package.c b/lib/package.c index a9264d200..94099f4e3 100644 --- a/lib/package.c +++ b/lib/package.c @@ -19,7 +19,7 @@ #if defined(ENABLE_V1_PACKAGES) /* 0 = success */ /* !0 = error */ -static int readOldHeader(FD_t fd, Header * hdr, int * isSource) +static int readOldHeader(FD_t fd, /*@out@*/Header * hdr, /*@unused@*/ /*@out@*/int * isSource) { struct oldrpmHeader oldheader; struct oldrpmHeaderSpec spec; @@ -143,31 +143,31 @@ static int readOldHeader(FD_t fd, Header * hdr, int * isSource) } } - headerAddEntry(dbentry, RPMTAG_FILENAMES, RPM_STRING_ARRAY_TYPE, + headerAddEntry(*hdr, RPMTAG_FILENAMES, RPM_STRING_ARRAY_TYPE, fileList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILELINKTOS, RPM_STRING_ARRAY_TYPE, + headerAddEntry(*hdr, RPMTAG_FILELINKTOS, RPM_STRING_ARRAY_TYPE, fileLinktoList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEMD5S, RPM_STRING_ARRAY_TYPE, + headerAddEntry(*hdr, RPMTAG_FILEMD5S, RPM_STRING_ARRAY_TYPE, fileMD5List, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILESIZES, RPM_INT32_TYPE, fileSizeList, + headerAddEntry(*hdr, RPMTAG_FILESIZES, RPM_INT32_TYPE, fileSizeList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEUIDS, RPM_INT32_TYPE, fileUIDList, + headerAddEntry(*hdr, RPMTAG_FILEUIDS, RPM_INT32_TYPE, fileUIDList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEGIDS, RPM_INT32_TYPE, fileGIDList, + headerAddEntry(*hdr, RPMTAG_FILEGIDS, RPM_INT32_TYPE, fileGIDList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEMTIMES, RPM_INT32_TYPE, + headerAddEntry(*hdr, RPMTAG_FILEMTIMES, RPM_INT32_TYPE, fileMtimesList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEFLAGS, RPM_INT32_TYPE, + headerAddEntry(*hdr, RPMTAG_FILEFLAGS, RPM_INT32_TYPE, fileFlagsList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEMODES, RPM_INT16_TYPE, + headerAddEntry(*hdr, RPMTAG_FILEMODES, RPM_INT16_TYPE, fileModesList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILERDEVS, RPM_INT16_TYPE, + headerAddEntry(*hdr, RPMTAG_FILERDEVS, RPM_INT16_TYPE, fileRDevsList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILESTATES, RPM_INT8_TYPE, + headerAddEntry(*hdr, RPMTAG_FILESTATES, RPM_INT8_TYPE, fileStatesList, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEUSERNAME, RPM_STRING_ARRAY_TYPE, + headerAddEntry(*hdr, RPMTAG_FILEUSERNAME, RPM_STRING_ARRAY_TYPE, unames, spec.fileCount); - headerAddEntry(dbentry, RPMTAG_FILEGROUPNAME, RPM_STRING_ARRAY_TYPE, + headerAddEntry(*hdr, RPMTAG_FILEGROUPNAME, RPM_STRING_ARRAY_TYPE, gnames, spec.fileCount); free(fileList); @@ -200,12 +200,12 @@ static int readOldHeader(FD_t fd, Header * hdr, int * isSource) /* 0 = success */ /* 1 = bad magic */ /* 2 = error */ -static int readPackageHeaders(FD_t fd, struct rpmlead * leadPtr, - Header * sigs, Header * hdrPtr) +static int readPackageHeaders(FD_t fd, /*@out@*/struct rpmlead * leadPtr, + /*@out@*/Header * sigs, /*@out@*/Header * hdrPtr) { Header hdrBlock; struct rpmlead leadBlock; - Header * hdr; + Header * hdr = NULL; struct rpmlead * lead; int_8 arch; int isSource; @@ -297,7 +297,7 @@ static int readPackageHeaders(FD_t fd, struct rpmlead * leadPtr, rpmError(RPMERR_NEWPACKAGE, _("only packages with major numbers <= 3 " "are supported by this version of RPM")); return 2; - break; + /*@notreached@*/ break; } if (hdrPtr == NULL) headerFree(*hdr); diff --git a/lib/problems.c b/lib/problems.c index 56c703d6a..47ab7b06a 100644 --- a/lib/problems.c +++ b/lib/problems.c @@ -5,6 +5,9 @@ #include "depends.h" #include "misc.h" +/*@access rpmProblemSet@*/ +/*@access rpmProblem@*/ + /* XXX FIXME: merge into problems */ /* XXX used in verify.c */ void printDepFlags(FILE * fp, const char * version, int flags) @@ -45,10 +48,10 @@ void printDepProblems(FILE * fp, struct rpmDependencyConflict * conflicts, } } -char * rpmProblemString(rpmProblem prob) +const char * rpmProblemString(rpmProblem prob) { const char * name, * version, * release; - const char * altName, * altVersion, * altRelease; + const char * altName = NULL, * altVersion = NULL, * altRelease = NULL; char * buf; headerNVR(prob.h, &name, &version, &release); diff --git a/lib/transaction.c b/lib/transaction.c index beb5a0c29..af0d5bce5 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -30,7 +30,12 @@ # endif #endif -struct fileInfo { +/*@access rpmdb@*/ +/*@access rpmTransactionSet@*/ +/*@access rpmProblemSet@*/ +/*@access rpmProblem@*/ + +typedef struct transactionFileInfo { /* for all packages */ enum rpmTransactionType type; enum fileActions * actions; @@ -49,7 +54,7 @@ struct fileInfo { uint_32 * replacedSizes; /* for TR_REMOVED packages */ unsigned int record; -}; +} TFI_t; struct diskspaceInfo { dev_t dev; @@ -70,7 +75,7 @@ struct diskspaceInfo { #define XFA_SKIPPING(_a) \ ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED) -static void freeFi(struct fileInfo *fi) +static void freeFi(TFI_t *fi) { if (fi->h) { headerFree(fi->h); fi->h = NULL; @@ -114,9 +119,9 @@ static void freeFi(struct fileInfo *fi) } } -static void freeFl(rpmTransactionSet ts, struct fileInfo *flList) +static void freeFl(rpmTransactionSet ts, TFI_t *flList) { - struct fileInfo *fi; + TFI_t *fi; int oc; for (oc = 0, fi = flList; oc < ts->orderCount; oc++, fi++) { @@ -564,7 +569,7 @@ static int filecmp(short mode1, const char * md51, const char * link1, return 0; } -static int handleInstInstalledFiles(struct fileInfo * fi, rpmdb db, +static int handleInstInstalledFiles(TFI_t * fi, rpmdb db, struct sharedFileInfo * shared, int sharedCount, int reportConflicts, rpmProblemSet probs) @@ -647,7 +652,7 @@ static int handleInstInstalledFiles(struct fileInfo * fi, rpmdb db, return 0; } -static int handleRmvdInstalledFiles(struct fileInfo * fi, rpmdb db, +static int handleRmvdInstalledFiles(TFI_t * fi, rpmdb db, struct sharedFileInfo * shared, int sharedCount) { @@ -677,7 +682,7 @@ static int handleRmvdInstalledFiles(struct fileInfo * fi, rpmdb db, return 0; } -static void handleOverlappedFiles(struct fileInfo * fi, hashTable ht, +static void handleOverlappedFiles(TFI_t * fi, hashTable ht, rpmProblemSet probs, struct diskspaceInfo * dsl) { int i, j; @@ -686,7 +691,7 @@ static void handleOverlappedFiles(struct fileInfo * fi, hashTable ht, for (i = 0; i < fi->fc; i++) { int otherPkgNum, otherFileNum; - const struct fileInfo ** recs; + const TFI_t ** recs; int numRecs; if (XFA_SKIPPING(fi->actions[i])) @@ -877,7 +882,7 @@ static int ensureOlder(rpmdb db, Header new, int dbOffset, rpmProblemSet probs, return rc; } -static void skipFiles(struct fileInfo * fi, int noDocs) +static void skipFiles(TFI_t * fi, int noDocs) { int i; char ** netsharedPaths = NULL; @@ -993,7 +998,7 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify, int fileCount; int totalFileCount = 0; hashTable ht; - struct fileInfo * flList, * fi; + TFI_t * flList, * fi; struct sharedFileInfo * shared, * sharedList; int numShared; int flEntries; @@ -1443,7 +1448,7 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify, headerFree(hdrs[i]); - if (!alp->fd && fd) + if (alp->fd == NULL && fd) notify(fi->h, RPMCALLBACK_INST_CLOSE_FILE, 0, 0, alp->key, notifyData); break;