rpm 5.2.1

lib/rpmfi.h

Go to the documentation of this file.
00001 #ifndef H_RPMFI
00002 #define H_RPMFI
00003 
00009 /*@-exportlocal@*/
00010 /*@unchecked@*/
00011 extern int _rpmfi_debug;
00012 /*@=exportlocal@*/
00013 
00021 typedef enum rpmFileTypes_e {
00022     PIPE        =  1,   
00023     CDEV        =  2,   
00024     XDIR        =  4,   
00025     BDEV        =  6,   
00026     REG         =  8,   
00027     LINK        = 10,   
00028     SOCK        = 12    
00029 } rpmFileTypes;
00030 
00034 typedef enum rpmfileState_e {
00035     RPMFILE_STATE_NORMAL        = 0,
00036     RPMFILE_STATE_REPLACED      = 1,
00037     RPMFILE_STATE_NOTINSTALLED  = 2,
00038     RPMFILE_STATE_NETSHARED     = 3,
00039     RPMFILE_STATE_WRONGCOLOR    = 4
00040 } rpmfileState;
00041 #define RPMFILE_STATE_MISSING   -1      /* XXX used for unavailable data */
00042 
00046 typedef enum rpmfileAttrs_e {
00047 /*@-enummemuse@*/
00048     RPMFILE_NONE        = 0,
00049 /*@=enummemuse@*/
00050     RPMFILE_CONFIG      = (1 <<  0),    
00051     RPMFILE_DOC         = (1 <<  1),    
00052     RPMFILE_ICON        = (1 <<  2),    
00053     RPMFILE_MISSINGOK   = (1 <<  3),    
00054     RPMFILE_NOREPLACE   = (1 <<  4),    
00055     RPMFILE_SPECFILE    = (1 <<  5),    
00056     RPMFILE_GHOST       = (1 <<  6),    
00057     RPMFILE_LICENSE     = (1 <<  7),    
00058     RPMFILE_README      = (1 <<  8),    
00059     RPMFILE_EXCLUDE     = (1 <<  9),    
00060     RPMFILE_UNPATCHED   = (1 << 10),    
00061     RPMFILE_PUBKEY      = (1 << 11),    
00062     RPMFILE_POLICY      = (1 << 12),    
00063     RPMFILE_EXISTS      = (1 << 13),    
00064     RPMFILE_SPARSE      = (1 << 14),    
00065     RPMFILE_TYPED       = (1 << 15),    
00066     RPMFILE_SOURCE      = (1 << 16),    
00067     RPMFILE_PATCH       = (1 << 17),    
00068     RPMFILE_OPTIONAL    = (1 << 18),    
00069     RPMFILE_REMOVE      = (1 << 19)     
00070 } rpmfileAttrs;
00071 
00072 #define RPMFILE_SPOOK   (RPMFILE_GHOST|RPMFILE_TYPED)
00073 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00074 
00078 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmfi_s * rpmfi;
00079 
00080 #if defined(_RPMFI_INTERNAL)
00081 
00082 #include "mire.h"
00083 
00087 struct rpmfi_s {
00088     struct rpmioItem_s _item;   
00089     int i;                      
00090     int j;                      
00092 /*@observer@*/
00093     const char * Type;          
00095     rpmTag tagN;                
00096 /*@refcounted@*/ /*@null@*/
00097     Header h;                   
00099 /*@only@*/ /*@relnull@*/
00100     const char ** bnl;          
00101 /*@only@*/ /*@relnull@*/
00102     const char ** dnl;          
00104 /*@only@*/ /*@relnull@*/
00105     const char ** fdigests;     
00106 /*@only@*/ /*@null@*/
00107     rpmuint32_t * fdigestalgos; 
00108 /*@only@*/ /*@relnull@*/
00109     const char ** flinks;       
00110 /*@only@*/ /*@null@*/
00111     const char ** flangs;       
00113 /*@only@*/ /*@relnull@*/
00114           rpmuint32_t * dil;    
00115 /*@only@*/ /*@relnull@*/
00116     const rpmuint32_t * fflags; 
00117 /*@only@*/ /*@relnull@*/
00118     const rpmuint32_t * fsizes; 
00119 /*@only@*/ /*@relnull@*/
00120     const rpmuint32_t * fmtimes;
00121 /*@only@*/ /*@relnull@*/
00122           rpmuint16_t * fmodes; 
00123 /*@only@*/ /*@relnull@*/
00124     const rpmuint16_t * frdevs; 
00125 /*@only@*/ /*@relnull@*/
00126     const rpmuint32_t * finodes;
00128 /*@only@*/ /*@null@*/
00129     const char ** fuser;        
00130 /*@only@*/ /*@null@*/
00131     const char ** fgroup;       
00133 /*@only@*/ /*@null@*/
00134     rpmuint8_t * fstates;       
00136 /*@only@*/ /*@null@*/
00137     const rpmuint32_t * fcolors;
00139 /*@only@*/ /*@null@*/
00140     const char ** fcaps;        
00142 /*@only@*/ /*@null@*/
00143     const char ** fcontexts;    
00145 /*@only@*/ /*@null@*/
00146     const char ** cdict;        
00147     rpmuint32_t ncdict;         
00148 /*@only@*/ /*@null@*/
00149     const rpmuint32_t * fcdictx;
00151 /*@only@*/ /*@null@*/
00152     const rpmuint32_t * ddict;  
00153     rpmuint32_t nddict;         
00154 /*@only@*/ /*@null@*/
00155     const rpmuint32_t * fddictx;
00156 /*@only@*/ /*@null@*/
00157     const rpmuint32_t * fddictn;
00159 /*@only@*/ /*@relnull@*/
00160     const rpmuint32_t * vflags; 
00162     rpmuint32_t dc;             
00163     rpmuint32_t fc;             
00165 /*=============================*/
00166 /*@dependent@*/ /*@relnull@*/
00167     void * te;
00168 
00169 /*@only@*/ /*@null@*/
00170     miRE exclude;               
00171     int nexclude;               
00172 /*@only@*/ /*@null@*/
00173     miRE include;               
00174     int ninclude;               
00176 /*-----------------------------*/
00177     uid_t uid;                  
00178     gid_t gid;                  
00179     rpmuint32_t flags;          
00180     int action;                 
00181 /*@owned@*/ /*@relnull@*/
00182     int * actions;              
00183 /*@owned@*/
00184     struct fingerPrint_s * fps; 
00185 /*@owned@*/
00186     const char ** obnl;         
00187 /*@owned@*/
00188     const char ** odnl;         
00189 /*@unused@*/
00190     rpmuint32_t * odil;         
00192 /*@only@*/ /*@relnull@*/
00193     unsigned char * digests;    
00194     rpmuint32_t digestalgo;     
00195     rpmuint32_t digestlen;      
00197 /*@only@*/ /*@relnull@*/
00198     const char * pretrans;
00199 /*@only@*/ /*@relnull@*/
00200     const char * pretransprog;
00201 /*@only@*/ /*@relnull@*/
00202     const char * posttrans;
00203 /*@only@*/ /*@relnull@*/
00204     const char * posttransprog;
00205 /*@only@*/ /*@relnull@*/
00206     const char * verifyscript;
00207 /*@only@*/ /*@relnull@*/
00208     const char * verifyscriptprog;
00209 
00210 /*@only@*/ /*@null@*/
00211     char * fn;                  
00212     size_t fnlen;               
00214     size_t astriplen;
00215     size_t striplen;
00216     unsigned long long archivePos;
00217     unsigned long long archiveSize;
00218     mode_t dperms;              
00219     mode_t fperms;              
00220 /*@only@*/ /*@null@*/
00221     const char ** apath;
00222     int mapflags;
00223 /*@owned@*/ /*@null@*/
00224     int * fmapflags;
00225 /*@owned@*/
00226     void * fsm;                 
00227     rpmuint32_t color;          
00229     int isSource;               
00231 /*@owned@*/
00232     rpmuint32_t * replacedSizes;
00234     unsigned int record;        
00235     int magic;
00236 #define RPMFIMAGIC      0x09697923
00237 /*=============================*/
00238 #if defined(__LCLINT__)
00239 /*@refs@*/
00240     int nrefs;                  
00241 #endif
00242 };
00243 
00244 #endif  /* _RPMFI_INTERNAL */
00245 
00246 #ifdef __cplusplus
00247 extern "C" {
00248 #endif
00249 
00250 #if !defined(_RPMFI_NOMETHODS)
00251 
00253 
00260 /*@unused@*/ /*@null@*/
00261 rpmfi rpmfiUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmfi fi,
00262                 /*@null@*/ const char * msg)
00263         /*@modifies fi @*/;
00264 #define rpmfiUnlink(_fi, _msg)  \
00265     ((rpmfi) rpmioUnlinkPoolItem((rpmioItem)(_fi), _msg, __FILE__, __LINE__))
00266 
00273 /*@unused@*/ /*@null@*/
00274 rpmfi rpmfiLink (/*@null@*/ rpmfi fi, /*@null@*/ const char * msg)
00275         /*@modifies fi @*/;
00276 #define rpmfiLink(_fi, _msg)    \
00277     ((rpmfi) rpmioLinkPoolItem((rpmioItem)(_fi), _msg, __FILE__, __LINE__))
00278 
00284 int rpmfiFC(/*@null@*/ rpmfi fi)
00285         /*@*/;
00286 
00292 /*@unused@*/
00293 int rpmfiFX(/*@null@*/ rpmfi fi)
00294         /*@*/;
00295 
00302 /*@unused@*/
00303 int rpmfiSetFX(/*@null@*/ rpmfi fi, int fx)
00304         /*@modifies fi @*/;
00305 
00311 int rpmfiDC(/*@null@*/ rpmfi fi)
00312         /*@*/;
00313 
00319 int rpmfiDX(/*@null@*/ rpmfi fi)
00320         /*@*/;
00321 
00328 int rpmfiSetDX(/*@null@*/ rpmfi fi, int dx)
00329         /*@modifies fi @*/;
00330 
00336 int rpmfiIsSource(/*@null@*/ rpmfi fi)
00337         /*@*/;
00338 
00344 /*@observer@*/ /*@null@*/
00345 extern const char * rpmfiBN(/*@null@*/ rpmfi fi)
00346         /*@*/;
00347 
00353 /*@observer@*/ /*@null@*/
00354 extern const char * rpmfiDN(/*@null@*/ rpmfi fi)
00355         /*@*/;
00356 
00362 /*@observer@*/
00363 extern const char * rpmfiFN(/*@null@*/ rpmfi fi)
00364         /*@modifies fi @*/;
00365 
00371 extern size_t rpmfiFNMaxLen(/*@null@*/ rpmfi fi)
00372         /*@*/;
00373 
00379 rpmuint32_t rpmfiFFlags(/*@null@*/ rpmfi fi)
00380         /*@*/;
00381 
00388 rpmuint32_t rpmfiSetFFlags(/*@null@*/ rpmfi fi, rpmuint32_t FFlags)
00389         /*@modifies fi @*/;
00390 
00396 rpmuint32_t rpmfiVFlags(/*@null@*/ rpmfi fi)
00397         /*@*/;
00398 
00405 rpmuint32_t rpmfiSetVFlags(/*@null@*/ rpmfi fi, rpmuint32_t VFlags)
00406         /*@modifies fi @*/;
00407 
00413 rpmuint16_t rpmfiFMode(/*@null@*/ rpmfi fi)
00414         /*@*/;
00415 
00421 rpmfileState rpmfiFState(/*@null@*/ rpmfi fi)
00422         /*@*/;
00423 
00430 rpmfileState rpmfiSetFState(/*@null@*/ rpmfi fi, rpmfileState fstate)
00431         /*@modifies fi @*/;
00432 
00440 /*@observer@*/ /*@null@*/
00441 extern const unsigned char * rpmfiDigest(/*@null@*/ rpmfi fi,
00442                 /*@out@*/ /*@null@*/ int * algop,
00443                 /*@out@*/ /*@null@*/ size_t * lenp)
00444         /*@modifies *algop, *lenp @*/;
00445 
00451 /*@observer@*/ /*@null@*/
00452 extern const char * rpmfiFLink(/*@null@*/ rpmfi fi)
00453         /*@*/;
00454 
00460 rpmuint32_t rpmfiFSize(/*@null@*/ rpmfi fi)
00461         /*@*/;
00462 
00468 rpmuint16_t rpmfiFRdev(/*@null@*/ rpmfi fi)
00469         /*@*/;
00470 
00476 rpmuint32_t rpmfiFInode(/*@null@*/ rpmfi fi)
00477         /*@*/;
00478 
00484 rpmuint32_t rpmfiColor(/*@null@*/ rpmfi fi)
00485         /*@*/;
00486 
00492 rpmuint32_t rpmfiFColor(/*@null@*/ rpmfi fi)
00493         /*@*/;
00494 
00500 /*@-exportlocal@*/
00501 /*@observer@*/ /*@null@*/
00502 extern const char * rpmfiFClass(/*@null@*/ rpmfi fi)
00503         /*@*/;
00504 /*@=exportlocal@*/
00505 
00511 /*@-exportlocal@*/
00512 /*@observer@*/ /*@null@*/
00513 extern const char * rpmfiFContext(/*@null@*/ rpmfi fi)
00514         /*@*/;
00515 /*@=exportlocal@*/
00516 
00523 rpmuint32_t rpmfiFDepends(/*@null@*/ rpmfi fi,
00524                 /*@out@*/ /*@null@*/ const rpmuint32_t ** fddictp)
00525         /*@modifies *fddictp @*/;
00526 
00532 rpmuint32_t rpmfiFNlink(/*@null@*/ rpmfi fi)
00533         /*@*/;
00534 
00540 rpmuint32_t rpmfiFMtime(/*@null@*/ rpmfi fi)
00541         /*@*/;
00542 
00548 /*@observer@*/ /*@null@*/
00549 extern const char * rpmfiFUser(/*@null@*/ rpmfi fi)
00550         /*@*/;
00551 
00557 /*@observer@*/ /*@null@*/
00558 extern const char * rpmfiFGroup(/*@null@*/ rpmfi fi)
00559         /*@*/;
00560 
00566 /*@null@*/
00567 void * rpmfiExclude(/*@null@*/ const rpmfi fi)
00568         /*@*/;
00569 
00575 int rpmfiNExclude(/*@null@*/ const rpmfi fi)
00576         /*@*/;
00577 
00583 /*@null@*/
00584 void * rpmfiInclude(/*@null@*/ const rpmfi fi)
00585         /*@*/;
00586 
00592 int rpmfiNInclude(/*@null@*/ const rpmfi fi)
00593         /*@*/;
00594 
00600 int rpmfiNext(/*@null@*/ rpmfi fi)
00601         /*@modifies fi @*/;
00602 
00609 /*@null@*/
00610 rpmfi rpmfiInit(/*@null@*/ rpmfi fi, int fx)
00611         /*@modifies fi @*/;
00612 
00618 /*@unused@*/
00619 int rpmfiNextD(/*@null@*/ rpmfi fi)
00620         /*@modifies fi @*/;
00621 
00628 /*@unused@*/ /*@null@*/
00629 rpmfi rpmfiInitD(/*@null@*/ rpmfi fi, int dx)
00630         /*@modifies fi @*/;
00631 
00638 int rpmfiSetHeader(rpmfi fi, /*@null@*/ Header h)
00639         /*@modifies fi, h @*/;
00640 
00646 /*@null@*/
00647 rpmfi rpmfiFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmfi fi)
00648         /*@globals fileSystem @*/
00649         /*@modifies fi, fileSystem @*/;
00650 #define rpmfiFree(_fi)  \
00651     ((rpmfi) rpmioFreePoolItem((rpmioItem)(_fi), __FUNCTION__, __FILE__, __LINE__))
00652 
00661 /*@null@*/
00662 rpmfi rpmfiNew(/*@null@*/ const void * _ts, Header h, rpmTag tagN, int flags)
00663         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00664         /*@modifies _ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
00665 
00672 int rpmfiFStat(rpmfi fi, /*@out@*/ struct stat * st)
00673         /*@modifies *st @*/;
00674 
00682 int rpmfiStat(rpmfi fi, const char * path, /*@out@*/ struct stat * st)
00683         /*@modifies fi, *st @*/;
00684 
00691 /*@null@*/
00692 DIR * rpmfiOpendir(rpmfi fi, const char * name)
00693         /*@globals fileSystem, internalState @*/
00694         /*@modifies fi, fileSystem, internalState @*/;
00695 
00705 void rpmfiBuildFClasses(Header h,
00706                 /*@out@*/ const char *** fclassp, /*@out@*/ rpmuint32_t * fcp)
00707         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00708         /*@modifies h, *fclassp, *fcp, rpmGlobalMacroContext,
00709                 fileSystem, internalState @*/;
00710 
00720 void rpmfiBuildFContexts(Header h,
00721                 /*@out@*/ const char *** fcontextp, /*@out@*/ rpmuint32_t * fcp)
00722         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00723         /*@modifies h, *fcontextp, *fcp, rpmGlobalMacroContext,
00724                 fileSystem, internalState @*/;
00725 
00735 void rpmfiBuildFSContexts(Header h,
00736                 /*@out@*/ const char *** fcontextp, /*@out@*/ rpmuint32_t * fcp)
00737         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00738         /*@modifies h, *fcontextp, *fcp, rpmGlobalMacroContext,
00739                 fileSystem, internalState @*/;
00740 
00750 void rpmfiBuildREContexts(Header h,
00751                 /*@out@*/ const char *** fcontextp, /*@out@*/ rpmuint32_t * fcp)
00752         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00753         /*@modifies h, *fcontextp, *fcp, rpmGlobalMacroContext,
00754                 fileSystem, internalState @*/;
00755 
00766 void rpmfiBuildFDeps(Header h, rpmTag tagN,
00767                 /*@out@*/ const char *** fdepsp, /*@out@*/ rpmuint32_t * fcp)
00768         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00769         /*@modifies h, *fdepsp, *fcp,
00770                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00771 
00778 int rpmfiCompare(const rpmfi afi, const rpmfi bfi)
00779         /*@*/;
00780 
00788 int rpmfiDecideFate(const rpmfi ofi, rpmfi nfi, int skipMissing)
00789         /*@globals h_errno, fileSystem, internalState @*/
00790         /*@modifies nfi, fileSystem, internalState @*/;
00791 
00797 /*@-redef@*/
00798 /*@observer@*/
00799 const char * rpmfiTypeString(rpmfi fi)
00800         /*@*/;
00801 /*@=redef@*/
00802 
00808 /*@null@*/
00809 rpmRelocation rpmfiFreeRelocations(/*@only@*/ rpmRelocation relocs)
00810         /*@modifies relocs@*/;
00811 
00818 /*@only@*/ /*@null@*/
00819 rpmRelocation rpmfiDupeRelocations(rpmRelocation relocs, int * nrelocsp)
00820         /*@modifies *nrelocsp @*/;
00821 
00830 int rpmfiAddRelocation(rpmRelocation * relp, int * nrelp,
00831                 const char * oldPath, const char * newPath)
00832         /*@modifies *relp, *nrelp @*/;
00833 
00835 #endif  /* _RPMFI_NOMETHODS */
00836 
00837 #ifdef __cplusplus
00838 }
00839 #endif
00840 
00841 #endif  /* H_RPMDS */