00001 #ifndef H_RPMFI
00002 #define H_RPMFI
00003
00009
00010
00011 extern int _rpmfi_debug;
00012
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
00042
00046 typedef enum rpmfileAttrs_e {
00047
00048 RPMFILE_NONE = 0,
00049
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 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
00093 const char * Type;
00095 rpmTag tagN;
00096
00097 Header h;
00099
00100 const char ** bnl;
00101
00102 const char ** dnl;
00104
00105 const char ** fdigests;
00106
00107 rpmuint32_t * fdigestalgos;
00108
00109 const char ** flinks;
00110
00111 const char ** flangs;
00113
00114 rpmuint32_t * dil;
00115
00116 const rpmuint32_t * fflags;
00117
00118 const rpmuint32_t * fsizes;
00119
00120 const rpmuint32_t * fmtimes;
00121
00122 rpmuint16_t * fmodes;
00123
00124 const rpmuint16_t * frdevs;
00125
00126 const rpmuint32_t * finodes;
00128
00129 const char ** fuser;
00130
00131 const char ** fgroup;
00133
00134 rpmuint8_t * fstates;
00136
00137 const rpmuint32_t * fcolors;
00139
00140 const char ** fcaps;
00142
00143 const char ** fcontexts;
00145
00146 const char ** cdict;
00147 rpmuint32_t ncdict;
00148
00149 const rpmuint32_t * fcdictx;
00151
00152 const rpmuint32_t * ddict;
00153 rpmuint32_t nddict;
00154
00155 const rpmuint32_t * fddictx;
00156
00157 const rpmuint32_t * fddictn;
00159
00160 const rpmuint32_t * vflags;
00162 rpmuint32_t dc;
00163 rpmuint32_t fc;
00165
00166
00167 void * te;
00168
00169
00170 miRE exclude;
00171 int nexclude;
00172
00173 miRE include;
00174 int ninclude;
00176
00177 uid_t uid;
00178 gid_t gid;
00179 rpmuint32_t flags;
00180 int action;
00181
00182 int * actions;
00183
00184 struct fingerPrint_s * fps;
00185
00186 const char ** obnl;
00187
00188 const char ** odnl;
00189
00190 rpmuint32_t * odil;
00192
00193 unsigned char * digests;
00194 rpmuint32_t digestalgo;
00195 rpmuint32_t digestlen;
00197
00198 const char * pretrans;
00199
00200 const char * pretransprog;
00201
00202 const char * posttrans;
00203
00204 const char * posttransprog;
00205
00206 const char * verifyscript;
00207
00208 const char * verifyscriptprog;
00209
00210
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
00221 const char ** apath;
00222 int mapflags;
00223
00224 int * fmapflags;
00225
00226 void * fsm;
00227 rpmuint32_t color;
00229 int isSource;
00231
00232 rpmuint32_t * replacedSizes;
00234 unsigned int record;
00235 int magic;
00236 #define RPMFIMAGIC 0x09697923
00237
00238 #if defined(__LCLINT__)
00239
00240 int nrefs;
00241 #endif
00242 };
00243
00244 #endif
00245
00246 #ifdef __cplusplus
00247 extern "C" {
00248 #endif
00249
00250 #if !defined(_RPMFI_NOMETHODS)
00251
00253
00260
00261 rpmfi rpmfiUnlink ( rpmfi fi,
00262 const char * msg)
00263 ;
00264 #define rpmfiUnlink(_fi, _msg) \
00265 ((rpmfi) rpmioUnlinkPoolItem((rpmioItem)(_fi), _msg, __FILE__, __LINE__))
00266
00273
00274 rpmfi rpmfiLink ( rpmfi fi, const char * msg)
00275 ;
00276 #define rpmfiLink(_fi, _msg) \
00277 ((rpmfi) rpmioLinkPoolItem((rpmioItem)(_fi), _msg, __FILE__, __LINE__))
00278
00284 int rpmfiFC( rpmfi fi)
00285 ;
00286
00292
00293 int rpmfiFX( rpmfi fi)
00294 ;
00295
00302
00303 int rpmfiSetFX( rpmfi fi, int fx)
00304 ;
00305
00311 int rpmfiDC( rpmfi fi)
00312 ;
00313
00319 int rpmfiDX( rpmfi fi)
00320 ;
00321
00328 int rpmfiSetDX( rpmfi fi, int dx)
00329 ;
00330
00336 int rpmfiIsSource( rpmfi fi)
00337 ;
00338
00344
00345 extern const char * rpmfiBN( rpmfi fi)
00346 ;
00347
00353
00354 extern const char * rpmfiDN( rpmfi fi)
00355 ;
00356
00362
00363 extern const char * rpmfiFN( rpmfi fi)
00364 ;
00365
00371 extern size_t rpmfiFNMaxLen( rpmfi fi)
00372 ;
00373
00379 rpmuint32_t rpmfiFFlags( rpmfi fi)
00380 ;
00381
00388 rpmuint32_t rpmfiSetFFlags( rpmfi fi, rpmuint32_t FFlags)
00389 ;
00390
00396 rpmuint32_t rpmfiVFlags( rpmfi fi)
00397 ;
00398
00405 rpmuint32_t rpmfiSetVFlags( rpmfi fi, rpmuint32_t VFlags)
00406 ;
00407
00413 rpmuint16_t rpmfiFMode( rpmfi fi)
00414 ;
00415
00421 rpmfileState rpmfiFState( rpmfi fi)
00422 ;
00423
00430 rpmfileState rpmfiSetFState( rpmfi fi, rpmfileState fstate)
00431 ;
00432
00440
00441 extern const unsigned char * rpmfiDigest( rpmfi fi,
00442 int * algop,
00443 size_t * lenp)
00444 ;
00445
00451
00452 extern const char * rpmfiFLink( rpmfi fi)
00453 ;
00454
00460 rpmuint32_t rpmfiFSize( rpmfi fi)
00461 ;
00462
00468 rpmuint16_t rpmfiFRdev( rpmfi fi)
00469 ;
00470
00476 rpmuint32_t rpmfiFInode( rpmfi fi)
00477 ;
00478
00484 rpmuint32_t rpmfiColor( rpmfi fi)
00485 ;
00486
00492 rpmuint32_t rpmfiFColor( rpmfi fi)
00493 ;
00494
00500
00501
00502 extern const char * rpmfiFClass( rpmfi fi)
00503 ;
00504
00505
00511
00512
00513 extern const char * rpmfiFContext( rpmfi fi)
00514 ;
00515
00516
00523 rpmuint32_t rpmfiFDepends( rpmfi fi,
00524 const rpmuint32_t ** fddictp)
00525 ;
00526
00532 rpmuint32_t rpmfiFNlink( rpmfi fi)
00533 ;
00534
00540 rpmuint32_t rpmfiFMtime( rpmfi fi)
00541 ;
00542
00548
00549 extern const char * rpmfiFUser( rpmfi fi)
00550 ;
00551
00557
00558 extern const char * rpmfiFGroup( rpmfi fi)
00559 ;
00560
00566
00567 void * rpmfiExclude( const rpmfi fi)
00568 ;
00569
00575 int rpmfiNExclude( const rpmfi fi)
00576 ;
00577
00583
00584 void * rpmfiInclude( const rpmfi fi)
00585 ;
00586
00592 int rpmfiNInclude( const rpmfi fi)
00593 ;
00594
00600 int rpmfiNext( rpmfi fi)
00601 ;
00602
00609
00610 rpmfi rpmfiInit( rpmfi fi, int fx)
00611 ;
00612
00618
00619 int rpmfiNextD( rpmfi fi)
00620 ;
00621
00628
00629 rpmfi rpmfiInitD( rpmfi fi, int dx)
00630 ;
00631
00638 int rpmfiSetHeader(rpmfi fi, Header h)
00639 ;
00640
00646
00647 rpmfi rpmfiFree( rpmfi fi)
00648
00649 ;
00650 #define rpmfiFree(_fi) \
00651 ((rpmfi) rpmioFreePoolItem((rpmioItem)(_fi), __FUNCTION__, __FILE__, __LINE__))
00652
00661
00662 rpmfi rpmfiNew( const void * _ts, Header h, rpmTag tagN, int flags)
00663
00664 ;
00665
00672 int rpmfiFStat(rpmfi fi, struct stat * st)
00673 ;
00674
00682 int rpmfiStat(rpmfi fi, const char * path, struct stat * st)
00683 ;
00684
00691
00692 DIR * rpmfiOpendir(rpmfi fi, const char * name)
00693
00694 ;
00695
00705 void rpmfiBuildFClasses(Header h,
00706 const char *** fclassp, rpmuint32_t * fcp)
00707
00708
00709 ;
00710
00720 void rpmfiBuildFContexts(Header h,
00721 const char *** fcontextp, rpmuint32_t * fcp)
00722
00723
00724 ;
00725
00735 void rpmfiBuildFSContexts(Header h,
00736 const char *** fcontextp, rpmuint32_t * fcp)
00737
00738
00739 ;
00740
00750 void rpmfiBuildREContexts(Header h,
00751 const char *** fcontextp, rpmuint32_t * fcp)
00752
00753
00754 ;
00755
00766 void rpmfiBuildFDeps(Header h, rpmTag tagN,
00767 const char *** fdepsp, rpmuint32_t * fcp)
00768
00769
00770 ;
00771
00778 int rpmfiCompare(const rpmfi afi, const rpmfi bfi)
00779 ;
00780
00788 int rpmfiDecideFate(const rpmfi ofi, rpmfi nfi, int skipMissing)
00789
00790 ;
00791
00797
00798
00799 const char * rpmfiTypeString(rpmfi fi)
00800 ;
00801
00802
00808
00809 rpmRelocation rpmfiFreeRelocations( rpmRelocation relocs)
00810 ;
00811
00818
00819 rpmRelocation rpmfiDupeRelocations(rpmRelocation relocs, int * nrelocsp)
00820 ;
00821
00830 int rpmfiAddRelocation(rpmRelocation * relp, int * nrelp,
00831 const char * oldPath, const char * newPath)
00832 ;
00833
00835 #endif
00836
00837 #ifdef __cplusplus
00838 }
00839 #endif
00840
00841 #endif