#include <string.h>
#include <unistd.h>
#include <assert.h>
+#include <stdint.h>
#include <rpm/rpmio.h>
#include <rpm/rpmpgp.h>
+#ifndef RPM5
#include <rpm/header.h>
+#endif
#include <rpm/rpmdb.h>
#ifndef DB_CREATE
#define DEP_PRE ((1 << 6) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12))
+#ifdef RPM5
+# define RPM_INDEX_SIZE 4
+#else
+# define RPM_INDEX_SIZE 8
+#endif
+
struct rpmid {
unsigned int dbid;
char *name;
exit(1);
}
while (dbc->c_get(dbc, &dbkey, &dbdata, DB_NEXT) == 0)
- count += dbdata.size >> 3;
+ count += dbdata.size / RPM_INDEX_SIZE;
dbc->c_close(dbc);
db->close(db, 0);
return count;
perror("db->get_byteswapped");
exit(1);
}
+#if defined(RPM5) && !defined(WORDS_BIGENDIAN)
+ byteswapped = !byteswapped;
+#endif
if (db->cursor(db, NULL, &dbc, 0))
{
perror("db->cursor");
perror("db->get_byteswapped");
exit(1);
}
+#if defined(RPM5) && !defined(WORDS_BIGENDIAN)
+ byteswapped = !byteswapped;
+#endif
if (db->cursor(db, NULL, &dbc, 0))
{
perror("db->cursor");
continue;
dl = dbdata.size;
dp = dbdata.data;
- while(dl >= 8)
+ while(dl >= RPM_INDEX_SIZE)
{
if (byteswapped)
{
memcpy(rpmids[nrpmids].name, dbkey.data, (int)dbkey.size);
rpmids[nrpmids].name[(int)dbkey.size] = 0;
nrpmids++;
- dp += 8;
- dl -= 8;
+ dp += RPM_INDEX_SIZE;
+ dl -= RPM_INDEX_SIZE;
}
}
dbc->c_close(dbc);
perror("db->get_byteswapped");
exit(1);
}
+#if defined(RPM5) && !defined(WORDS_BIGENDIAN)
+ byteswapped = !byteswapped;
+#endif
}
if (byteswapped)
{
db->close(db, 0);
return 0;
}
+#if defined(RPM5) && !defined(WORDS_BIGENDIAN)
+ byteswapped = !byteswapped;
+#endif
if (db->cursor(db, NULL, &dbc, 0))
{
perror("db->cursor");
continue;
dl = dbdata.size;
dp = dbdata.data;
- while(dl >= 8)
+ while(dl >= RPM_INDEX_SIZE)
{
if (byteswapped)
{
memcpy(namedata + namedatal, dbkey.data, dbkey.size);
namedata[namedatal + dbkey.size] = 0;
namedatal += dbkey.size + 1;
- dp += 8;
- dl -= 8;
+ dp += RPM_INDEX_SIZE;
+ dl -= RPM_INDEX_SIZE;
}
if (match)
break;
state->dbenv = 0;
return 0;
}
+#if defined(RPM5) && !defined(WORDS_BIGENDIAN)
+ state->byteswapped = !state->byteswapped;
+#endif
}
memcpy(buf, &rpmdbid, 4);
if (state->byteswapped)
int sigdsize, sigcnt, l;
RpmHead *rpmhead;
+#ifndef RPM5
uh = headerUnload(h);
+#else
+ uh = headerUnload(h, NULL);
+#endif
if (!uh)
return 0;
sigcnt = getu32(uh);
parsekeydata(s, data, pkts, pktsl);
/* only rpm knows how to do the release calculation, we don't dare
* to recreate all the bugs */
+#ifndef RPM5
dig = pgpNewDig();
+#else
+ dig = pgpDigNew(RPMVSF_DEFAULT, 0);
+#endif
(void) pgpPrtPkts(pkts, pktsl, dig, 0);
btime = dig->pubkey.time[0] << 24 | dig->pubkey.time[1] << 16 | dig->pubkey.time[2] << 8 | dig->pubkey.signid[3];
sprintf(evrbuf, "%02x%02x%02x%02x-%02x%02x%02x%02x", dig->pubkey.signid[4], dig->pubkey.signid[5], dig->pubkey.signid[6], dig->pubkey.signid[7], dig->pubkey.time[0], dig->pubkey.time[1], dig->pubkey.time[2], dig->pubkey.time[3]);
repodata_set_str(data, s - s->repo->pool->solvables, PUBKEY_KEYID, keyid);
if (dig->pubkey.userid)
setutf8string(data, s - s->repo->pool->solvables, SOLVABLE_SUMMARY, dig->pubkey.userid);
- pgpFreeDig(dig);
+ (void)pgpFreeDig(dig);
sat_free((void *)pkts);
return 1;
}