rpm 5.2.1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

lib/psm.h
Go to the documentation of this file.

    00001 #ifndef H_PSM
    00002 #define H_PSM
    00003
    00013 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
    00014
    00015 #include <rpmsq.h>
    00016
    00017 /*@-exportlocal@*/
    00018 /*@unchecked@*/
    00019 extern int _psm_debug;
    00020 /*@=exportlocal@*/
    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         /* 11-15 unused */
    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         /* 0-15 reserved for waitpid return. */
    00095     RPMSCRIPT_STATE_EXEC        = (1 << 16),
    00096     RPMSCRIPT_STATE_REAPED      = (1 << 17),
    00097         /* 18-23 unused */
    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 /*@only@*/ /*@null@*/
    00120     const char * NVRA;
    00121     rpmpsmFlags flags;
    00122 /*@refcounted@*/
    00123     rpmts ts;
    00124 /*@dependent@*/ /*@null@*/
    00125     rpmte te;
    00126 /*@refcounted@*/ /*@relnull@*/
    00127     rpmfi fi;
    00128 /*@refcounted@*/ /*@relnull@*/
    00129     rpmds triggers;
    00130 /*@null@*/
    00131     const char ** Tpats;
    00132 /*@null@*/
    00133     void * Tmires;
    00134     int nTmires;
    00135 /*@only@*/
    00136     HE_t IPhe;
    00137 /*@relnull@*/
    00138     FD_t cfd;
    00139 /*@relnull@*/
    00140     FD_t fd;
    00141     Header oh;
    00142 /*@null@*/
    00143     rpmmi mi;
    00144 /*@observer@*/
    00145     const char * stepName;
    00146 /*@only@*/ /*@null@*/
    00147     const char * rpmio_flags;
    00148 /*@only@*/ /*@null@*/
    00149     const char * payload_format;
    00150 /*@only@*/ /*@null@*/
    00151     const char * failedFile;
    00152 /*@only@*/ /*@null@*/
    00153     const char * pkgURL;
    00154 /*@dependent@*/
    00155     const char * pkgfn;
    00156 /*@only@*/ /*@null@*/
    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 /*@unused@*/
    00170     pkgStage stage;
    00171     pkgStage nstage;
    00173 #if defined(__LCLINT__)
    00174 /*@refs@*/
    00175     int nrefs;
    00176 #endif
    00177 };
    00178
    00179 #ifdef __cplusplus
    00180 extern "C" {
    00181 #endif
    00182
    00189 /*@unused@*/ /*@null@*/
    00190 rpmpsm rpmpsmUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmpsm psm,
    00191                 /*@null@*/ const char * msg)
    00192         /*@modifies psm @*/;
    00193 #define rpmpsmUnlink(_psm, _msg)        \
    00194     ((rpmpsm)rpmioUnlinkPoolItem((rpmioItem)(_psm), _msg, __FILE__, __LINE__))
    00195
    00202 /*@unused@*/ /*@newref@*/ /*@null@*/
    00203 rpmpsm rpmpsmLink (/*@null@*/ rpmpsm psm, /*@null@*/ const char * msg)
    00204         /*@modifies psm @*/;
    00205 #define rpmpsmLink(_psm, _msg)  \
    00206     ((rpmpsm)rpmioLinkPoolItem((rpmioItem)(_psm), _msg, __FILE__, __LINE__))
    00207
    00213 /*@null@*/
    00214 rpmpsm rpmpsmFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmpsm psm,
    00215                 /*@null@*/ const char * msg)
    00216         /*@globals fileSystem @*/
    00217         /*@modifies psm, fileSystem @*/;
    00218 #define rpmpsmFree(_psm, _msg)  \
    00219     ((rpmpsm)rpmioFreePoolItem((rpmioItem)(_psm), _msg, __FILE__, __LINE__))
    00220
    00228 /*@null@*/
    00229 rpmpsm rpmpsmNew(rpmts ts, /*@null@*/ rpmte te, rpmfi fi)
    00230         /*@modifies ts, fi @*/;
    00231
    00238 rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage)
    00239         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
    00240         /*@modifies psm, rpmGlobalMacroContext, fileSystem, internalState @*/;
    00241 #define rpmpsmUNSAFE    rpmpsmSTAGE
    00242
    00243 #ifdef __cplusplus
    00244 }
    00245 #endif
    00246
    00247 #endif  /* H_PSM */