static char * fflagsFormat(rpmtd td, char * formatPrefix)
{
char * val = NULL;
- char buf[15];
if (rpmtdClass(td) != RPM_NUMERIC_CLASS) {
val = xstrdup(_("(not a number)"));
} else {
- uint64_t anint = rpmtdGetNumber(td);
- buf[0] = '\0';
- if (anint & RPMFILE_DOC)
- strcat(buf, "d");
- if (anint & RPMFILE_CONFIG)
- strcat(buf, "c");
- if (anint & RPMFILE_SPECFILE)
- strcat(buf, "s");
- if (anint & RPMFILE_MISSINGOK)
- strcat(buf, "m");
- if (anint & RPMFILE_NOREPLACE)
- strcat(buf, "n");
- if (anint & RPMFILE_GHOST)
- strcat(buf, "g");
- if (anint & RPMFILE_LICENSE)
- strcat(buf, "l");
- if (anint & RPMFILE_README)
- strcat(buf, "r");
-
+ char *buf = rpmFFlagsString(rpmtdGetNumber(td), "");
strcat(formatPrefix, "s");
rasprintf(&val, formatPrefix, buf);
+ free(buf);
}
return val;
#undef aok
#undef unknown
+char * rpmFFlagsString(uint32_t fflags, const char *pad)
+{
+ char *fmt = NULL;
+ rasprintf(&fmt, "%s%s%s%s%s%s%s%s",
+ (fflags & RPMFILE_DOC) ? "d" : pad,
+ (fflags & RPMFILE_CONFIG) ? "c" : pad,
+ (fflags & RPMFILE_SPECFILE) ? "s" : pad,
+ (fflags & RPMFILE_MISSINGOK) ? "m" : pad,
+ (fflags & RPMFILE_NOREPLACE) ? "n" : pad,
+ (fflags & RPMFILE_GHOST) ? "g" : pad,
+ (fflags & RPMFILE_LICENSE) ? "l" : pad,
+ (fflags & RPMFILE_README) ? "r" : pad);
+ return fmt;
+}
+
/**
* Check file info from header against what's actually installed.
* @param ts transaction set
rpmfiInit(fi, 0);
while (rpmfiNext(fi) >= 0) {
rpmfileAttrs fileAttrs = rpmfiFFlags(fi);
- char *buf = NULL;
+ char *buf = NULL, *attrFormat;
+ char ac;
int rc;
/* If not verifying %ghost, skip ghost files. */
rpmdbFreeIterator(mi);
}
+ attrFormat = rpmFFlagsString(fileAttrs, "");
+ ac = rstreq(attrFormat, "") ? ' ' : attrFormat[0];
if (rc) {
if (!(fileAttrs & (RPMFILE_MISSINGOK|RPMFILE_GHOST)) || rpmIsVerbose()) {
- rasprintf(&buf, _("missing %c %s"),
- ((fileAttrs & RPMFILE_CONFIG) ? 'c' :
- (fileAttrs & RPMFILE_DOC) ? 'd' :
- (fileAttrs & RPMFILE_GHOST) ? 'g' :
- (fileAttrs & RPMFILE_LICENSE) ? 'l' :
- (fileAttrs & RPMFILE_PUBKEY) ? 'P' :
- (fileAttrs & RPMFILE_README) ? 'r' : ' '),
- rpmfiFN(fi));
+ rasprintf(&buf, _("missing %c %s"), ac, rpmfiFN(fi));
if ((verifyResult & RPMVERIFY_LSTATFAIL) != 0 &&
errno != ENOENT) {
char *app;
}
} else if (verifyResult || rpmIsVerbose()) {
char *verifyFormat = rpmVerifyString(verifyResult, ".");
- rasprintf(&buf, "%s %c %s", verifyFormat,
- ((fileAttrs & RPMFILE_CONFIG) ? 'c' :
- (fileAttrs & RPMFILE_DOC) ? 'd' :
- (fileAttrs & RPMFILE_GHOST) ? 'g' :
- (fileAttrs & RPMFILE_LICENSE) ? 'l' :
- (fileAttrs & RPMFILE_PUBKEY) ? 'P' :
- (fileAttrs & RPMFILE_README) ? 'r' : ' '),
- rpmfiFN(fi));
+ rasprintf(&buf, "%s %c %s", verifyFormat, ac, rpmfiFN(fi));
free(verifyFormat);
if (verifyResult) ec = 1;
}
+ free(attrFormat);
if (buf) {
rpmlog(RPMLOG_NOTICE, "%s\n", buf);