00001 #ifndef H_DEPENDS 00002 #define H_DEPENDS 00003 00009 #include <header.h> 00010 00011 typedef /*@abstract@*/ struct transactionElement_s * transactionElement; 00012 typedef /*@abstract@*/ struct tsortInfo_s * tsortInfo; 00013 00017 struct tsortInfo_s { 00018 union { 00019 int count; 00020 /*@kept@*/ /*@null@*/ struct availablePackage * suc; 00021 } tsi_u; 00022 #define tsi_count tsi_u.count 00023 #define tsi_suc tsi_u.suc 00024 /*@owned@*/ /*@null@*/ 00025 tsortInfo tsi_next; 00026 /*@kept@*/ /*@null@*/ 00027 struct availablePackage * tsi_pkg; 00028 int tsi_reqx; 00029 int tsi_qcnt; 00030 } ; 00031 00035 struct availablePackage { 00036 Header h; 00037 /*@dependent@*/ const char * name; 00038 /*@dependent@*/ const char * version; 00039 /*@dependent@*/ const char * release; 00040 /*@owned@*/ const char ** provides; 00041 /*@owned@*/ const char ** providesEVR; 00042 /*@dependent@*/ int * provideFlags; 00043 /*@owned@*//*@null@*/ const char ** requires; 00044 /*@owned@*//*@null@*/ const char ** requiresEVR; 00045 /*@dependent@*//*@null@*/ int * requireFlags; 00046 /*@owned@*//*@null@*/ const char ** baseNames; 00047 /*@dependent@*//*@null@*/ int_32 * epoch; 00048 int providesCount; 00049 int requiresCount; 00050 int filesCount; 00052 struct availablePackage * parent; 00053 int degree; 00054 int depth; 00055 int npreds; 00056 int tree; 00057 struct tsortInfo_s tsi; 00059 uint_32 multiLib; /* MULTILIB */ 00060 /*@kept@*//*@null@*/ const void * key; 00061 /*@null@*/ rpmRelocation * relocs; 00062 /*@null@*/ FD_t fd; 00063 } ; 00064 00068 struct availableIndexEntry { 00069 /*@dependent@*/ struct availablePackage * package; 00070 /*@dependent@*/ const char * entry; 00071 int entryLen; 00072 int entryIx; 00073 enum indexEntryType { 00074 IET_PROVIDES=1 00075 } type; 00076 } ; 00077 00081 struct availableIndex { 00082 /*@null@*/ struct availableIndexEntry * index; 00083 int size; 00084 } ; 00085 00089 struct fileIndexEntry { 00090 int pkgNum; 00091 int fileFlags; /* MULTILIB */ 00092 /*@dependent@*/ /*@null@*/ const char * baseName; 00093 } ; 00094 00098 typedef struct dirInfo_s { 00099 /*@owned@*/ const char * dirName; 00100 int dirNameLen; 00101 /*@owned@*/ struct fileIndexEntry * files; 00102 int numFiles; 00103 } * dirInfo ; 00104 00108 typedef /*@abstract@*/ struct availableList_s { 00109 /*@owned@*/ /*@null@*/ struct availablePackage * list; 00110 struct availableIndex index; 00111 int delta; 00112 int size; 00113 int alloced; 00114 int numDirs; 00115 /*@owned@*/ /*@null@*/ dirInfo dirs; 00116 } * availableList; 00117 00121 struct transactionElement_s { 00122 enum rpmTransactionType { 00123 TR_ADDED, 00124 TR_REMOVED 00125 } type; 00126 union { 00127 /*@unused@*/ int addedIndex; 00128 /*@unused@*/ struct { 00129 int dboffset; 00130 int dependsOnIndex; 00131 } removed; 00132 } u; 00133 } ; 00134 00138 struct rpmTransactionSet_s { 00139 rpmtransFlags transFlags; 00140 /*@null@*/ rpmCallbackFunction notify; 00141 /*@observer@*/ /*@null@*/ rpmCallbackData notifyData; 00143 /*@dependent@*/ rpmProblemSet probs; 00144 rpmprobFilterFlags ignoreSet; 00145 int filesystemCount; 00146 /*@dependent@*/ const char ** filesystems; 00147 /*@only@*/ struct diskspaceInfo * di; 00148 /*@kept@*/ /*@null@*/ rpmdb rpmdb; 00149 /*@only@*/ int * removedPackages; 00150 int numRemovedPackages; 00151 int allocedRemovedPackages; 00152 struct availableList_s addedPackages; 00154 struct availableList_s availablePackages; 00156 /*@only@*/ transactionElement order; 00158 int orderCount; 00159 int orderAlloced; 00160 /*@only@*/ TFI_t flList; 00161 int flEntries; 00162 int chrootDone; 00163 /*@only@*/ const char * rootDir; 00164 /*@only@*/ const char * currDir; 00165 /*@null@*/ FD_t scriptFd; 00166 int delta; 00167 int id; 00168 } ; 00169 00173 typedef /*@abstract@*/ struct problemsSet_s { 00174 rpmDependencyConflict problems; 00175 int num; 00176 int alloced; 00177 } * problemsSet; 00178 00179 #ifdef __cplusplus 00180 extern "C" { 00181 #endif 00182 00193 int headerMatchesDepFlags(Header h, 00194 const char * reqName, const char * reqEVR, int reqFlags) 00195 /*@*/; 00196 00197 #ifdef __cplusplus 00198 } 00199 #endif 00200 00201 #endif /* H_DEPENDS */