Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

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),
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) 20-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_READHDR            = 17,
00097     RPMTS_OP_MAX                = 18
00098 } rpmtsOpX;
00099 
00100 #if defined(_RPMTS_INTERNAL)
00101 
00102 #include "rpmhash.h"    /* XXX hashTable */
00103 #include "rpmal.h"      /* XXX availablePackage/relocateFileList ,*/
00104 
00105 /*@unchecked@*/
00106 /*@-exportlocal@*/
00107 extern int _cacheDependsRC;
00108 /*@=exportlocal@*/
00109 
00112 typedef /*@abstract@*/ struct diskspaceInfo_s * rpmDiskSpaceInfo;
00113 
00117 struct diskspaceInfo_s {
00118     unsigned long f_bsize;      
00119     unsigned long f_frsize;     
00120     unsigned long long f_blocks;
00121     unsigned long long f_bfree; 
00122     signed long long f_bavail;  
00123     unsigned long long f_files; 
00124     unsigned long long f_ffree; 
00125     signed long long f_favail;  
00126     unsigned long f_fsid;       
00127     unsigned long f_flag;       
00128     unsigned long f_namemax;    
00130     signed long long bneeded;   
00131     signed long long ineeded;   
00132     dev_t dev;                  
00133 };
00134 
00138 #define adj_fs_blocks(_nb)      (((_nb) * 21) / 20)
00139 
00140 #define BLOCK_ROUND(size, block) (((size) + (block) - 1) / (block))
00141 
00144 typedef enum tsStage_e {
00145     TSM_UNKNOWN         =  0,
00146     TSM_INSTALL         =  7,
00147     TSM_ERASE           =  8,
00148 } tsmStage;
00149 
00153 struct rpmts_s {
00154     rpmdepFlags depFlags;       
00155     rpmtransFlags transFlags;   
00156     tsmStage goal;              
00157     rpmTSType type;             
00159 /*@refcounted@*/ /*@null@*/
00160     rpmdb sdb;                  
00161     int sdbmode;                
00162 /*@null@*/
00163     int (*solve) (rpmts ts, rpmds key, const void * data)
00164         /*@modifies ts @*/;     
00165 /*@relnull@*/
00166     const void * solveData;     
00167     int nsuggests;              
00168 /*@only@*/ /*@null@*/
00169     const void ** suggests;     
00171 /*@observer@*/ /*@null@*/
00172     rpmCallbackFunction notify; 
00173 /*@observer@*/ /*@null@*/
00174     rpmCallbackData notifyData; 
00176 /*@null@*/
00177     rpmPRCO PRCO;               
00179 /*@refcounted@*/ /*@null@*/
00180     rpmps probs;                
00181     rpmprobFilterFlags ignoreSet;
00184     int filesystemCount;        
00185 /*@dependent@*/ /*@null@*/
00186     const char ** filesystems;  
00187 /*@only@*/ /*@null@*/
00188     rpmDiskSpaceInfo dsi;       
00190 /*@refcounted@*/ /*@null@*/
00191     rpmdb rdb;                  
00192     int dbmode;                 
00193 /*@only@*/
00194     hashTable ht;               
00196 /*@only@*/ /*@null@*/
00197     int * removedPackages;      
00198     int numRemovedPackages;     
00199     int allocedRemovedPackages; 
00201 /*@only@*/
00202     rpmal addedPackages;        
00203     int numAddedPackages;       
00205 /*@only@*/
00206     rpmal erasedPackages;       
00207     int numErasedPackages;      
00209 #ifndef DYING
00210 /*@only@*/
00211     rpmal availablePackages;    
00212     int numAvailablePackages;   
00213 #endif
00214 
00215 /*@refcounted@*/ /*@null@*/
00216     rpmsx sx;                   
00218 /*@null@*/
00219     rpmte relocateElement;      
00221 /*@owned@*/ /*@relnull@*/
00222     rpmte * order;              
00223     int orderCount;             
00224     int orderAlloced;           
00225     int unorderedSuccessors;    
00226     int ntrees;                 
00227     int maxDepth;               
00229 /*@dependent@*/
00230     rpmte teInstall;            
00231 /*@dependent@*/
00232     rpmte teErase;              
00234     int selinuxEnabled;         
00235     int chrootDone;             
00236 /*@only@*/ /*@null@*/
00237     const char * rootDir;       
00238 /*@only@*/ /*@null@*/
00239     const char * currDir;       
00240 /*@null@*/
00241     FD_t scriptFd;              
00242     int delta;                  
00243     int_32 tid;                 
00245     uint_32 color;              
00246     uint_32 prefcolor;          
00248     rpmVSFlags vsflags;         
00250 /*@observer@*/ /*@dependent@*/ /*@null@*/
00251     const char * fn;            
00252     int_32  sigtag;             
00253     int_32  sigtype;            
00254 /*@null@*/
00255     const void * sig;           
00256     int_32 siglen;              
00258 /*@only@*/ /*@null@*/
00259     const unsigned char * pkpkt;
00260     size_t pkpktlen;            
00261     unsigned char pksignid[8];  
00263     struct rpmop_s ops[RPMTS_OP_MAX];
00264 
00265 /*@null@*/
00266     pgpDig dig;                 
00268 /*@null@*/
00269     Spec spec;                  
00271 #ifdef  DYING
00272 /*@kept@*/ /*@null@*/
00273     rpmtsScore score;           
00274 #endif
00275 
00276     uint_32 arbgoal;            
00278 /*@refs@*/
00279     int nrefs;                  
00280 };
00281 #endif  /* _RPMTS_INTERNAL */
00282 
00283 #ifdef __cplusplus
00284 extern "C" {
00285 #endif
00286 
00292 int rpmtsCheck(rpmts ts)
00293         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00294         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00295 int rpmrbCheck(rpmts ts)
00296         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00297         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00298 
00315 int rpmtsOrder(rpmts ts)
00316         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00317         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00318 int rpmrbOrder(rpmts ts)
00319         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00320         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00321 
00339 int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
00340         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00341         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00342 int rpmrbRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
00343         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00344         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00345 
00354 rpmRC rpmtsRollback(rpmts rbts, rpmprobFilterFlags ignoreSet,
00355                 int running, rpmte rbte)
00356     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00357     /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00358 
00365 /*@unused@*/ /*@null@*/
00366 rpmts rpmtsUnlink (/*@killref@*/ /*@only@*/ rpmts ts,
00367                 const char * msg)
00368         /*@modifies ts @*/;
00369 
00371 /*@-exportlocal@*/
00372 /*@null@*/
00373 rpmts XrpmtsUnlink (/*@killref@*/ /*@only@*/ rpmts ts,
00374                 const char * msg, const char * fn, unsigned ln)
00375         /*@modifies ts @*/;
00376 /*@=exportlocal@*/
00377 #define rpmtsUnlink(_ts, _msg)  XrpmtsUnlink(_ts, _msg, __FILE__, __LINE__)
00378 
00385 /*@unused@*/
00386 rpmts rpmtsLink (rpmts ts, const char * msg)
00387         /*@modifies ts @*/;
00388 
00390 rpmts XrpmtsLink (rpmts ts,
00391                 const char * msg, const char * fn, unsigned ln)
00392         /*@modifies ts @*/;
00393 #define rpmtsLink(_ts, _msg)    XrpmtsLink(_ts, _msg, __FILE__, __LINE__)
00394 
00400 int rpmtsCloseDB(rpmts ts)
00401         /*@globals fileSystem @*/
00402         /*@modifies ts, fileSystem @*/;
00403 
00410 int rpmtsOpenDB(rpmts ts, int dbmode)
00411         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00412         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00413 
00421 int rpmtsInitDB(rpmts ts, int dbmode)
00422         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00423         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00424 
00430 int rpmtsRebuildDB(rpmts ts)
00431         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00432         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00433 
00439 int rpmtsVerifyDB(rpmts ts)
00440         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00441         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00442 
00451 /*@only@*/ /*@null@*/
00452 rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
00453                         /*@null@*/ const void * keyp, size_t keylen)
00454         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00455         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00456 
00462 /*@-exportlocal@*/
00463 rpmRC rpmtsFindPubkey(rpmts ts)
00464         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00465         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState */;
00466 /*@=exportlocal@*/
00467 
00473 /*@-exportlocal@*/
00474 int rpmtsCloseSDB(rpmts ts)
00475         /*@globals fileSystem @*/
00476         /*@modifies ts, fileSystem @*/;
00477 /*@=exportlocal@*/
00478 
00485 /*@-exportlocal@*/
00486 int rpmtsOpenSDB(rpmts ts, int dbmode)
00487         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00488         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00489 /*@=exportlocal@*/
00490 
00498 /*@-exportlocal@*/
00499 int rpmtsSolve(rpmts ts, rpmds ds, const void * data)
00500         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00501         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00502 /*@=exportlocal@*/
00503 
00511 /*@unused@*/
00512 int rpmtsAvailable(rpmts ts, const rpmds ds)
00513         /*@globals fileSystem @*/
00514         /*@modifies ts, fileSystem @*/;
00515 
00523 int rpmtsSetSolveCallback(rpmts ts,
00524                 int (*solve) (rpmts ts, rpmds ds, const void * data),
00525                 const void * solveData)
00526         /*@modifies ts @*/;
00527 
00533 rpmTSType rpmtsType(rpmts ts)
00534         /*@*/;
00535 
00546 void rpmtsSetType(rpmts ts, rpmTSType type)
00547         /*@modifies ts @*/;
00548 
00554 uint_32 rpmtsARBGoal(rpmts ts)
00555         /*@*/;
00556 
00562 void rpmtsSetARBGoal(rpmts ts, uint_32 goal)
00563         /*@modifies ts @*/;
00564 
00570 /*@null@*/
00571 rpmps rpmtsProblems(rpmts ts)
00572         /*@modifies ts @*/;
00573 
00578 void rpmtsCleanDig(rpmts ts)
00579         /*@modifies ts @*/;
00580 
00585 void rpmtsClean(rpmts ts)
00586         /*@globals fileSystem, internalState @*/
00587         /*@modifies ts, fileSystem , internalState@*/;
00588 
00593 void rpmtsEmpty(rpmts ts)
00594         /*@globals fileSystem, internalState @*/
00595         /*@modifies ts, fileSystem, internalState @*/;
00596 
00602 /*@null@*/
00603 rpmts rpmtsFree(/*@killref@*/ /*@only@*//*@null@*/ rpmts ts)
00604         /*@globals fileSystem, internalState @*/
00605         /*@modifies ts, fileSystem, internalState @*/;
00606 
00612 rpmVSFlags rpmtsVSFlags(rpmts ts)
00613         /*@*/;
00614 
00621 rpmVSFlags rpmtsSetVSFlags(rpmts ts, rpmVSFlags vsflags)
00622         /*@modifies ts @*/;
00623 
00630 int rpmtsUnorderedSuccessors(rpmts ts, int first)
00631         /*@modifies ts @*/;
00632 
00638 /*@observer@*/ /*@null@*/
00639 extern const char * rpmtsRootDir(rpmts ts)
00640         /*@*/;
00641 
00647 void rpmtsSetRootDir(rpmts ts, /*@null@*/ const char * rootDir)
00648         /*@modifies ts @*/;
00649 
00655 /*@observer@*/ /*@null@*/
00656 extern const char * rpmtsCurrDir(rpmts ts)
00657         /*@*/;
00658 
00664 void rpmtsSetCurrDir(rpmts ts, /*@null@*/ const char * currDir)
00665         /*@modifies ts @*/;
00666 
00672 /*@null@*/
00673 FD_t rpmtsScriptFd(rpmts ts)
00674         /*@*/;
00675 
00681 void rpmtsSetScriptFd(rpmts ts, /*@null@*/ FD_t scriptFd)
00682         /*@modifies ts, scriptFd @*/;
00683 
00689 int rpmtsSELinuxEnabled(rpmts ts)
00690         /*@*/;
00691 
00697 int rpmtsChrootDone(rpmts ts)
00698         /*@*/;
00699 
00706 int rpmtsSetChrootDone(rpmts ts, int chrootDone)
00707         /*@modifies ts @*/;
00708 
00714 /*@null@*/
00715 rpmsx rpmtsREContext(const rpmts ts)
00716         /*@modifies ts @*/;
00717 
00724 int rpmtsSetREContext(rpmts ts, rpmsx sx)
00725         /*@modifies ts, sx @*/;
00726 
00732 int_32 rpmtsGetTid(rpmts ts)
00733         /*@*/;
00734 
00741 int_32 rpmtsSetTid(rpmts ts, int_32 tid)
00742         /*@modifies ts @*/;
00743 
00749 int_32 rpmtsSigtag(const rpmts ts)
00750         /*@*/;
00751 
00757 int_32 rpmtsSigtype(const rpmts ts)
00758         /*@*/;
00759 
00765 /*@observer@*/ /*@null@*/
00766 extern const void * rpmtsSig(const rpmts ts)
00767         /*@*/;
00768 
00774 int_32 rpmtsSiglen(const rpmts ts)
00775         /*@*/;
00776 
00786 int rpmtsSetSig(rpmts ts,
00787                 int_32 sigtag, int_32 sigtype,
00788                 /*@kept@*/ /*@null@*/ const void * sig, int_32 siglen)
00789         /*@modifies ts @*/;
00790 
00796 /*@exposed@*/ /*@null@*/
00797 pgpDig rpmtsDig(rpmts ts)
00798         /*@*/;
00799 
00805 /*@exposed@*/ /*@null@*/
00806 pgpDigParams rpmtsSignature(const rpmts ts)
00807         /*@*/;
00808 
00814 /*@-exportlocal@*/
00815 /*@exposed@*/ /*@null@*/
00816 pgpDigParams rpmtsPubkey(const rpmts ts)
00817         /*@*/;
00818 /*@=exportlocal@*/
00819 
00825 /*@null@*/
00826 rpmdb rpmtsGetRdb(rpmts ts)
00827         /*@*/;
00828 
00834 /*@null@*/
00835 rpmPRCO rpmtsPRCO(rpmts ts)
00836         /*@*/;
00837 
00843 int rpmtsInitDSI(const rpmts ts)
00844         /*@globals fileSystem, internalState @*/
00845         /*@modifies ts, fileSystem, internalState @*/;
00846 
00856 void rpmtsUpdateDSI(const rpmts ts, dev_t dev,
00857                 uint_32 fileSize, uint_32 prevSize, uint_32 fixupSize,
00858                 fileAction action)
00859         /*@modifies ts @*/;
00860 
00866 void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
00867         /*@modifies ts @*/;
00868 
00880 /*@null@*/
00881 void * rpmtsNotify(rpmts ts, rpmte te,
00882                 rpmCallbackType what, unsigned long long amount, unsigned long long total)
00883         /*@*/;
00884 
00890 int rpmtsNElements(rpmts ts)
00891         /*@*/;
00892 
00899 /*@null@*/ /*@dependent@*/
00900 rpmte rpmtsElement(rpmts ts, int ix)
00901         /*@*/;
00902 
00908 rpmprobFilterFlags rpmtsFilterFlags(rpmts ts)
00909         /*@*/;
00910 
00916 rpmtransFlags rpmtsFlags(rpmts ts)
00917         /*@*/;
00918 
00925 rpmtransFlags rpmtsSetFlags(rpmts ts, rpmtransFlags transFlags)
00926         /*@modifies ts @*/;
00927 
00933 rpmdepFlags rpmtsDFlags(rpmts ts)
00934         /*@*/;
00935 
00942 rpmdepFlags rpmtsSetDFlags(rpmts ts, rpmdepFlags depFlags)
00943         /*@modifies ts @*/;
00944 
00950 /*@null@*/
00951 Spec rpmtsSpec(rpmts ts)
00952         /*@*/;
00953 
00960 /*@null@*/
00961 Spec rpmtsSetSpec(rpmts ts, /*@null@*/ Spec spec)
00962         /*@modifies ts @*/;
00963 
00969 /*@null@*/
00970 rpmte rpmtsRelocateElement(rpmts ts)
00971         /*@*/;
00972 
00979 /*@null@*/
00980 rpmte rpmtsSetRelocateElement(rpmts ts, /*@null@*/ rpmte relocateElement)
00981         /*@modifies ts @*/;
00982 
00988 uint_32 rpmtsColor(rpmts ts)
00989         /*@*/;
00990 
00996 uint_32 rpmtsPrefColor(rpmts ts)
00997         /*@*/;
00998 
01005 uint_32 rpmtsSetColor(rpmts ts, uint_32 color)
01006         /*@modifies ts @*/;
01007 
01014 /*@relnull@*/
01015 rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
01016         /*@*/;
01017 
01029 int rpmtsSetNotifyCallback(rpmts ts,
01030                 /*@observer@*/ rpmCallbackFunction notify,
01031                 /*@observer@*/ rpmCallbackData notifyData)
01032         /*@modifies ts @*/;
01033 
01038 /*@newref@*/
01039 rpmts rpmtsCreate(void)
01040         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01041         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
01042 
01056 int rpmtsAddInstallElement(rpmts ts, Header h,
01057                 /*@exposed@*/ /*@null@*/ const fnpyKey key, int upgrade,
01058                 /*@null@*/ rpmRelocation relocs)
01059         /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
01060                 fileSystem, internalState @*/
01061         /*@modifies ts, h, rpmcliPackagesTotal, rpmGlobalMacroContext,
01062                 fileSystem, internalState @*/;
01063 
01071 int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset)
01072         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01073         /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
01074 
01075 #if !defined(SWIG)
01076 #if defined(_RPMTS_INTERNAL)
01077 
01083 /*@unused@*/ static inline
01084 int rpmtsPrint(/*@null@*/ rpmts ts, /*@null@*/ FILE * fp)
01085         /*@globals fileSystem @*/
01086         /*@modifies ts, *fp, fileSystem @*/
01087 {
01088     int tid = rpmtsGetTid(ts);
01089     time_t ttid = tid;
01090     rpmtsi tsi;
01091     rpmte te;
01092 
01093     if (fp == NULL)
01094         fp = stderr;
01095 
01096     fprintf(fp, _("=== Transaction at %-24.24s (0x%08x):\n"), ctime(&ttid),tid);
01097     tsi = rpmtsiInit(ts);
01098     while ((te = rpmtsiNext(tsi, 0)) != NULL)
01099         fprintf(fp, "t%s> %s\n", (rpmteType(te) == TR_ADDED ? "I" : "E"),
01100                 rpmteNEVRA(te));
01101     tsi = rpmtsiFree(tsi);
01102     return 0;
01103 }
01104 #endif  /* defined(_RPMTS_INTERNAL) */
01105 #endif  /* !defined(SWIG) */
01106 
01107 #ifdef __cplusplus
01108 }
01109 #endif
01110 
01111 
01112 #endif  /* H_RPMTS */

Generated on Wed Dec 28 07:45:57 2016 for rpm by  doxygen 1.4.4