00001 #ifndef H_PSM
00002 #define H_PSM
00003
00009 #include "fsm.h"
00010 #include "depends.h"
00011
00014 struct sharedFileInfo {
00015 int pkgFileNum;
00016 int otherFileNum;
00017 int otherPkg;
00018 int isRemoved;
00019 };
00020
00023 struct transactionFileInfo_s {
00024
00025 enum rpmTransactionType type;
00026 fileAction action;
00027
00028 fileAction * actions;
00029
00030 struct fingerPrint_s * fps;
00031 HGE_t hge;
00032 HAE_t hae;
00033 HME_t hme;
00034 HRE_t hre;
00035 HFD_t hfd;
00036 Header h;
00037
00038 const char * name;
00039
00040 const char * version;
00041
00042 const char * release;
00043 int_32 epoch;
00044 uint_32 flags;
00045 const uint_32 * fflags;
00046 const uint_32 * fsizes;
00047 const uint_32 * fmtimes;
00048
00049 const char ** bnl;
00050
00051 const char ** dnl;
00052 int_32 * dil;
00053
00054 const char ** obnl;
00055
00056 const char ** odnl;
00057
00058 int_32 * odil;
00059 const char ** fmd5s;
00060
00061 const char ** flinks;
00062
00063 uint_16 * fmodes;
00064 uint_16 * frdevs;
00065
00066 char * fstates;
00067
00068 const char ** fuser;
00069
00070 const char ** fgroup;
00071
00072 const char ** flangs;
00073 int fc;
00074 int dc;
00075 int bnlmax;
00076 int dnlmax;
00077 int astriplen;
00078 int striplen;
00079 unsigned int archiveSize;
00080 mode_t dperms;
00081 mode_t fperms;
00082
00083 const char ** apath;
00084 int mapflags;
00085
00086 int * fmapflags;
00087 uid_t uid;
00088
00089 uid_t * fuids;
00090 gid_t gid;
00091
00092 gid_t * fgids;
00093 int magic;
00094 #define TFIMAGIC 0x09697923
00095
00096 FSM_t fsm;
00098
00099
00100 struct availablePackage * ap;
00101
00102 struct sharedFileInfo * replaced;
00103
00104 uint_32 * replacedSizes;
00105
00106
00107 unsigned int record;
00108 };
00109
00112 #define PSM_VERBOSE 0x8000
00113 #define PSM_INTERNAL 0x4000
00114 #define PSM_SYSCALL 0x2000
00115 #define PSM_DEAD 0x1000
00116 #define _fv(_a) ((_a) | PSM_VERBOSE)
00117 #define _fi(_a) ((_a) | PSM_INTERNAL)
00118 #define _fs(_a) ((_a) | (PSM_INTERNAL | PSM_SYSCALL))
00119 #define _fd(_a) ((_a) | (PSM_INTERNAL | PSM_DEAD))
00120 typedef enum pkgStage_e {
00121 PSM_UNKNOWN = 0,
00122 PSM_INIT = 1,
00123 PSM_PRE = 2,
00124 PSM_PROCESS = 3,
00125 PSM_POST = 4,
00126 PSM_UNDO = 5,
00127 PSM_FINI = 6,
00128
00129 PSM_PKGINSTALL = 7,
00130 PSM_PKGERASE = 8,
00131 PSM_PKGCOMMIT = 10,
00132 PSM_PKGSAVE = 12,
00133
00134 PSM_CREATE = 17,
00135 PSM_NOTIFY = 22,
00136 PSM_DESTROY = 23,
00137 PSM_COMMIT = 25,
00138
00139 PSM_CHROOT_IN = 51,
00140 PSM_CHROOT_OUT = 52,
00141 PSM_SCRIPT = 53,
00142 PSM_TRIGGERS = 54,
00143 PSM_IMMED_TRIGGERS = 55,
00144 PSM_RPMIO_FLAGS = 56,
00145
00146 PSM_RPMDB_LOAD = 97,
00147 PSM_RPMDB_ADD = 98,
00148 PSM_RPMDB_REMOVE = 99
00149
00150 } pkgStage;
00151 #undef _fv
00152 #undef _fi
00153 #undef _fs
00154 #undef _fd
00155
00158 struct psm_s {
00159
00160 rpmTransactionSet ts;
00161
00162 TFI_t fi;
00163 FD_t cfd;
00164 FD_t fd;
00165 Header oh;
00166
00167 rpmdbMatchIterator mi;
00168
00169 const char * stepName;
00170
00171 const char * rpmio_flags;
00172
00173 const char * failedFile;
00174
00175 const char * pkgURL;
00176
00177 const char * pkgfn;
00178 int scriptTag;
00179 int progTag;
00180 int npkgs_installed;
00181 int scriptArg;
00182 int sense;
00183 int countCorrection;
00184 int chrootDone;
00185 rpmCallbackType what;
00186 unsigned long amount;
00187 unsigned long total;
00188 rpmRC rc;
00189 pkgStage goal;
00190
00191 pkgStage stage;
00192 };
00193
00194 #ifdef __cplusplus
00195 extern "C" {
00196 #endif
00197
00203 void loadFi(Header h, TFI_t fi)
00204 ;
00205
00210 void freeFi(TFI_t fi)
00211 ;
00212
00218 const char *const fiTypeString(TFI_t fi)
00219 ;
00220
00227 int psmStage(PSM_t psm, pkgStage stage)
00228
00229
00230
00231 ;
00232
00233 #ifdef __cplusplus
00234 }
00235 #endif
00236
00237 #endif