00001 #ifndef H_RPMPS
00002 #define H_RPMPS
00003
00009 #include <stdio.h>
00010 #include <rpm/rpmtypes.h>
00011
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00016 extern int _rpmps_debug;
00017
00021 typedef enum rpmprobFilterFlags_e {
00022 RPMPROB_FILTER_NONE = 0,
00023 RPMPROB_FILTER_IGNOREOS = (1 << 0),
00024 RPMPROB_FILTER_IGNOREARCH = (1 << 1),
00025 RPMPROB_FILTER_REPLACEPKG = (1 << 2),
00026 RPMPROB_FILTER_FORCERELOCATE= (1 << 3),
00027 RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),
00028 RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),
00029 RPMPROB_FILTER_OLDPACKAGE = (1 << 6),
00030 RPMPROB_FILTER_DISKSPACE = (1 << 7),
00031 RPMPROB_FILTER_DISKNODES = (1 << 8)
00032 } rpmprobFilterFlags;
00033
00037 typedef struct rpmProblem_s * rpmProblem;
00038
00042 typedef struct rpmps_s * rpmps;
00043
00044 typedef struct rpmpsi_s * rpmpsi;
00045
00049 typedef enum rpmProblemType_e {
00050 RPMPROB_BADARCH,
00051 RPMPROB_BADOS,
00052 RPMPROB_PKG_INSTALLED,
00053 RPMPROB_BADRELOCATE,
00054 RPMPROB_REQUIRES,
00055 RPMPROB_CONFLICT,
00056 RPMPROB_NEW_FILE_CONFLICT,
00057 RPMPROB_FILE_CONFLICT,
00058 RPMPROB_OLDPACKAGE,
00059 RPMPROB_DISKSPACE,
00060 RPMPROB_DISKNODES,
00061 } rpmProblemType;
00062
00074 rpmProblem rpmProblemCreate(rpmProblemType type,
00075 const char * pkgNEVR,
00076 fnpyKey key,
00077 const char * dn, const char * bn,
00078 const char * altNEVR,
00079 uint64_t number);
00080
00086 rpmProblem rpmProblemFree(rpmProblem prob);
00087
00093 const char * rpmProblemGetPkgNEVR(const rpmProblem prob);
00099 const char * rpmProblemGetAltNEVR(const rpmProblem prob);
00100
00107 rpmProblemType rpmProblemGetType(const rpmProblem prob);
00108
00114 fnpyKey rpmProblemGetKey(const rpmProblem prob);
00115
00122 const char * rpmProblemGetStr(const rpmProblem prob);
00123
00131 rpm_loff_t rpmProblemGetDiskNeed(const rpmProblem prob);
00132
00138 char * rpmProblemString(const rpmProblem prob);
00139
00146 rpmps rpmpsUnlink (rpmps ps,
00147 const char * msg);
00148
00155 rpmps rpmpsLink (rpmps ps, const char * msg);
00156
00162 int rpmpsNumProblems(rpmps ps);
00163
00169 rpmpsi rpmpsInitIterator(rpmps ps);
00170
00176 rpmpsi rpmpsFreeIterator(rpmpsi psi);
00177
00183 int rpmpsNextIterator(rpmpsi psi);
00184
00190 rpmProblem rpmpsGetProblem(rpmpsi psi);
00191
00196 rpmps rpmpsCreate(void);
00197
00203 rpmps rpmpsFree(rpmps ps);
00204
00210 void rpmpsPrint(FILE *fp, rpmps ps);
00211
00217 void rpmpsAppendProblem(rpmps ps, rpmProblem prob);
00218
00230 void rpmpsAppend(rpmps ps, rpmProblemType type,
00231 const char * pkgNEVR,
00232 fnpyKey key,
00233 const char * dn, const char * bn,
00234 const char * altNEVR,
00235 uint64_t number);
00236
00252 int rpmpsTrim(rpmps ps, rpmps filter);
00253
00254 #ifdef __cplusplus
00255 }
00256 #endif
00257
00258 #endif