00001 #ifndef H_DEPENDS 00002 #define H_DEPENDS 00003 00009 #include <header.h> 00010 00014 struct tsortInfo { 00015 union { 00016 int count; 00017 /*@kept@*/ /*@null@*/ struct availablePackage * suc; 00018 } tsi_u; 00019 #define tsi_count tsi_u.count 00020 #define tsi_suc tsi_u.suc 00021 /*@owned@*/ /*@null@*/ struct tsortInfo * tsi_next; 00022 /*@kept@*/ /*@null@*/ struct availablePackage * tsi_pkg; 00023 int tsi_reqx; 00024 int tsi_qcnt; 00025 } ; 00026 00030 struct availablePackage { 00031 Header h; 00032 /*@dependent@*/ const char * name; 00033 /*@dependent@*/ const char * version; 00034 /*@dependent@*/ const char * release; 00035 /*@owned@*/ const char ** provides; 00036 /*@owned@*/ const char ** providesEVR; 00037 /*@dependent@*/ int * provideFlags; 00038 /*@owned@*//*@null@*/ const char ** requires; 00039 /*@owned@*//*@null@*/ const char ** requiresEVR; 00040 /*@dependent@*//*@null@*/ int * requireFlags; 00041 /*@owned@*//*@null@*/ const char ** baseNames; 00042 /*@dependent@*//*@null@*/ int_32 * epoch; 00043 int providesCount; 00044 int requiresCount; 00045 int filesCount; 00046 int npreds; 00047 int depth; 00048 struct tsortInfo tsi; 00049 uint_32 multiLib; /* MULTILIB */ 00050 /*@kept@*//*@null@*/ const void * key; 00051 /*@null@*/ rpmRelocation * relocs; 00052 /*@null@*/ FD_t fd; 00053 } ; 00054 00058 struct availableIndexEntry { 00059 /*@dependent@*/ struct availablePackage * package; 00060 /*@dependent@*/ const char * entry; 00061 size_t entryLen; 00062 enum indexEntryType { 00063 IET_PROVIDES=1 00064 } type; 00065 } ; 00066 00070 struct availableIndex { 00071 /*@null@*/ struct availableIndexEntry * index; 00072 int size; 00073 } ; 00074 00078 struct fileIndexEntry { 00079 int pkgNum; 00080 int fileFlags; /* MULTILIB */ 00081 /*@dependent@*/ /*@null@*/ const char * baseName; 00082 } ; 00083 00087 typedef struct dirInfo_s { 00088 /*@owned@*/ const char * dirName; 00089 int dirNameLen; 00090 /*@owned@*/ struct fileIndexEntry * files; 00091 int numFiles; 00092 } * dirInfo ; 00093 00097 typedef /*@abstract@*/ struct availableList_s { 00098 /*@owned@*/ /*@null@*/ struct availablePackage * list; 00099 struct availableIndex index; 00100 int delta; 00101 int size; 00102 int alloced; 00103 int numDirs; 00104 /*@owned@*/ /*@null@*/ dirInfo dirs; 00105 } * availableList; 00106 00110 struct transactionElement { 00111 enum rpmTransactionType { 00112 TR_ADDED, 00113 TR_REMOVED 00114 } type; 00115 union { 00116 /*@unused@*/ int addedIndex; 00117 /*@unused@*/ struct { 00118 int dboffset; 00119 int dependsOnIndex; 00120 } removed; 00121 } u; 00122 } ; 00123 00127 struct rpmTransactionSet_s { 00128 rpmtransFlags transFlags; 00129 /*@null@*/ rpmCallbackFunction notify; 00130 /*@observer@*/ /*@null@*/ rpmCallbackData notifyData; 00132 /*@dependent@*/ rpmProblemSet probs; 00133 rpmprobFilterFlags ignoreSet; 00134 int filesystemCount; 00135 /*@dependent@*/ const char ** filesystems; 00136 /*@only@*/ struct diskspaceInfo * di; 00137 /*@kept@*/ /*@null@*/ rpmdb rpmdb; 00138 /*@only@*/ int * removedPackages; 00139 int numRemovedPackages; 00140 int allocedRemovedPackages; 00141 struct availableList_s addedPackages; 00143 struct availableList_s availablePackages; 00145 /*@only@*/ struct transactionElement * order; 00147 int orderCount; 00148 int orderAlloced; 00149 /*@only@*/ TFI_t flList; 00150 int flEntries; 00151 int chrootDone; 00152 /*@only@*/ const char * rootDir; 00153 /*@only@*/ const char * currDir; 00154 /*@null@*/ FD_t scriptFd; 00155 int delta; 00156 int id; 00157 } ; 00158 00162 typedef /*@abstract@*/ struct problemsSet_s { 00163 rpmDependencyConflict problems; 00164 int num; 00165 int alloced; 00166 } * problemsSet; 00167 00168 #ifdef __cplusplus 00169 extern "C" { 00170 #endif 00171 00182 int headerMatchesDepFlags(Header h, 00183 const char * reqName, const char * reqEVR, int reqFlags) 00184 /*@*/; 00185 00186 #ifdef __cplusplus 00187 } 00188 #endif 00189 00190 #endif /* H_DEPENDS */