16 #define _RPMFI_INTERNAL
19 #define _RPMTE_INTERNAL
34 GENfree(sharedFileInfo)
57 p->fd =
fdFree(p->fd,
"delTE");
61 p->arch =
_free(p->arch);
62 p->epoch =
_free(p->epoch);
63 p->name =
_free(p->name);
64 p->version =
_free(p->version);
65 p->release =
_free(p->release);
66 #ifdef RPM_VENDOR_MANDRIVA
67 p->distepoch =
_free(p->distepoch);
69 p->NEVR =
_free(p->NEVR);
70 p->NEVRA =
_free(p->NEVRA);
71 p->pkgid =
_free(p->pkgid);
72 p->hdrid =
_free(p->hdrid);
73 p->sourcerpm =
_free(p->sourcerpm);
75 p->replaced =
_free(p->replaced);
77 p->flink.NEVRA =
argvFree(p->flink.NEVRA);
78 p->flink.Pkgid =
argvFree(p->flink.Pkgid);
79 p->flink.Hdrid =
argvFree(p->flink.Hdrid);
80 p->blink.NEVRA =
argvFree(p->blink.NEVRA);
81 p->blink.Pkgid =
argvFree(p->blink.Pkgid);
82 p->blink.Hdrid =
argvFree(p->blink.Hdrid);
84 assert(p->txn == NULL);
117 assert(he->
p.
str != NULL);
118 p->NEVR = (xx ? he->
p.
str :
xstrdup(
"?N-?V-?R.?A"));
122 p->name = (xx ? he->
p.
str :
xstrdup(
"?RPMTAG_NAME?"));
125 p->version = (
char *)(xx ? he->
p.
str :
xstrdup(
"?RPMTAG_VERSION?"));
128 p->release = (
char *)(xx ? he->
p.
str :
xstrdup(
"?RPMTAG_RELEASE?"));
134 if (he->
p.
ui8p != NULL) {
135 static const char hex[] =
"0123456789abcdef";
139 p->pkgid = t = (
char *)
xmalloc((2*he->
c) + 1);
140 for (i = 0 ; i < he->
c; i++) {
141 *t++ = hex[ (unsigned)((he->
p.
ui8p[i] >> 4) & 0x0f) ];
142 *t++ = hex[ (unsigned)((he->
p.
ui8p[i] ) & 0x0f) ];
151 p->hdrid = (xx ? he->
p.
str :
xstrdup(
"?RPMTAG_HDRID?"));
155 p->sourcerpm = (xx ? he->
p.
str : NULL);
159 p->arch = (xx ? he->
p.
str :
xstrdup(
"?RPMTAG_ARCH?"));
173 if (he->
p.
ui32p != NULL) {
174 p->epoch = (
char *)
xmalloc(20);
175 sprintf(p->epoch,
"%u", he->
p.
ui32p[0]);
180 #ifdef RPM_VENDOR_MANDRIVA
183 if (he->
p.
str != NULL) {
184 p->distepoch = (
char*)(xx ? he->
p.
str :
xstrdup(
"?RPMTAG_DISTEPOCH?"));
192 p->autorelocatex = -1;
200 memset(p->originTid, 0,
sizeof(p->originTid));
201 memset(p->originTime, 0,
sizeof(p->originTime));
235 if (_rpmtePool == NULL) {
241 memset(((
char *)te)+
sizeof(te->_item), 0,
sizeof(*te)-
sizeof(te->_item));
258 addTE(ts, p, h, key, relocs);
261 p->u.addedKey = pkgKey;
263 p->pkgFileSize = 96 + 256;
267 p->pkgFileSize += *he->
p.
ui32p;
271 p->u.addedKey = pkgKey;
272 p->u.removed.dboffset = dboffset;
281 return (te != NULL ? te->db_instance : 0);
288 te->db_instance = instance;
294 return (te != NULL && te->h != NULL ?
headerLink(te->h) : NULL);
318 return (te != NULL ? te->name : NULL);
323 return (te != NULL ? te->epoch : NULL);
328 return (te != NULL ? te->version : NULL);
333 return (te != NULL ? te->release : NULL);
338 #ifdef RPM_VENDOR_MANDRIVA
339 return (te != NULL ? te->distepoch : NULL);
347 return (te != NULL ? te->arch : NULL);
352 return (te != NULL ? te->os : NULL);
357 return (te != NULL ? te->isSource : 0);
362 return (te != NULL ? te->color : 0);
377 return (te != NULL ? te->pkgFileSize : 0);
382 return te->originTid;
387 return te->originTime;
392 return (te != NULL ? te->depth : 0);
407 return (te != NULL ? te->depth : 0);
414 obreadth = te->breadth;
415 te->breadth = nbreadth;
422 return (te != NULL ? te->npreds : 0);
437 return (te != NULL ? te->tree : 0);
452 return (te != NULL ? te->parent : NULL);
469 return (te != NULL ? te->degree : 0);
476 odegree = te->degree;
477 te->degree = ndegree;
491 if (te != NULL &&
rpmteTSI(te) != NULL) {
495 while ((tsi =
rpmteTSI(te)->tsi_next) != NULL) {
496 rpmteTSI(te)->tsi_next = tsi->tsi_next;
497 tsi->tsi_next = NULL;
500 te->tsi =
_free(te->tsi);
524 opkgKey = te->u.addedKey;
525 te->u.addedKey = npkgKey;
533 return (te != NULL ? te->u.removed.dboffset : 0);
538 return (te != NULL ? te->NEVR : NULL);
543 return (te != NULL ? te->NEVRA : NULL);
548 return (te != NULL ? te->pkgid : NULL);
553 return (te != NULL ? te->hdrid : NULL);
558 return (te != NULL ? te->sourcerpm : NULL);
564 return (te != NULL ? te->fd : NULL);
570 return (te != NULL ? te->key : NULL);
643 nb = Count *
sizeof(*colors);
645 nb = Count *
sizeof(*refs);
658 mydt = (char)((ix >> 24) & 0xff);
662 assert ((
int)ix < Count);
685 const char * blinkNEVRA = NULL;
686 const char * blinkPkgid = NULL;
687 const char * blinkHdrid = NULL;
694 assert(he->
p.
str != NULL);
695 blinkNEVRA = he->
p.
str;
704 if (xx && he->
p.
ui8p != NULL) {
705 static const char hex[] =
"0123456789abcdef";
709 blinkPkgid = t = (
char *)
xmalloc((2*he->
c) + 1);
710 for (i = 0 ; i < he->
c; i++) {
711 *t++ = hex[ ((he->
p.
ui8p[i] >> 4) & 0x0f) ];
712 *t++ = hex[ ((he->
p.
ui8p[i] ) & 0x0f) ];
721 blinkHdrid = he->
p.
str;
725 fprintf(stderr,
"%s argvAdd(&q->flink.NEVRA, \"%s\")\n", msg, p->NEVRA);
726 xx =
argvAdd(&q->flink.NEVRA, p->NEVRA);
728 fprintf(stderr,
"%s argvAdd(&p->blink.NEVRA, \"%s\")\n", msg, blinkNEVRA);
729 xx =
argvAdd(&p->blink.NEVRA, blinkNEVRA);
731 fprintf(stderr,
"%s argvAdd(&q->flink.Pkgid, \"%s\")\n", msg, p->pkgid);
732 if (p->pkgid != NULL)
733 xx =
argvAdd(&q->flink.Pkgid, p->pkgid);
735 fprintf(stderr,
"%s argvAdd(&p->blink.Pkgid, \"%s\")\n", msg, blinkPkgid);
736 if (blinkPkgid != NULL)
737 xx =
argvAdd(&p->blink.Pkgid, blinkPkgid);
739 fprintf(stderr,
"%s argvAdd(&q->flink.Hdrid, \"%s\")\n", msg, p->hdrid);
740 if (p->hdrid != NULL)
741 xx =
argvAdd(&q->flink.Hdrid, p->hdrid);
743 fprintf(stderr,
"%s argvAdd(&p->blink.Hdrid, \"%s\")\n", msg, blinkHdrid);
744 if (blinkHdrid != NULL)
745 xx =
argvAdd(&p->blink.Hdrid, blinkHdrid);
748 blinkNEVRA =
_free(blinkNEVRA);
749 blinkPkgid =
_free(blinkPkgid);
750 blinkHdrid =
_free(blinkHdrid);
781 if (_rpmtsiPool == NULL) {
787 memset(((
char *)tsi)+
sizeof(tsi->_item), 0,
sizeof(*tsi)-
sizeof(tsi->_item));
800 tsi->ocsave = tsi->oc;
817 if (tsi == NULL || tsi->ts == NULL ||
rpmtsNElements(tsi->ts) <= 0)
821 if (tsi->oc >= 0) oc = tsi->oc--;
836 if (type == 0 || (te->type & type) != 0)
860 if (te->fd != NULL) {
886 if (te == NULL || ts == NULL)
903 te->fi = getFI(te, ts, h);
907 static int scareMem = 0;
924 if (te == NULL || ts == NULL)
929 if (te->fd != NULL) {
947 return (te != NULL) ? te->linkFailed : -1;
952 rpmfi fi = (te ? te->fi : NULL);
960 rc = (fi->pretrans || fi->pretransprog) ? 1 : 0;
964 rc = (fi->posttrans || fi->posttransprog) ? 1 : 0;
980 if (rpmteDependsOn(p) == te) {
990 return te ? te->probs : NULL;
993 rpmfs rpmteGetFileStates(
rpmte te) {
998 rpmfs fs = (rpmfs)
xmalloc(
sizeof(*fs));
1000 fs->replaced = NULL;
1003 fs->states = (sharedFileInfo)
xmalloc(
sizeof(*fs->states) * fs->fc);
1006 fs->actions = (rpmFIleAction *)
xmalloc(fc *
sizeof(*fs->actions));
1007 memset(fs->actions,
FA_UNKNOWN, fc *
sizeof(*fs->actions));
1008 fs->numReplaced = fs->allocatedReplaced = 0;
1012 rpmfs rpmfsFree(rpmfs fs) {
1013 fs->replaced =
_free(fs->replaced);
1014 fs->states =
_free(fs->states);
1015 fs->actions =
_free(fs->actions);
1021 rpm_count_t rpmfsFC(rpmfs fs) {
1025 void rpmfsAddReplaced(rpmfs fs,
int pkgFileNum,
int otherPkg,
int otherFileNum)
1027 if (!fs->replaced) {
1028 fs->replaced = (sharedFileInfo)
xcalloc(3,
sizeof(*fs->replaced));
1029 fs->allocatedReplaced = 3;
1031 if (fs->numReplaced>=fs->allocatedReplaced) {
1032 fs->allocatedReplaced += (fs->allocatedReplaced>>1) + 2;
1033 fs->replaced = (sharedFileInfo)
xrealloc(fs->replaced, fs->allocatedReplaced*
sizeof(*fs->replaced));
1035 fs->replaced[fs->numReplaced].pkgFileNum = pkgFileNum;
1036 fs->replaced[fs->numReplaced].otherPkg = otherPkg;
1037 fs->replaced[fs->numReplaced].otherFileNum = otherFileNum;
1042 sharedFileInfo rpmfsGetReplaced(rpmfs fs)
1044 if (fs && fs->numReplaced)
1045 return fs->replaced;
1050 sharedFileInfo rpmfsNextReplaced(rpmfs fs , sharedFileInfo replaced)
1052 if (fs && replaced) {
1054 if (replaced - fs->replaced < fs->numReplaced)
1060 void rpmfsSetState(rpmfs fs,
unsigned int ix,
rpmfileState state)
1062 assert(ix < fs->fc);
1063 fs->states[ix] = state;
1068 assert(ix < fs->fc);
1069 if (fs->states)
return fs->states[ix];
1073 rpm_fstate_t * rpmfsGetStates(rpmfs fs)
1078 rpmFileAction rpmfsGetAction(rpmfs fs,
unsigned int ix)
1080 rpmFileAction action;
1081 if (fs->actions != NULL && ix < fs->fc) {
1082 action = fs->actions[ix];
1089 void rpmfsSetAction(rpmfs fs,
unsigned int ix, rpmFileAction action)
1091 if (fs->actions != NULL && ix < fs->fc) {
1092 fs->actions[ix] = action;