static rpmTagVal _tagValue(const char * tagstr) { const struct headerTagTableEntry_s *t; int comparison, i, l, u; if (!rstrcasecmp(tagstr, "Packages")) return RPMDBI_PACKAGES; if (_rpmTags.byName == NULL) tagLoadIndex(&_rpmTags.byName, &_rpmTags.byNameSize, tagCmpName); if (_rpmTags.byName == NULL) return RPMTAG_NOT_FOUND; l = 0; u = _rpmTags.byNameSize; while (l < u) { i = (l + u) / 2; t = _rpmTags.byName[i]; comparison = rstrcasecmp(tagstr, t->shortname); if (comparison < 0) u = i; else if (comparison > 0) l = i + 1; else return t->val; } return RPMTAG_NOT_FOUND; }
static int isMemberInEntry(Header h, const char *name, rpmTagVal tag) { struct rpmtd_s td; int found = 0; const char *str; if (!headerGet(h, tag, &td, HEADERGET_MINMEM)) return -1; while ((str = rpmtdNextString(&td))) { if (!rstrcasecmp(str, name)) { found = 1; break; } } rpmtdFreeData(&td); return found; }
static inline int parseYesNo(const char * s) { return ((!s || (s[0] == 'n' || s[0] == 'N' || s[0] == '0') || !rstrcasecmp(s, "false") || !rstrcasecmp(s, "off")) ? 0 : 1); }