rpm 4.8.1
rpmfi.h
Go to the documentation of this file.
00001 #ifndef H_RPMFI
00002 #define H_RPMFI
00003 
00009 #include <rpm/rpmtypes.h>
00010 #include <rpm/rpmvf.h>
00011 #include <rpm/rpmpgp.h>
00012 
00013 #ifdef __cplusplus
00014 extern "C" {
00015 #endif
00016 
00017 extern int _rpmfi_debug;
00018 
00026 typedef enum rpmFileTypes_e {
00027     PIPE        =  1,   
00028     CDEV        =  2,   
00029     XDIR        =  4,   
00030     BDEV        =  6,   
00031     REG         =  8,   
00032     LINK        = 10,   
00033     SOCK        = 12    
00034 } rpmFileTypes;
00035 
00039 typedef enum rpmfileState_e {
00040     RPMFILE_STATE_NORMAL        = 0,
00041     RPMFILE_STATE_REPLACED      = 1,
00042     RPMFILE_STATE_NOTINSTALLED  = 2,
00043     RPMFILE_STATE_NETSHARED     = 3,
00044     RPMFILE_STATE_WRONGCOLOR    = 4
00045 } rpmfileState;
00046 #define RPMFILE_STATE_MISSING   -1      /* XXX used for unavailable data */
00047 
00051 typedef enum rpmfileAttrs_e {
00052     RPMFILE_NONE        = 0,
00053     RPMFILE_CONFIG      = (1 <<  0),    
00054     RPMFILE_DOC         = (1 <<  1),    
00055     RPMFILE_ICON        = (1 <<  2),    
00056     RPMFILE_MISSINGOK   = (1 <<  3),    
00057     RPMFILE_NOREPLACE   = (1 <<  4),    
00058     RPMFILE_SPECFILE    = (1 <<  5),    
00059     RPMFILE_GHOST       = (1 <<  6),    
00060     RPMFILE_LICENSE     = (1 <<  7),    
00061     RPMFILE_README      = (1 <<  8),    
00062     RPMFILE_EXCLUDE     = (1 <<  9),    
00063     RPMFILE_UNPATCHED   = (1 << 10),    
00064     RPMFILE_PUBKEY      = (1 << 11),    
00065     RPMFILE_POLICY      = (1 << 12)     
00066 } rpmfileAttrs;
00067 
00068 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00069 
00073 typedef enum rpmFileAction_e {
00074     FA_UNKNOWN = 0,     
00075     FA_CREATE,          
00076     FA_COPYIN,          
00077     FA_COPYOUT,         
00078     FA_BACKUP,          
00079     FA_SAVE,            
00080     FA_SKIP,            
00081     FA_ALTNAME,         
00082     FA_ERASE,           
00083     FA_SKIPNSTATE,      
00084     FA_SKIPNETSHARED,   
00085     FA_SKIPCOLOR        
00086 } rpmFileAction;
00087 
00088 #define XFA_SKIPPING(_a)        \
00089     ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
00090 
00094 struct rpmRelocation_s {
00095     char * oldPath;     
00096     char * newPath;     
00097 };
00098 
00105 rpmfi rpmfiUnlink (rpmfi fi,
00106                 const char * msg);
00107 
00114 rpmfi rpmfiLink (rpmfi fi, const char * msg);
00115 
00121 rpm_count_t rpmfiFC(rpmfi fi);
00122 
00128 int rpmfiFX(rpmfi fi);
00129 
00136 int rpmfiSetFX(rpmfi fi, int fx);
00137 
00143 rpm_count_t rpmfiDC(rpmfi fi);
00144 
00150 int rpmfiDX(rpmfi fi);
00151 
00158 int rpmfiSetDX(rpmfi fi, int dx);
00159 
00165 const char * rpmfiBN(rpmfi fi);
00166 
00172 const char * rpmfiDN(rpmfi fi);
00173 
00179 const char * rpmfiFN(rpmfi fi);
00180 
00186 rpmfileAttrs rpmfiFFlags(rpmfi fi);
00187 
00193 rpmVerifyAttrs rpmfiVFlags(rpmfi fi);
00194 
00200 rpm_mode_t rpmfiFMode(rpmfi fi);
00201 
00207 rpmfileState rpmfiFState(rpmfi fi);
00208 
00214 pgpHashAlgo rpmfiDigestAlgo(rpmfi fi);
00215 
00223 const unsigned char * rpmfiFDigest(rpmfi fi, pgpHashAlgo *algo, size_t *diglen);
00224 
00234 char * rpmfiFDigestHex(rpmfi fi, pgpHashAlgo *algo);
00235 
00242 const unsigned char * rpmfiMD5(rpmfi fi) RPM_GNUC_DEPRECATED;
00243 
00249 const char * rpmfiFLink(rpmfi fi);
00250 
00256 rpm_loff_t rpmfiFSize(rpmfi fi);
00257 
00263 rpm_rdev_t rpmfiFRdev(rpmfi fi);
00264 
00270 rpm_ino_t rpmfiFInode(rpmfi fi);
00271 
00277 rpm_color_t rpmfiColor(rpmfi fi);
00278 
00284 rpm_color_t rpmfiFColor(rpmfi fi);
00285 
00291 const char * rpmfiFClass(rpmfi fi);
00292 
00299 uint32_t rpmfiFDepends(rpmfi fi,
00300                 const uint32_t ** fddictp);
00301 
00307 uint32_t rpmfiFNlink(rpmfi fi);
00308 
00314 rpm_time_t rpmfiFMtime(rpmfi fi);
00315 
00321 const char * rpmfiFUser(rpmfi fi);
00322 
00328 const char * rpmfiFGroup(rpmfi fi);
00329 
00337 const char * rpmfiFCaps(rpmfi fi);
00338 
00344 const char * rpmfiFLangs(rpmfi fi);
00345 
00351 int rpmfiNext(rpmfi fi);
00352 
00359 rpmfi rpmfiInit(rpmfi fi, int fx);
00360 
00366 int rpmfiNextD(rpmfi fi);
00367 
00374 rpmfi rpmfiInitD(rpmfi fi, int dx);
00375 
00381 rpmfi rpmfiFree(rpmfi fi);
00382 
00383 typedef enum rpmfiFlags_e {
00384     RPMFI_NOHEADER              = 0,
00385     RPMFI_KEEPHEADER            = (1 << 0),
00386     RPMFI_NOFILECLASS           = (1 << 1),
00387     RPMFI_NOFILEDEPS            = (1 << 2),
00388     RPMFI_NOFILELANGS           = (1 << 3),
00389     RPMFI_NOFILEUSER            = (1 << 4),
00390     RPMFI_NOFILEGROUP           = (1 << 5),
00391     RPMFI_NOFILEMODES           = (1 << 6),
00392     RPMFI_NOFILESIZES           = (1 << 7),
00393     RPMFI_NOFILECAPS            = (1 << 8),
00394     RPMFI_NOFILELINKTOS         = (1 << 9),
00395     RPMFI_NOFILEDIGESTS         = (1 << 10),
00396     RPMFI_NOFILEMTIMES          = (1 << 11),
00397     RPMFI_NOFILERDEVS           = (1 << 12),
00398     RPMFI_NOFILEINODES          = (1 << 13),
00399     RPMFI_NOFILESTATES          = (1 << 14),
00400     RPMFI_NOFILECOLORS          = (1 << 15),
00401     RPMFI_NOFILEVERIFYFLAGS     = (1 << 16),
00402     RPMFI_NOFILEFLAGS           = (1 << 17),
00403     RPMFI_ISBUILD               = (1 << 30),    /* internal */
00404     RPMFI_ISSOURCE              = (1 << 31),    /* internal */
00405 } rpmfiFlags;
00406 
00407 #define RPMFI_FLAGS_ERASE \
00408     (RPMFI_NOFILECLASS | RPMFI_NOFILELANGS | \
00409      RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | RPMFI_NOFILEINODES | \
00410      RPMFI_NOFILEVERIFYFLAGS)
00411 
00412 #define RPMFI_FLAGS_INSTALL \
00413     (RPMFI_NOFILECLASS | RPMFI_NOFILEVERIFYFLAGS)
00414 
00415 #define RPMFI_FLAGS_VERIFY \
00416     (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
00417      RPMFI_NOFILECOLORS)
00418 
00419 #define RPMFI_FLAGS_QUERY \
00420     (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
00421      RPMFI_NOFILECOLORS | RPMFI_NOFILEVERIFYFLAGS)
00422 
00431 rpmfi rpmfiNew(const rpmts ts, Header h, rpmTag tagN, rpmfiFlags flags);
00432 
00438 rpmFileTypes rpmfiWhatis(rpm_mode_t mode);
00439 
00446 int rpmfiCompare(const rpmfi afi, const rpmfi bfi);
00447 
00455 rpmFileAction rpmfiDecideFate(const rpmfi ofi, rpmfi nfi, int skipMissing);
00456 
00462 int rpmfiConfigConflict(const rpmfi fi);
00463 
00464 #ifdef __cplusplus
00465 }
00466 #endif
00467 
00468 #endif  /* H_RPMDS */