rpm 5.3.7

lib/rpmps.h

Go to the documentation of this file.
00001 #ifndef H_RPMPS
00002 #define H_RPMPS
00003 
00009 /*@-exportlocal@*/
00010 /*@unchecked@*/
00011 extern int _rpmps_debug;
00012 /*@=exportlocal@*/
00013 
00017 typedef /*@abstract@*/ struct rpmProblem_s * rpmProblem;
00018 
00022 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmps_s * rpmps;
00023 
00026 typedef /*@abstract@*/ struct rpmpsi_s * rpmpsi;
00027 
00031 typedef enum rpmprobFilterFlags_e {
00032     RPMPROB_FILTER_NONE         = 0,
00033     RPMPROB_FILTER_IGNOREOS     = (1 << 0),     
00034     RPMPROB_FILTER_IGNOREARCH   = (1 << 1),     
00035     RPMPROB_FILTER_REPLACEPKG   = (1 << 2),     
00036     RPMPROB_FILTER_FORCERELOCATE= (1 << 3),     
00037     RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),   
00038     RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),   
00039     RPMPROB_FILTER_OLDPACKAGE   = (1 << 6),     
00040     RPMPROB_FILTER_DISKSPACE    = (1 << 7),     
00041     RPMPROB_FILTER_DISKNODES    = (1 << 8)      
00042 } rpmprobFilterFlags;
00043 
00047 typedef enum rpmProblemType_e {
00048     RPMPROB_BADARCH,    
00049     RPMPROB_BADOS,      
00050     RPMPROB_PKG_INSTALLED, 
00051     RPMPROB_BADRELOCATE,
00052     RPMPROB_REQUIRES,   
00053     RPMPROB_CONFLICT,   
00054     RPMPROB_NEW_FILE_CONFLICT, 
00055     RPMPROB_FILE_CONFLICT,
00056     RPMPROB_OLDPACKAGE, 
00057     RPMPROB_DISKSPACE,  
00058     RPMPROB_DISKNODES,  
00059     RPMPROB_RDONLY,     
00060     RPMPROB_BADPRETRANS,
00061     RPMPROB_BADPLATFORM,
00062     RPMPROB_NOREPACKAGE 
00063  } rpmProblemType;
00064 
00067 #if defined(_RPMPS_INTERNAL)
00068 struct rpmProblem_s {
00069 /*@only@*/ /*@null@*/
00070     char * pkgNEVR;
00071 /*@only@*/ /*@null@*/
00072     char * altNEVR;
00073 /*@exposed@*/ /*@null@*/
00074     fnpyKey key;
00075     rpmProblemType type;
00076     int ignoreProblem;
00077 /*@only@*/ /*@null@*/
00078     char * str1;
00079     unsigned long long ulong1;
00080 };
00081 
00084 struct rpmps_s {
00085     struct rpmioItem_s _item;   
00086     int numProblems;            
00087     int numProblemsAlloced;     
00088     rpmProblem probs;           
00089 #if defined(__LCLINT__)
00090 /*@refs@*/
00091     int nrefs;                  
00092 #endif
00093 };
00094 
00097 struct rpmpsi_s {
00098     int ix;
00099     rpmps ps;
00100 };
00101 
00102 #endif
00103 
00104 #ifdef __cplusplus
00105 extern "C" {
00106 #endif
00107 
00113 /*@-exportlocal@*/
00114 /*@-redecl@*/   /* LCL: is confused. */
00115 /*@only@*/ extern const char * rpmProblemString(const rpmProblem prob)
00116         /*@*/;
00117 /*@=redecl@*/
00118 /*@=exportlocal@*/
00119 
00126 /*@unused@*/ /*@null@*/
00127 rpmps rpmpsUnlink (/*@killref@*/ /*@returned@*/ rpmps ps,
00128                 const char * msg)
00129         /*@modifies ps @*/;
00130 #define rpmpsUnlink(_ps, _msg)  \
00131         ((rpmps)rpmioUnlinkPoolItem((rpmioItem)(_ps), _msg, __FILE__, __LINE__))
00132 
00139 /*@unused@*/ /*@newref@*/
00140 rpmps rpmpsLink (rpmps ps, const char * msg)
00141         /*@modifies ps @*/;
00142 #define rpmpsLink(_ps, _msg)    \
00143         ((rpmps)rpmioLinkPoolItem((rpmioItem)(_ps), _msg, __FILE__, __LINE__))
00144 
00150 /*@null@*/
00151 rpmps rpmpsFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmps ps)
00152         /*@modifies ps @*/;
00153 #define rpmpsFree(_ps)  \
00154         ((rpmps)rpmioFreePoolItem((rpmioItem)(_ps), __FUNCTION__, __FILE__, __LINE__))
00155 
00161 int rpmpsNumProblems(/*@null@*/ rpmps ps)
00162         /*@*/;
00163 
00169 rpmpsi rpmpsInitIterator(rpmps ps)
00170         /*@modifies ps @*/;
00171 
00177 rpmpsi rpmpsFreeIterator(/*@only@*/ rpmpsi psi)
00178         /*@modifies psi @*/;
00179 
00185 int rpmpsNextIterator(rpmpsi psi)
00186         /*@modifies psi @*/;
00187 
00193 /*@observer@*/
00194 rpmProblem rpmpsProblem(rpmpsi psi)
00195         /*@*/;
00196 
00201 rpmps rpmpsCreate(void)
00202         /*@*/;
00203 
00209 void rpmpsPrint(/*@null@*/ FILE *fp, /*@null@*/ rpmps ps)
00210         /*@globals fileSystem @*/
00211         /*@modifies *fp, ps, fileSystem @*/;
00212 
00226 void rpmpsAppend(/*@null@*/ rpmps ps, rpmProblemType type,
00227                 /*@null@*/ const char * pkgNEVR,
00228                 /*@exposed@*/ /*@null@*/ fnpyKey key,
00229                 /*@null@*/ const char * dn, /*@null@*/ const char * bn,
00230                 /*@null@*/ const char * altNEVR,
00231                 rpmuint64_t ulong1)
00232         /*@modifies ps @*/;
00233 
00249 int rpmpsTrim(/*@null@*/ rpmps ps, /*@null@*/ rpmps filter)
00250         /*@modifies ps @*/;
00251 
00259 /*@exposed@*/
00260 rpmProblem rpmpsGetProblem(/*@null@*/ rpmps ps, int num)
00261         /*@*/;
00262 
00269 /*@null@*/ /*@exposed@*/
00270 char * rpmProblemGetPkgNEVR(rpmProblem prob)
00271         /*@*/;
00272 
00279 /*@null@*/ /*@exposed@*/
00280 char * rpmProblemGetAltNEVR(rpmProblem prob)
00281         /*@*/;
00282 
00289 /*@null@*/ /*@exposed@*/
00290 char * rpmProblemGetStr(rpmProblem prob)
00291         /*@*/;
00292 
00298 rpmuint64_t rpmProblemGetDiskNeed(rpmProblem prob)
00299         /*@*/;
00300 
00307 rpmProblemType rpmProblemGetType(rpmProblem prob)
00308         /*@*/;
00309 
00316 /*@null@*/ /*@exposed@*/
00317 fnpyKey rpmProblemKey(rpmProblem prob)
00318         /*@*/;
00319 
00320 #ifdef __cplusplus
00321 }
00322 #endif
00323 
00324 #endif  /* H_RPMPS */