1 /* 2 * Copyright (c) 2007-2008, Novell Inc. 3 * 4 * This program is licensed under the BSD license, read LICENSE.BSD 5 * for further information 6 */ 7 8 #include "queue.h" 9 #include "repo.h" 10 #include "chksum.h" 11 12 struct headerToken_s; 13 14 extern int repo_add_rpmdb(Repo *repo, Repo *ref, int flags); 15 extern int repo_add_rpmdb_reffp(Repo *repo, FILE *reffp, int flags); 16 extern Id repo_add_rpm(Repo *repo, const char *rpm, int flags); 17 18 #define RPMDB_REPORT_PROGRESS (1 << 8) 19 #define RPM_ADD_WITH_PKGID (1 << 9) 20 #define RPM_ADD_NO_FILELIST (1 << 10) 21 #define RPM_ADD_NO_RPMLIBREQS (1 << 11) 22 #define RPM_ADD_WITH_SHA1SUM (1 << 12) 23 #define RPM_ADD_WITH_SHA256SUM (1 << 13) 24 #define RPM_ADD_TRIGGERS (1 << 14) 25 #define RPM_ADD_WITH_HDRID (1 << 15) 26 #define RPM_ADD_WITH_LEADSIGID (1 << 16) 27 #define RPM_ADD_WITH_CHANGELOG (1 << 17) 28 #define RPM_ADD_FILTERED_FILELIST (1 << 18) 29 #define RPMDB_KEEP_GPG_PUBKEY (1 << 19) 30 31 #define RPMDB_EMPTY_REFREPO (1 << 30) /* internal */ 32 33 #define RPM_ITERATE_FILELIST_ONLYDIRS (1 << 0) 34 #define RPM_ITERATE_FILELIST_WITHMD5 (1 << 1) 35 #define RPM_ITERATE_FILELIST_WITHCOL (1 << 2) 36 #define RPM_ITERATE_FILELIST_NOGHOSTS (1 << 3) 37 38 /* create and free internal state, rootdir is the rootdir of the rpm database */ 39 extern void *rpm_state_create(Pool *pool, const char *rootdir); 40 extern void *rpm_state_free(void *rpmstate); 41 42 /* return all matching rpmdbids */ 43 extern int rpm_installedrpmdbids(void *rpmstate, const char *index, const char *match, Queue *rpmdbidq); 44 /* stat the package database */ 45 extern int rpm_stat_database(void *rpmstate, void *stb); 46 /* hash the state of the package database */ 47 extern int rpm_hash_database_state(void *rpmstate, Chksum *chk); 48 49 /* return handles to a rpm header */ 50 extern void *rpm_byrpmdbid(void *rpmstate, Id rpmdbid); 51 extern void *rpm_byfp(void *rpmstate, FILE *fp, const char *name); 52 extern void *rpm_byrpmh(void *rpmstate, struct headerToken_s *h); 53 54 /* operations on a rpm header handle */ 55 56 struct filelistinfo { 57 unsigned int dirlen; 58 unsigned int diridx; 59 const char *digest; 60 unsigned int mode; 61 unsigned int color; 62 }; 63 64 extern char *rpm_query(void *rpmhandle, Id what); 65 extern unsigned long long rpm_query_num(void *rpmhandle, Id what, unsigned long long notfound); 66 extern void rpm_iterate_filelist(void *rpmhandle, int flags, void (*cb)(void *, const char *, struct filelistinfo *), void *cbdata); 67 extern Id repo_add_rpm_handle(Repo *repo, void *rpmhandle, int flags); 68