10 #define _RPMGI_INTERNAL
11 #define _RPMTS_INTERNAL
68 if (!(fts_info >= 1 && fts_info <= 14))
92 fd =
Fopen(fn, fmode);
94 if (fd == NULL ||
Ferror(fd)) {
96 if (fd != NULL) (void)
Fclose(fd);
170 if (gi->argv != NULL && gi->argv[gi->i] != NULL) {
171 gi->keyp = gi->argv[gi->i];
197 if (gi->argv != NULL && gi->argv[gi->i] != NULL)
201 fn = gi->argv[gi->i];
215 gi->argv[gi->i] = NULL;
218 gi->argv[gi->i] = fn;
259 if (strcmp(s,
".rpm"))
293 if (gi->ftsp != NULL)
294 while ((gi->fts =
Fts_read(gi->ftsp)) != NULL) {
295 if (gi->walkPathFilter)
296 rpmrc = (*gi->walkPathFilter) (gi);
314 if (gi->stash != NULL)
315 (void) (*gi->stash) (gi, gi->h);
330 for (se = s; *se; se++) {
338 for (se = s; *se; se++) {
367 while (argv[ac] != NULL)
378 while ((arg = *argv++) != NULL) {
408 fprintf(stderr,
"*** gi %p key %p[%d]\tmi %p\n", gi, gi->keyp, (
int)gi->keylen, gi->mi);
410 if (gi->argv != NULL)
411 for (av = (
const char **) gi->argv; *av != NULL; av++) {
422 if ((ae = strchr(a,
'=')) != NULL) {
436 fprintf(stderr,
"\tav %p[%d]: \"%s\" -> %s ~= \"%s\"\n", gi->argv, (
int)(av - gi->argv), *av,
tagName(tag), pat);
455 if (gi == NULL)
return NULL;
458 fprintf(stderr,
"--> gi %p -- %d %s(%s) at %s:%u\n", gi, gi->nrefs, msg,
tagName(gi->tag), fn, ln);
466 if (gi == NULL)
return NULL;
470 fprintf(stderr,
"--> gi %p ++ %d %s(%s) at %s:%u\n", gi, gi->nrefs, msg,
tagName(gi->tag), fn, ln);
487 gi->hdrPath =
_free(gi->hdrPath);
492 if (gi->ftsp != NULL) {
498 if (gi->fd != NULL) {
506 memset(gi, 0,
sizeof(*gi));
538 gi->argv =
xcalloc(1,
sizeof(*gi->argv));
543 gi->walkPathFilter = NULL;
563 fprintf(stderr,
"*** %s(%p) tag %s\n", __FUNCTION__, gi,
tagName(gi->tag));
567 gi->hdrPath =
_free(gi->hdrPath);
580 if (rpmrc !=
RPMRC_OK || gi->mi == NULL) {
588 if (gi->mi != NULL) {
594 gi->hdrPath =
rpmExpand(
"rpmdb h# ", hnum, NULL);
614 if (gi->mi != NULL) {
620 gi->hdrPath =
rpmExpand(
"rpmdb h# ", hnum, NULL);
634 const char * teTypeString = NULL;
640 if ((p =
rpmtsiNext(gi->tsi, teType)) != NULL) {
646 case TR_ADDED: teTypeString =
"+++";
break;
649 sprintf(hnum,
"%u", (
unsigned)gi->i);
650 gi->hdrPath =
rpmExpand(
"%s h# ", teTypeString, hnum, NULL);
662 const char * path =
rpmExpand(
"%{?_query_hdlist_path}", NULL);
663 if (path == NULL || *path ==
'\0') {
671 if (gi->fd != NULL) {
676 sprintf(hnum,
"%u", (
unsigned)gi->i);
677 gi->hdrPath =
rpmExpand(
"hdlist h# ", hnum, NULL);
683 if (gi->fd != NULL) (void)
Fclose(gi->fd);
691 fprintf(stderr,
"*** gi %p\t%p[%d]: %s\n", gi, gi->argv, gi->i, gi->argv[gi->i]);
698 gi->hdrPath =
xstrdup(gi->argv[gi->i]);
701 if (gi->argv == NULL || gi->argv[0] == NULL)
705 gi->ftsp =
Fts_open((
char *
const *)gi->argv, gi->ftsOpts, NULL);
720 gi->hdrPath =
xstrdup(gi->fts->fts_path);
747 ts->goal = TSM_INSTALL;
752 ts->goal = TSM_ERASE;
773 if (ts->suggests != NULL && ts->nsuggests > 0) {
775 for (i = 0; i < ts->nsuggests; i++) {
776 const char * str = ts->suggests[i];
783 ts->suggests[i] = NULL;
786 ts->suggests =
_free(ts->suggests);
798 xx = (*gi->tsOrder) (ts);
807 gi->hdrPath =
_free(gi->hdrPath);
815 return (gi != NULL ? gi->hdrPath : NULL);
821 return (gi != NULL ? gi->h : NULL);
828 return (gi != NULL ? gi->ts : NULL);