lib/rpmts.h

Go to the documentation of this file.
00001 #ifndef H_RPMTS
00002 #define H_RPMTS
00003 
00009 #include "rpmps.h"
00010 #include "rpmsw.h"
00011 #include "rpmsx.h"
00012 
00013 /*@-exportlocal@*/
00014 /*@unchecked@*/
00015 extern int _rpmts_debug;
00016 /*@unchecked@*/
00017 extern int _rpmts_stats;
00018 /*@unchecked@*/
00019 extern int _fps_debug;
00020 /*@=exportlocal@*/
00021 
00025 typedef enum rpmVSFlags_e {
00026     RPMVSF_DEFAULT      = 0,
00027     RPMVSF_NOHDRCHK     = (1 <<  0),
00028     RPMVSF_NEEDPAYLOAD  = (1 <<  1),
00029     /* bit(s) 2-7 unused */
00030     RPMVSF_NOSHA1HEADER = (1 <<  8),
00031     RPMVSF_NOMD5HEADER  = (1 <<  9),    /* unimplemented */
00032     RPMVSF_NODSAHEADER  = (1 << 10),
00033     RPMVSF_NORSAHEADER  = (1 << 11),    /* unimplemented */
00034     /* bit(s) 12-15 unused */
00035     RPMVSF_NOSHA1       = (1 << 16),    /* unimplemented */
00036     RPMVSF_NOMD5        = (1 << 17),
00037     RPMVSF_NODSA        = (1 << 18),
00038     RPMVSF_NORSA        = (1 << 19)
00039     /* bit(s) 16-31 unused */
00040 } rpmVSFlags;
00041 
00045 typedef enum rpmtsType_e {
00046         RPMTRANS_TYPE_NORMAL       = 0,
00047         RPMTRANS_TYPE_ROLLBACK     = (1 << 0),
00048         RPMTRANS_TYPE_AUTOROLLBACK = (1 << 1)
00049 } rpmtsType;
00050 
00051 #define _RPMVSF_NODIGESTS       \
00052   ( RPMVSF_NOSHA1HEADER |       \
00053     RPMVSF_NOMD5HEADER |        \
00054     RPMVSF_NOSHA1 |             \
00055     RPMVSF_NOMD5 )
00056 
00057 #define _RPMVSF_NOSIGNATURES    \
00058   ( RPMVSF_NODSAHEADER |        \
00059     RPMVSF_NORSAHEADER |        \
00060     RPMVSF_NODSA |              \
00061     RPMVSF_NORSA )
00062 
00063 #define _RPMVSF_NOHEADER        \
00064   ( RPMVSF_NOSHA1HEADER |       \
00065     RPMVSF_NOMD5HEADER |        \
00066     RPMVSF_NODSAHEADER |        \
00067     RPMVSF_NORSAHEADER )
00068 
00069 #define _RPMVSF_NOPAYLOAD       \
00070   ( RPMVSF_NOSHA1 |             \
00071     RPMVSF_NOMD5 |              \
00072     RPMVSF_NODSA |              \
00073     RPMVSF_NORSA )
00074 
00078 typedef enum rpmtsOpX_e {
00079     RPMTS_OP_TOTAL              =  0,
00080     RPMTS_OP_CHECK              =  1,
00081     RPMTS_OP_ORDER              =  2,
00082     RPMTS_OP_FINGERPRINT        =  3,
00083     RPMTS_OP_REPACKAGE          =  4,
00084     RPMTS_OP_INSTALL            =  5,
00085     RPMTS_OP_ERASE              =  6,
00086     RPMTS_OP_SCRIPTLETS         =  7,
00087     RPMTS_OP_COMPRESS           =  8,
00088     RPMTS_OP_UNCOMPRESS         =  9,
00089     RPMTS_OP_DIGEST             = 10,
00090     RPMTS_OP_SIGNATURE          = 11,
00091     RPMTS_OP_DBADD              = 12,
00092     RPMTS_OP_DBREMOVE           = 13,
00093     RPMTS_OP_DBGET              = 14,
00094     RPMTS_OP_DBPUT              = 15,
00095     RPMTS_OP_DBDEL              = 16,
00096     RPMTS_OP_MAX                = 17
00097 } rpmtsOpX;
00098 
00099 #if defined(_RPMTS_INTERNAL)
00100 
00101 #include "rpmhash.h"    /* XXX hashTable */
00102 #include "rpmal.h"      /* XXX availablePackage/relocateFileList ,*/
00103 
00104 /**********************
00105  * Transaction Scores *
00106  **********************
00107  *
00108  * In order to allow instance counts to be adjusted properly when an
00109  * autorollback transaction is ran, we keep a list that is indexed
00110  * by rpm name of whether the rpm has been installed or erased.  This listed
00111  * is only updated:
00112  *
00113  *      iif autorollbacks are enabled.
00114  *      iif this is not a rollback or autorollback transaction.
00115  *
00116  * When creating an autorollback transaction, its rpmts points to the same
00117  * rpmtsScore object as the running transaction.  So when the autorollback
00118  * transaction runs it can see where each package was in the running transaction
00119  * at the point the running transaction failed, and thus on a per package
00120  * basis make adjustments to the instance counts.
00121  *
00122  * XXX: Jeff, I am not convinced that this does not need to be in its own file
00123  *      (i.e. rpmtsScore.{h,c}), but I first wanted to get it working.
00124  */
00125 struct rpmtsScoreEntry_s {
00126     char *         N;                   
00127     rpmElementType te_types;            
00128     int            installed;           
00129     int            erased;              
00130 };
00131 
00132 typedef /*@abstract@*/ struct rpmtsScoreEntry_s * rpmtsScoreEntry;
00133 
00134 struct rpmtsScore_s {
00135         int entries;                    
00136         rpmtsScoreEntry * scores;       
00137         int nrefs;                      
00138 };
00139 
00140 typedef /*@abstract@*/ struct rpmtsScore_s * rpmtsScore;
00141 
00142 
00150 rpmRC rpmtsScoreInit(rpmts runningTS, rpmts rollbackTS)
00151         /*@globals fileSystem @*/
00152         /*@modifies runningTS, rollbackTS, fileSystem @*/;
00153 
00159 /*@-exportlocal@*/
00160 /*@null@*/
00161 rpmtsScore rpmtsScoreFree(/*@only@*/ /*@null@*/ rpmtsScore score)
00162         /*@modifies score @*/;
00163 /*@=exportlocal@*/
00164 
00170 /*@exposed@*/ /*@null@*/
00171 rpmtsScore rpmtsGetScore(rpmts ts)
00172         /*@*/;
00173 
00179 /*@null@*/
00180 rpmtsScoreEntry rpmtsScoreGetEntry(rpmtsScore score, const char *N)
00181         /*@*/;
00182 
00188 /**************************
00189  * END Transaction Scores *
00190  **************************/
00191 
00192 /*@unchecked@*/
00193 /*@-exportlocal@*/
00194 extern int _cacheDependsRC;
00195 /*@=exportlocal@*/
00196 
00199 typedef /*@abstract@*/ struct diskspaceInfo_s * rpmDiskSpaceInfo;
00200 
00203 struct diskspaceInfo_s {
00204     dev_t dev;                  
00205     signed long bneeded;        
00206     signed long ineeded;        
00207     int bsize;                  
00208     signed long long bavail;    
00209     signed long long iavail;    
00210 };
00211 
00215 #define adj_fs_blocks(_nb)      (((_nb) * 21) / 20)
00216 
00217 /* argon thought a shift optimization here was a waste of time...  he's
00218    probably right :-( */
00219 #define BLOCK_ROUND(size, block) (((size) + (block) - 1) / (block))
00220 
00223 typedef enum tsStage_e {
00224     TSM_UNKNOWN         =  0,
00225     TSM_INSTALL         =  7,
00226     TSM_ERASE           =  8,
00227 } tsmStage;
00228 
00232 struct rpmts_s {
00233     rpmtransFlags transFlags;   
00234     tsmStage goal;              
00235     rpmtsType type;             
00237 /*@refcounted@*/ /*@null@*/
00238     rpmdb sdb;                  
00239     int sdbmode;                
00240 /*@null@*/
00241     int (*solve) (rpmts ts, rpmds key, const void * data)
00242         /*@modifies ts @*/;     
00243 /*@relnull@*/
00244     const void * solveData;     
00245     int nsuggests;              
00246 /*@only@*/ /*@null@*/
00247     const void ** suggests;     
00249 /*@observer@*/ /*@null@*/
00250     rpmCallbackFunction notify; 
00251 /*@observer@*/ /*@null@*/
00252     rpmCallbackData notifyData; 
00254 /*@refcounted@*/ /*@null@*/
00255     rpmps probs;                
00256     rpmprobFilterFlags ignoreSet;
00259     int filesystemCount;        
00260 /*@dependent@*/ /*@null@*/
00261     const char ** filesystems;  
00262 /*@only@*/ /*@null@*/
00263     rpmDiskSpaceInfo dsi;       
00265 /*@refcounted@*/ /*@null@*/
00266     rpmdb rdb;                  
00267     int dbmode;                 
00268 /*@only@*/
00269     hashTable ht;               
00271 /*@only@*/ /*@null@*/
00272     int * removedPackages;      
00273     int numRemovedPackages;     
00274     int allocedRemovedPackages; 
00276 /*@only@*/
00277     rpmal addedPackages;        
00278     int numAddedPackages;       
00280 #ifndef DYING
00281 /*@only@*/
00282     rpmal availablePackages;    
00283     int numAvailablePackages;   
00284 #endif
00285 
00286 /*@refcounted@*/ /*@null@*/
00287     rpmsx sx;                   
00289 /*@null@*/
00290     rpmte relocateElement;      
00292 /*@owned@*/ /*@relnull@*/
00293     rpmte * order;              
00294     int orderCount;             
00295     int orderAlloced;           
00296     int unorderedSuccessors;    
00297     int ntrees;                 
00298     int maxDepth;               
00300     int selinuxEnabled;         
00301     int chrootDone;             
00302 /*@only@*/ /*@null@*/
00303     const char * rootDir;       
00304 /*@only@*/ /*@null@*/
00305     const char * currDir;       
00306 /*@null@*/
00307     FD_t scriptFd;              
00308     int delta;                  
00309     int_32 tid;                 
00311     uint_32 color;              
00312     uint_32 prefcolor;          
00314     rpmVSFlags vsflags;         
00316 /*@observer@*/ /*@dependent@*/ /*@null@*/
00317     const char * fn;            
00318     int_32  sigtag;             
00319     int_32  sigtype;            
00320 /*@null@*/
00321     const void * sig;           
00322     int_32 siglen;              
00324 /*@only@*/ /*@null@*/
00325     const unsigned char * pkpkt;
00326     size_t pkpktlen;            
00327     unsigned char pksignid[8];  
00329     struct rpmop_s ops[RPMTS_OP_MAX];
00330 
00331 /*@null@*/
00332     pgpDig dig;                 
00334 /*@null@*/
00335     Spec spec;                  
00337 /*@kept@*/ /*@null@*/
00338     rpmtsScore score;           
00340 /*@refs@*/
00341     int nrefs;                  
00342 };
00343 #endif  /* _RPMTS_INTERNAL */
00344 
00345 #ifdef __cplusplus
00346 extern "C" {
00347 #endif
00348 
00354 int rpmtsCheck(rpmts ts)
00355         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00356         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00357 
00374 int rpmtsOrder(rpmts ts)
00375         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00376         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00377 
00395 int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
00396         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00397         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00398 
00405 /*@unused@*/ /*@null@*/
00406 rpmts rpmtsUnlink (/*@killref@*/ /*@only@*/ rpmts ts,
00407                 const char * msg)
00408         /*@modifies ts @*/;
00409 
00411 /*@-exportlocal@*/
00412 /*@null@*/
00413 rpmts XrpmtsUnlink (/*@killref@*/ /*@only@*/ rpmts ts,
00414                 const char * msg, const char * fn, unsigned ln)
00415         /*@modifies ts @*/;
00416 /*@=exportlocal@*/
00417 #define rpmtsUnlink(_ts, _msg)  XrpmtsUnlink(_ts, _msg, __FILE__, __LINE__)
00418 
00425 /*@unused@*/
00426 rpmts rpmtsLink (rpmts ts, const char * msg)
00427         /*@modifies ts @*/;
00428 
00430 rpmts XrpmtsLink (rpmts ts,
00431                 const char * msg, const char * fn, unsigned ln)
00432         /*@modifies ts @*/;
00433 #define rpmtsLink(_ts, _msg)    XrpmtsLink(_ts, _msg, __FILE__, __LINE__)
00434 
00440 int rpmtsCloseDB(rpmts ts)
00441         /*@globals fileSystem @*/
00442         /*@modifies ts, fileSystem @*/;
00443 
00450 int rpmtsOpenDB(rpmts ts, int dbmode)
00451         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00452         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00453 
00461 int rpmtsInitDB(rpmts ts, int dbmode)
00462         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00463         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00464 
00470 int rpmtsRebuildDB(rpmts ts)
00471         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00472         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00473 
00479 int rpmtsVerifyDB(rpmts ts)
00480         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00481         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00482 
00491 /*@only@*/ /*@null@*/
00492 rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
00493                         /*@null@*/ const void * keyp, size_t keylen)
00494         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00495         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00496 
00502 /*@-exportlocal@*/
00503 rpmRC rpmtsFindPubkey(rpmts ts)
00504         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00505         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState */;
00506 /*@=exportlocal@*/
00507 
00513 /*@-exportlocal@*/
00514 int rpmtsCloseSDB(rpmts ts)
00515         /*@globals fileSystem @*/
00516         /*@modifies ts, fileSystem @*/;
00517 /*@=exportlocal@*/
00518 
00525 /*@-exportlocal@*/
00526 int rpmtsOpenSDB(rpmts ts, int dbmode)
00527         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00528         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00529 /*@=exportlocal@*/
00530 
00538 /*@-exportlocal@*/
00539 int rpmtsSolve(rpmts ts, rpmds ds, const void * data)
00540         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00541         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00542 /*@=exportlocal@*/
00543 
00551 /*@unused@*/
00552 int rpmtsAvailable(rpmts ts, const rpmds ds)
00553         /*@globals fileSystem @*/
00554         /*@modifies ts, fileSystem @*/;
00555 
00563 int rpmtsSetSolveCallback(rpmts ts,
00564                 int (*solve) (rpmts ts, rpmds ds, const void * data),
00565                 const void * solveData)
00566         /*@modifies ts @*/;
00567 
00573 rpmtsType rpmtsGetType(rpmts ts)
00574         /*@*/;
00575 
00587 void rpmtsSetType(rpmts ts, rpmtsType type)
00588         /*@modifies ts @*/;
00589 
00595 /*@null@*/
00596 rpmps rpmtsProblems(rpmts ts)
00597         /*@modifies ts @*/;
00598 
00603 void rpmtsCleanDig(rpmts ts)
00604         /*@modifies ts @*/;
00605 
00610 void rpmtsClean(rpmts ts)
00611         /*@globals fileSystem, internalState @*/
00612         /*@modifies ts, fileSystem , internalState@*/;
00613 
00618 void rpmtsEmpty(rpmts ts)
00619         /*@globals fileSystem, internalState @*/
00620         /*@modifies ts, fileSystem, internalState @*/;
00621 
00627 /*@null@*/
00628 rpmts rpmtsFree(/*@killref@*/ /*@only@*//*@null@*/ rpmts ts)
00629         /*@globals fileSystem, internalState @*/
00630         /*@modifies ts, fileSystem, internalState @*/;
00631 
00637 rpmVSFlags rpmtsVSFlags(rpmts ts)
00638         /*@*/;
00639 
00646 rpmVSFlags rpmtsSetVSFlags(rpmts ts, rpmVSFlags vsflags)
00647         /*@modifies ts @*/;
00648 
00655 int rpmtsUnorderedSuccessors(rpmts ts, int first)
00656         /*@modifies ts @*/;
00657 
00663 /*@observer@*/ /*@null@*/
00664 extern const char * rpmtsRootDir(rpmts ts)
00665         /*@*/;
00666 
00672 void rpmtsSetRootDir(rpmts ts, /*@null@*/ const char * rootDir)
00673         /*@modifies ts @*/;
00674 
00680 /*@observer@*/ /*@null@*/
00681 extern const char * rpmtsCurrDir(rpmts ts)
00682         /*@*/;
00683 
00689 void rpmtsSetCurrDir(rpmts ts, /*@null@*/ const char * currDir)
00690         /*@modifies ts @*/;
00691 
00697 /*@null@*/
00698 FD_t rpmtsScriptFd(rpmts ts)
00699         /*@*/;
00700 
00706 void rpmtsSetScriptFd(rpmts ts, /*@null@*/ FD_t scriptFd)
00707         /*@modifies ts, scriptFd @*/;
00708 
00714 int rpmtsSELinuxEnabled(rpmts ts)
00715         /*@*/;
00716 
00722 int rpmtsChrootDone(rpmts ts)
00723         /*@*/;
00724 
00731 int rpmtsSetChrootDone(rpmts ts, int chrootDone)
00732         /*@modifies ts @*/;
00733 
00739 /*@null@*/
00740 rpmsx rpmtsREContext(const rpmts ts)
00741         /*@modifies ts @*/;
00742 
00749 int rpmtsSetREContext(rpmts ts, rpmsx sx)
00750         /*@modifies ts, sx @*/;
00751 
00757 int_32 rpmtsGetTid(rpmts ts)
00758         /*@*/;
00759 
00766 int_32 rpmtsSetTid(rpmts ts, int_32 tid)
00767         /*@modifies ts @*/;
00768 
00774 int_32 rpmtsSigtag(const rpmts ts)
00775         /*@*/;
00776 
00782 int_32 rpmtsSigtype(const rpmts ts)
00783         /*@*/;
00784 
00790 /*@observer@*/ /*@null@*/
00791 extern const void * rpmtsSig(const rpmts ts)
00792         /*@*/;
00793 
00799 int_32 rpmtsSiglen(const rpmts ts)
00800         /*@*/;
00801 
00811 int rpmtsSetSig(rpmts ts,
00812                 int_32 sigtag, int_32 sigtype,
00813                 /*@kept@*/ /*@null@*/ const void * sig, int_32 siglen)
00814         /*@modifies ts @*/;
00815 
00821 /*@exposed@*/ /*@null@*/
00822 pgpDig rpmtsDig(rpmts ts)
00823         /*@*/;
00824 
00830 /*@exposed@*/ /*@null@*/
00831 pgpDigParams rpmtsSignature(const rpmts ts)
00832         /*@*/;
00833 
00839 /*@exposed@*/ /*@null@*/
00840 pgpDigParams rpmtsPubkey(const rpmts ts)
00841         /*@*/;
00842 
00848 /*@null@*/
00849 rpmdb rpmtsGetRdb(rpmts ts)
00850         /*@*/;
00851 
00857 int rpmtsInitDSI(const rpmts ts)
00858         /*@globals fileSystem, internalState @*/
00859         /*@modifies ts, fileSystem, internalState @*/;
00860 
00870 void rpmtsUpdateDSI(const rpmts ts, dev_t dev,
00871                 uint_32 fileSize, uint_32 prevSize, uint_32 fixupSize,
00872                 fileAction action)
00873         /*@modifies ts @*/;
00874 
00880 void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
00881         /*@modifies ts @*/;
00882 
00892 /*@null@*/
00893 void * rpmtsNotify(rpmts ts, rpmte te,
00894                 rpmCallbackType what, unsigned long amount, unsigned long total)
00895         /*@*/;
00896 
00902 int rpmtsNElements(rpmts ts)
00903         /*@*/;
00904 
00911 /*@null@*/ /*@dependent@*/
00912 rpmte rpmtsElement(rpmts ts, int ix)
00913         /*@*/;
00914 
00920 rpmprobFilterFlags rpmtsFilterFlags(rpmts ts)
00921         /*@*/;
00922 
00928 rpmtransFlags rpmtsFlags(rpmts ts)
00929         /*@*/;
00930 
00937 rpmtransFlags rpmtsSetFlags(rpmts ts, rpmtransFlags transFlags)
00938         /*@modifies ts @*/;
00939 
00945 /*@null@*/
00946 Spec rpmtsSpec(rpmts ts)
00947         /*@*/;
00948 
00955 /*@null@*/
00956 Spec rpmtsSetSpec(rpmts ts, /*@null@*/ Spec spec)
00957         /*@modifies ts @*/;
00958 
00964 /*@null@*/
00965 rpmte rpmtsRelocateElement(rpmts ts)
00966         /*@*/;
00967 
00974 /*@null@*/
00975 rpmte rpmtsSetRelocateElement(rpmts ts, /*@null@*/ rpmte relocateElement)
00976         /*@modifies ts @*/;
00977 
00983 uint_32 rpmtsColor(rpmts ts)
00984         /*@*/;
00985 
00991 uint_32 rpmtsPrefColor(rpmts ts)
00992         /*@*/;
00993 
01000 uint_32 rpmtsSetColor(rpmts ts, uint_32 color)
01001         /*@modifies ts @*/;
01002 
01009 /*@relnull@*/
01010 rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
01011         /*@*/;
01012 
01024 int rpmtsSetNotifyCallback(rpmts ts,
01025                 /*@observer@*/ rpmCallbackFunction notify,
01026                 /*@observer@*/ rpmCallbackData notifyData)
01027         /*@modifies ts @*/;
01028 
01033 /*@newref@*/
01034 rpmts rpmtsCreate(void)
01035         /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
01036         /*@modifies rpmGlobalMacroContext, internalState @*/;
01037 
01051 int rpmtsAddInstallElement(rpmts ts, Header h,
01052                 /*@exposed@*/ /*@null@*/ const fnpyKey key, int upgrade,
01053                 /*@null@*/ rpmRelocation * relocs)
01054         /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
01055                 fileSystem, internalState @*/
01056         /*@modifies ts, h, rpmcliPackagesTotal, rpmGlobalMacroContext,
01057                 fileSystem, internalState @*/;
01058 
01066 int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset)
01067         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01068         /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
01069 
01078 /*@unused@*/
01079 int rpmtsGetKeys(rpmts ts,
01080                 /*@null@*/ /*@out@*/ fnpyKey ** ep,
01081                 /*@null@*/ /*@out@*/ int * nep)
01082         /*@globals fileSystem, internalState @*/
01083         /*@modifies ts, ep, nep, fileSystem, internalState @*/;
01084 
01091 /*@only@*/ char * hGetNEVR(Header h, /*@null@*/ /*@out@*/ const char ** np )
01092         /*@modifies *np @*/;
01093 
01100 /*@only@*/ char * hGetNEVRA(Header h, /*@null@*/ /*@out@*/ const char ** np )
01101         /*@modifies *np @*/;
01102 
01108 uint_32 hGetColor(Header h)
01109         /*@modifies h @*/;
01110 
01111 #ifdef __cplusplus
01112 }
01113 #endif
01114 
01115 
01116 #endif  /* H_RPMTS */

Generated on Fri Oct 12 08:44:54 2007 for rpm by  doxygen 1.5.2