From a1a283837a6b70c9ee4731f9172cfc614a1a7c6b Mon Sep 17 00:00:00 2001 From: jbj Date: Thu, 18 Mar 2004 15:29:23 +0000 Subject: [PATCH] Resurrect "other endian" rpmdb functionality. CVS patchset: 7177 CVS date: 2004/03/18 15:29:23 --- rpmdb/dbconfig.c | 2 +- rpmdb/rpmdb.c | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/rpmdb/dbconfig.c b/rpmdb/dbconfig.c index d20327c..0a87cd9 100644 --- a/rpmdb/dbconfig.c +++ b/rpmdb/dbconfig.c @@ -437,7 +437,7 @@ dbiIndex db3New(rpmdb rpmdb, rpmTag rpmtag) } /*@=sizeoftype@*/ - dbi->dbi_byteswapped = 0; /* -1 unknown, 0 native order, 1 alien order */ + dbi->dbi_byteswapped = -1; /* -1 unknown, 0 native order, 1 alien order */ if (!dbi->dbi_use_dbenv) { /* db3 dbenv is always used now. */ dbi->dbi_use_dbenv = 1; diff --git a/rpmdb/rpmdb.c b/rpmdb/rpmdb.c index 409a565..4803818 100644 --- a/rpmdb/rpmdb.c +++ b/rpmdb/rpmdb.c @@ -2200,9 +2200,15 @@ top: /* Don't bother re-checking a previously read header. */ if (mi->mi_db->db_bits) { - pbm_set * set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits, - &mi->mi_db->db_nbits, mi->mi_offset); - if (PBM_ISSET(mi->mi_offset, set)) + pbm_set * set; +union _dbswap mi_offset; + +memcpy(&mi_offset.ui, &mi->mi_offset, sizeof(mi_offset.ui)); +if (dbiByteSwapped(dbi) == 1) + _DBSWAP(mi_offset); + set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits, + &mi->mi_db->db_nbits, mi_offset.ui); + if (PBM_ISSET(mi_offset.ui, set)) rpmrc = RPMRC_OK; } @@ -2220,9 +2226,15 @@ top: /* Mark header checked. */ if (mi->mi_db && mi->mi_db->db_bits && rpmrc == RPMRC_OK) { - pbm_set * set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits, - &mi->mi_db->db_nbits, mi->mi_offset); - PBM_SET(mi->mi_offset, set); + pbm_set * set; +union _dbswap mi_offset; + +memcpy(&mi_offset.ui, &mi->mi_offset, sizeof(mi_offset.ui)); +if (dbiByteSwapped(dbi) == 1) + _DBSWAP(mi_offset); + set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits, + &mi->mi_db->db_nbits, mi_offset.ui); + PBM_SET(mi_offset.ui, set); } /* Skip damaged and inconsistent headers. */ -- 2.7.4