From: Michael Schroeder Date: Wed, 5 Jun 2019 13:58:55 +0000 (+0200) Subject: Make libsolv work with rpm 5.2 X-Git-Tag: 0.7.5~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68d72a88d5dc983aff2ff5dce65581de0ee42b6d;p=thirdparty%2Flibsolv.git Make libsolv work with rpm 5.2 Version 5.2 still used native endian encoding for the database ids. --- diff --git a/ext/repo_rpmdb_bdb.h b/ext/repo_rpmdb_bdb.h index ed82a69c..d0053f71 100644 --- a/ext/repo_rpmdb_bdb.h +++ b/ext/repo_rpmdb_bdb.h @@ -27,6 +27,13 @@ # define RPM_INDEX_SIZE 8 /* rpmdbid + array index */ #endif +#ifdef RPM5 +# include +# if RPMLIB_VERSION_GE(5,3,_,0,0,_) +# define RPM5_BIG_ENDIAN_ID +# endif +#endif + /******************************************************************/ /* Rpm Database stuff @@ -66,11 +73,10 @@ stat_database(struct rpmdbstate *state, char *dbname, struct stat *statbuf, int return 0; } - static inline Id db2rpmdbid(unsigned char *db, int byteswapped) { -#ifdef RPM5 +#ifdef RPM5_BIG_ENDIAN_ID return db[0] << 24 | db[1] << 16 | db[2] << 8 | db[3]; #else # if defined(WORDS_BIGENDIAN) @@ -87,7 +93,7 @@ db2rpmdbid(unsigned char *db, int byteswapped) static inline void rpmdbid2db(unsigned char *db, Id id, int byteswapped) { -#ifdef RPM5 +#ifdef RPM5_BIG_ENDIAN_ID db[0] = id >> 24, db[1] = id >> 16, db[2] = id >> 8, db[3] = id; #else # if defined(WORDS_BIGENDIAN)