00001 #ifndef H_PSM
00002 #define H_PSM
00003
00013 typedef struct rpmpsm_s * rpmpsm;
00014
00015 #include <rpmsq.h>
00016
00017
00018
00019 extern int _psm_debug;
00020
00021
00024 #define PSM_VERBOSE 0x8000
00025 #define PSM_INTERNAL 0x4000
00026 #define PSM_SYSCALL 0x2000
00027 #define PSM_DEAD 0x1000
00028 #define _fv(_a) ((_a) | PSM_VERBOSE)
00029 #define _fi(_a) ((_a) | PSM_INTERNAL)
00030 #define _fs(_a) ((_a) | (PSM_INTERNAL | PSM_SYSCALL))
00031 #define _fd(_a) ((_a) | (PSM_INTERNAL | PSM_DEAD))
00032 typedef enum pkgStage_e {
00033 PSM_UNKNOWN = 0,
00034 PSM_INIT = 1,
00035 PSM_PRE = 2,
00036 PSM_PROCESS = 3,
00037 PSM_POST = 4,
00038 PSM_UNDO = 5,
00039 PSM_FINI = 6,
00040
00041 PSM_PKGINSTALL = 7,
00042 PSM_PKGERASE = 8,
00043 PSM_PKGCOMMIT = 10,
00044 PSM_PKGSAVE = 12,
00045
00046 PSM_CREATE = 17,
00047 PSM_NOTIFY = 22,
00048 PSM_DESTROY = 23,
00049 PSM_COMMIT = 25,
00050
00051 PSM_CHROOT_IN = 51,
00052 PSM_CHROOT_OUT = 52,
00053 PSM_SCRIPT = 53,
00054 PSM_TRIGGERS = 54,
00055 PSM_IMMED_TRIGGERS = 55,
00056 PSM_RPMIO_FLAGS = 56,
00057
00058 PSM_RPMDB_LOAD = 97,
00059 PSM_RPMDB_ADD = 98,
00060 PSM_RPMDB_REMOVE = 99
00061
00062 } pkgStage;
00063 #undef _fv
00064 #undef _fi
00065 #undef _fs
00066 #undef _fd
00067
00071 typedef enum rpmScriptID_e {
00072 RPMSCRIPT_UNKNOWN = 0,
00073 RPMSCRIPT_PRETRANS = 1,
00074 RPMSCRIPT_TRIGGERPREIN = 2,
00075 RPMSCRIPT_PREIN = 3,
00076 RPMSCRIPT_POSTIN = 4,
00077 RPMSCRIPT_TRIGGERIN = 5,
00078 RPMSCRIPT_TRIGGERUN = 6,
00079 RPMSCRIPT_PREUN = 7,
00080 RPMSCRIPT_POSTUN = 8,
00081 RPMSCRIPT_TRIGGERPOSTUN = 9,
00082 RPMSCRIPT_POSTTRANS = 10,
00083
00084 RPMSCRIPT_VERIFY = 16,
00085 RPMSCRIPT_SANITYCHECK = 17,
00086 RPMSCRIPT_MAX = 32
00087 } rpmScriptID;
00088
00092 typedef enum rpmScriptState_e {
00093 RPMSCRIPT_STATE_UNKNOWN = 0,
00094
00095 RPMSCRIPT_STATE_EXEC = (1 << 16),
00096 RPMSCRIPT_STATE_REAPED = (1 << 17),
00097
00098 RPMSCRIPT_STATE_SELINUX = (1 << 24),
00099 RPMSCRIPT_STATE_EMULATOR = (1 << 25),
00100 RPMSCRIPT_STATE_LUA = (1 << 26)
00101 } rpmScriptState;
00102
00106 typedef enum rpmpsmFlags_e {
00107 RPMPSM_FLAGS_DEBUG = (1 << 0),
00108 RPMPSM_FLAGS_CHROOTDONE = (1 << 1),
00109 RPMPSM_FLAGS_UNORDERED = (1 << 2),
00110 RPMPSM_FLAGS_GOTTRIGGERS = (1 << 3),
00111 } rpmpsmFlags;
00112
00115 struct rpmpsm_s {
00116 struct rpmioItem_s _item;
00117 struct rpmsqElem sq;
00119
00120 const char * NVRA;
00121 rpmpsmFlags flags;
00122
00123 rpmts ts;
00124
00125 rpmte te;
00126
00127 rpmfi fi;
00128
00129 rpmds triggers;
00130
00131 const char ** Tpats;
00132
00133 void * Tmires;
00134 int nTmires;
00135
00136 HE_t IPhe;
00137
00138 FD_t cfd;
00139
00140 FD_t fd;
00141 Header oh;
00142
00143 rpmmi mi;
00144
00145 const char * stepName;
00146
00147 const char * rpmio_flags;
00148
00149 const char * payload_format;
00150
00151 const char * failedFile;
00152
00153 const char * pkgURL;
00154
00155 const char * pkgfn;
00156
00157 int *sstates;
00158 rpmTag scriptTag;
00159 rpmTag progTag;
00160 int npkgs_installed;
00161 int scriptArg;
00162 int sense;
00163 int countCorrection;
00164 rpmCallbackType what;
00165 unsigned long long amount;
00166 unsigned long long total;
00167 rpmRC rc;
00168 pkgStage goal;
00169
00170 pkgStage stage;
00171 pkgStage nstage;
00173 #if defined(__LCLINT__)
00174
00175 int nrefs;
00176 #endif
00177 };
00178
00179 #ifdef __cplusplus
00180 extern "C" {
00181 #endif
00182
00189
00190 rpmpsm rpmpsmUnlink ( rpmpsm psm,
00191 const char * msg)
00192 ;
00193 #define rpmpsmUnlink(_psm, _msg) \
00194 ((rpmpsm)rpmioUnlinkPoolItem((rpmioItem)(_psm), _msg, __FILE__, __LINE__))
00195
00202
00203 rpmpsm rpmpsmLink ( rpmpsm psm, const char * msg)
00204 ;
00205 #define rpmpsmLink(_psm, _msg) \
00206 ((rpmpsm)rpmioLinkPoolItem((rpmioItem)(_psm), _msg, __FILE__, __LINE__))
00207
00213
00214 rpmpsm rpmpsmFree( rpmpsm psm,
00215 const char * msg)
00216
00217 ;
00218 #define rpmpsmFree(_psm, _msg) \
00219 ((rpmpsm)rpmioFreePoolItem((rpmioItem)(_psm), _msg, __FILE__, __LINE__))
00220
00228
00229 rpmpsm rpmpsmNew(rpmts ts, rpmte te, rpmfi fi)
00230 ;
00231
00238 rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage)
00239
00240 ;
00241 #define rpmpsmUNSAFE rpmpsmSTAGE
00242
00243 #ifdef __cplusplus
00244 }
00245 #endif
00246
00247 #endif