23 #define _RPMGI_INTERNAL
33 #define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG))
35 #define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG))
36 #define VSF_SET(_vsflags, _FLAG) \
37 (*((unsigned *)&(_vsflags)) |= (RPMVSF_##_FLAG))
38 #define VSF_CLR(_vsflags, _FLAG) \
39 (*((unsigned *)&(_vsflags)) &= ~(RPMVSF_##_FLAG))
43 #define QVA_ISSET(_qvaflags, _FLAG) ((_qvaflags) & (VERIFY_##_FLAG))
45 #define VSF_ISSET(_vsflags, _FLAG) ((_vsflags) & (RPMVSF_##_FLAG))
46 #define VSF_SET(_vsflags, _FLAG) (_vsflags) |= (RPMVSF_##_FLAG)
47 #define VSF_CLR(_vsflags, _FLAG) (_vsflags) &= ~(RPMVSF_##_FLAG)
100 static int cmpItem(
const void * a,
const void * b) {
109 for (i = 0; i <
nitems; i++)
111 items =
_free(items);
120 if (fp == NULL) fp = stdout;
121 for (i = 0; i <
nitems; i++) {
130 fprintf(fp,
"%s\n", ip->
path);
137 HE_t he = memset(
alloca(
sizeof(*he)), 0,
sizeof(*he));
151 for (i = 0; i <
nitems; i++) {
164 if (!xx || md5 == NULL) {
231 struct stat sb, * st;
242 if (items != NULL &&
nitems > 0) {
243 Item needle = memset(
alloca(
sizeof(*needle)), 0,
sizeof(*needle));
244 Item * found, * fneedle = &needle;
248 found = bsearch(fneedle, items,
nitems,
sizeof(*found),
cmpItem);
251 while (found > items &&
cmpItem(found-1, fneedle) == 0)
256 while (found < (items +
nitems) &&
cmpItem(found, fneedle) == 0) {
275 }
else if (ec == 1) {
285 if (st == NULL || ((
long)st & 0xffff0000) == 0
L) {
287 memset(st, 0,
sizeof(*st));
292 items[i]->
size = st->st_size;
293 items[i]->
mtime = st->st_mtime;
303 fprintf(stderr,
"\t%*s [%d] %s\n",
333 if (!(fts_info >= 1 && fts_info <= 14))
340 FTS * ftsp = gi->ftsp;
344 const char * pattern;
376 if ((patterns = bhg->
patterns) != NULL)
377 while ((pattern = *patterns++) != NULL) {
391 if ((patterns = bhg->
patterns) != NULL)
392 while ((pattern = *patterns++) != NULL) {
429 if (strcmp(s,
".rpm"))
471 if (argv != NULL && * argv != NULL) {
479 while ((arg = *argv++) != NULL) {
483 t[-1] = (char)(single ?
'\0' :
')');
496 const char * pattern;
501 macro =
"%{_bhpath}";
504 macro =
"%{_bhcoll}";
507 macro = (buf[0] ==
'\0' ?
"%{_bhN}" : buf);
523 if (pattern == NULL || *pattern ==
'\0') {
524 pattern =
_free(pattern);
529 if (bhglobs[i].patterns[0] != NULL)
531 i, bhglobs[i].patterns[0]);
542 bhglobs =
_free(bhglobs);
552 N_(
"don't verify header+payload signature"), NULL },
554 {
"cache",
'\0', POPT_ARG_VAL, &
noCache, 0,
555 N_(
"update cache database"), NULL },
556 {
"nocache",
'\0', POPT_ARG_VAL, &
noCache, -1,
557 N_(
"don't update cache database, only print package paths"), NULL },
560 N_(
"File tree walk options:"),
564 N_(
"Common options for all rpm modes and executables:"),
587 s =
rpmExpand(
"%{?_cache_dbpath}", NULL);
596 fprintf(stderr,
_(
"%s: %%{_cache_dbpath} macro is mis-configured.\n"),
603 #if defined(SUPPORT_NOSIGNATURES)
624 { uint32_t tid = (uint32_t) time(NULL);
652 fprintf(stderr,
_(
"%s: cache operation failed: ec %d.\n"),