]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Make libsolv work with rpm 5.2
authorMichael Schroeder <mls@suse.de>
Wed, 5 Jun 2019 13:58:55 +0000 (15:58 +0200)
committerMichael Schroeder <mls@suse.de>
Wed, 5 Jun 2019 13:58:55 +0000 (15:58 +0200)
Version 5.2 still used native endian encoding for the database ids.

ext/repo_rpmdb_bdb.h

index ed82a69cbd3e5e829a176921eb73d391a7ce8d45..d0053f7101d8f95fc916eee2795e37e3d0c64c63 100644 (file)
 # define RPM_INDEX_SIZE 8      /* rpmdbid + array index */
 #endif
 
+#ifdef RPM5
+# include <rpm/rpmversion.h>
+# 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)