00001 #ifndef H_DEPENDS 00002 #define H_DEPENDS 00003 00008 #include <header.h> 00009 00013 struct tsortInfo { 00014 union { 00015 int count; 00016 /*@dependent@*/ struct availablePackage * suc; 00017 } tsi_u; 00018 #define tsi_count tsi_u.count 00019 #define tsi_suc tsi_u.suc 00020 /*@owned@*/ struct tsortInfo * tsi_next; 00021 /*@dependent@*/ struct availablePackage * tsi_pkg; 00022 int tsi_reqx; 00023 int tsi_qcnt; 00024 }; 00025 00029 struct availablePackage { 00030 Header h; 00031 /*@dependent@*/ const char * name; 00032 /*@dependent@*/ const char * version; 00033 /*@dependent@*/ const char * release; 00034 /*@owned@*/ const char ** provides; 00035 /*@owned@*/ const char ** providesEVR; 00036 /*@dependent@*/ int * provideFlags; 00037 /*@owned@*/ const char ** requires; 00038 /*@owned@*/ const char ** requiresEVR; 00039 /*@dependent@*/ int * requireFlags; 00040 /*@owned@*/ const char ** baseNames; 00041 /*@dependent@*/ int_32 * epoch; 00042 int providesCount; 00043 int requiresCount; 00044 int filesCount; 00045 struct tsortInfo tsi; 00046 uint_32 multiLib; /* MULTILIB */ 00047 /*@dependent@*/ const void * key; 00048 rpmRelocation * relocs; 00049 /*@null@*/ FD_t fd; 00050 } ; 00051 00055 struct availableIndexEntry { 00056 /*@dependent@*/ struct availablePackage * package; 00057 /*@dependent@*/ const char * entry; 00058 size_t entryLen; 00059 enum indexEntryType { 00060 IET_PROVIDES=1 00061 } type; 00062 } ; 00063 00067 struct availableIndex { 00068 /*@null@*/ struct availableIndexEntry * index; 00069 int size; 00070 } ; 00071 00075 struct fileIndexEntry { 00076 int pkgNum; 00077 int fileFlags; /* MULTILIB */ 00078 /*@dependent@*/ const char * baseName; 00079 } ; 00080 00084 struct dirInfo { 00085 /*@owned@*/ const char * dirName; 00086 int dirNameLen; 00087 /*@owned@*/ struct fileIndexEntry * files; 00088 int numFiles; 00089 } ; 00090 00094 struct availableList { 00095 /*@owned@*/ /*@null@*/ struct availablePackage * list; 00096 struct availableIndex index; 00097 int delta; 00098 int size; 00099 int alloced; 00100 int numDirs; 00101 /*@owned@*/ struct dirInfo * dirs; 00102 }; 00103 00107 struct transactionElement { 00108 enum rpmTransactionType { 00109 TR_ADDED, 00110 TR_REMOVED 00111 } type; 00112 union { 00113 int addedIndex; 00114 struct { 00115 int dboffset; 00116 int dependsOnIndex; 00117 } removed; 00118 } u; 00119 }; 00120 00124 struct rpmTransactionSet_s { 00125 rpmtransFlags transFlags; 00126 rpmCallbackFunction notify; 00127 /*@observer@*/ rpmCallbackData notifyData; 00128 /*@dependent@*/ rpmProblemSet probs; 00129 rpmprobFilterFlags ignoreSet; 00130 /*@owned@*/ /*@null@*/ rpmdb rpmdb; 00131 /*@only@*/ int * removedPackages; 00132 int numRemovedPackages; 00133 int allocedRemovedPackages; 00134 struct availableList addedPackages; 00135 struct availableList availablePackages; 00137 /*@only@*/ struct transactionElement * order; 00139 int orderCount; 00140 int orderAlloced; 00141 int chrootDone; 00142 /*@only@*/ const char * rootDir; 00143 /*@only@*/ const char * currDir; 00144 /*@null@*/ FD_t scriptFd; 00145 int delta; 00146 int id; 00147 }; 00148 00152 struct problemsSet { 00153 struct rpmDependencyConflict * problems; 00154 int num; 00155 int alloced; 00156 }; 00157 00158 #ifdef __cplusplus 00159 extern "C" { 00160 #endif 00161 00162 /* XXX lib/uninstall.c */ 00173 int headerMatchesDepFlags(Header h, 00174 const char *reqName, const char * reqEVR, int reqFlags); 00175 00176 #ifdef __cplusplus 00177 } 00178 #endif 00179 00180 #endif /* H_DEPENDS */