# lib/depends.h

Go to the documentation of this file.

    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 */