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 int entryLen; 00062 int entryIx; 00063 enum indexEntryType { 00064 IET_PROVIDES=1 00065 } type; 00066 } ; 00067 00071 struct availableIndex { 00072 /*@null@*/ struct availableIndexEntry * index; 00073 int size; 00074 } ; 00075 00079 struct fileIndexEntry { 00080 int pkgNum; 00081 int fileFlags; /* MULTILIB */ 00082 /*@dependent@*/ /*@null@*/ const char * baseName; 00083 } ; 00084 00088 typedef struct dirInfo_s { 00089 /*@owned@*/ const char * dirName; 00090 int dirNameLen; 00091 /*@owned@*/ struct fileIndexEntry * files; 00092 int numFiles; 00093 } * dirInfo ; 00094 00098 typedef /*@abstract@*/ struct availableList_s { 00099 /*@owned@*/ /*@null@*/ struct availablePackage * list; 00100 struct availableIndex index; 00101 int delta; 00102 int size; 00103 int alloced; 00104 int numDirs; 00105 /*@owned@*/ /*@null@*/ dirInfo dirs; 00106 } * availableList; 00107 00111 struct transactionElement { 00112 enum rpmTransactionType { 00113 TR_ADDED, 00114 TR_REMOVED 00115 } type; 00116 union { 00117 /*@unused@*/ int addedIndex; 00118 /*@unused@*/ struct { 00119 int dboffset; 00120 int dependsOnIndex; 00121 } removed; 00122 } u; 00123 } ; 00124 00128 struct rpmTransactionSet_s { 00129 rpmtransFlags transFlags; 00130 /*@null@*/ rpmCallbackFunction notify; 00131 /*@observer@*/ /*@null@*/ rpmCallbackData notifyData; 00133 /*@dependent@*/ rpmProblemSet probs; 00134 rpmprobFilterFlags ignoreSet; 00135 int filesystemCount; 00136 /*@dependent@*/ const char ** filesystems; 00137 /*@only@*/ struct diskspaceInfo * di; 00138 /*@kept@*/ /*@null@*/ rpmdb rpmdb; 00139 /*@only@*/ int * removedPackages; 00140 int numRemovedPackages; 00141 int allocedRemovedPackages; 00142 struct availableList_s addedPackages; 00144 struct availableList_s availablePackages; 00146 /*@only@*/ struct transactionElement * order; 00148 int orderCount; 00149 int orderAlloced; 00150 /*@only@*/ TFI_t flList; 00151 int flEntries; 00152 int chrootDone; 00153 /*@only@*/ const char * rootDir; 00154 /*@only@*/ const char * currDir; 00155 /*@null@*/ FD_t scriptFd; 00156 int delta; 00157 int id; 00158 } ; 00159 00163 typedef /*@abstract@*/ struct problemsSet_s { 00164 rpmDependencyConflict problems; 00165 int num; 00166 int alloced; 00167 } * problemsSet; 00168 00169 #ifdef __cplusplus 00170 extern "C" { 00171 #endif 00172 00183 int headerMatchesDepFlags(Header h, 00184 const char * reqName, const char * reqEVR, int reqFlags) 00185 /*@*/; 00186 00187 #ifdef __cplusplus 00188 } 00189 #endif 00190 00191 #endif /* H_DEPENDS */