Viewing file: rpmgi.h (4.39 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef H_RPMGI #define H_RPMGI
/** \ingroup rpmio * \file lib/rpmgi.h */
#include <rpmlib.h> #include <rpmte.h> #include <rpmts.h> #include <fts.h> #include <argv.h>
/** */ /*@-exportlocal@*/ /*@unchecked@*/ extern int _rpmgi_debug; /*@=exportlocal@*/
/** */ typedef enum rpmgiFlags_e { RPMGI_NONE = 0, RPMGI_TSADD = (1 << 0), RPMGI_TSORDER = (1 << 1), RPMGI_NOGLOB = (1 << 2), RPMGI_NOMANIFEST = (1 << 3), RPMGI_NOHEADER = (1 << 4) } rpmgiFlags;
/*@unchecked@*/ extern rpmgiFlags giFlags;
#if defined(_RPMGI_INTERNAL) /** \ingroup rpmio */ struct rpmgi_s { /*@refcounted@*/ rpmts ts; /*!< Iterator transaction set. */ int tag; /*!< Iterator type. */ /*@kept@*/ /*@relnull@*/ const void * keyp; /*!< Iterator key. */ size_t keylen; /*!< Iterator key length. */
rpmgiFlags flags; /*!< Iterator control bits. */ int active; /*!< Iterator is active? */ int i; /*!< Element index. */ /*@null@*/ const char * hdrPath; /*!< Path to current iterator header. */ /*@refcounted@*/ /*@null@*/ Header h; /*!< Current iterator header. */
/*@null@*/ rpmtsi tsi;
/*@null@*/ rpmdbMatchIterator mi;
/*@refcounted@*/ FD_t fd;
ARGV_t argv; int argc;
int ftsOpts; /*@null@*/ FTS * ftsp; /*@relnull@*/ FTSENT * fts;
/*@refs@*/ int nrefs; /*!< Reference count. */ }; #endif
#ifdef __cplusplus extern "C" { #endif
/** * Unreference a generalized iterator instance. * @param gi generalized iterator * @param msg * @return NULL always */ /*@unused@*/ /*@null@*/ rpmgi rpmgiUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmgi gi, /*@null@*/ const char * msg) /*@modifies gi @*/;
/** @todo Remove debugging entry from the ABI. */ /*@-exportlocal@*/ /*@null@*/ rpmgi XrpmgiUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmgi gi, /*@null@*/ const char * msg, const char * fn, unsigned ln) /*@modifies gi @*/; /*@=exportlocal@*/ #define rpmgiUnlink(_gi, _msg) XrpmgiUnlink(_gi, _msg, __FILE__, __LINE__)
/** * Reference a generalized iterator instance. * @param gi generalized iterator * @param msg * @return new generalized iterator reference */ /*@unused@*/ /*@newref@*/ /*@null@*/ rpmgi rpmgiLink (/*@null@*/ rpmgi gi, /*@null@*/ const char * msg) /*@modifies gi @*/;
/** @todo Remove debugging entry from the ABI. */ /*@newref@*/ /*@null@*/ rpmgi XrpmgiLink (/*@null@*/ rpmgi gi, /*@null@*/ const char * msg, const char * fn, unsigned ln) /*@modifies gi @*/; #define rpmgiLink(_gi, _msg) XrpmgiLink(_gi, _msg, __FILE__, __LINE__)
/** Destroy a generalized iterator. * @param gi generalized iterator * @return NULL always */ /*@null@*/ rpmgi rpmgiFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmgi gi) /*@globals rpmGlobalMacroContext, h_errno, internalState @*/ /*@modifies gi, rpmGlobalMacroContext, h_errno, internalState @*/;
/** * Return a generalized iterator. * @param ts transaction set * @param tag rpm tag * @param keyp key data (NULL for sequential access) * @param keylen key data length (0 will use strlen(keyp)) * @return new iterator */ /*@null@*/ rpmgi rpmgiNew(rpmts ts, int tag, /*@kept@*/ /*@null@*/ const void * keyp, size_t keylen) /*@globals internalState @*/ /*@modifies ts, internalState @*/;
/** * Perform next iteration step. * @param gi generalized iterator * @returns RPMRC_OK on success, RPMRC_NOTFOUND on EOI */ rpmRC rpmgiNext(/*@null@*/ rpmgi gi) /*@globals rpmGlobalMacroContext, h_errno, internalState @*/ /*@modifies gi, rpmGlobalMacroContext, h_errno, internalState @*/;
/** * Return current header path. * @param gi generalized iterator * @returns header path */ /*@observer@*/ /*@null@*/ const char * rpmgiHdrPath(rpmgi gi) /*@*/;
/** * Return current iteration header. * @param gi generalized iterator * @returns header */ /*@null@*/ Header rpmgiHeader(/*@null@*/ rpmgi gi) /*@*/;
/** * Return current iteration transaction set. * @param gi generalized iterator * @returns transaction set */ /*@null@*/ rpmts rpmgiTs(/*@null@*/ rpmgi gi) /*@*/;
/** * Load iterator args. * @param gi generalized iterator * @param argv arg list * @param ftsOpts fts(3) flags * @param flags iterator flags * @returns RPMRC_OK on success */ rpmRC rpmgiSetArgs(rpmgi gi, /*@null@*/ ARGV_t argv, int ftsOpts, rpmgiFlags flags) /*@globals internalState @*/ /*@modifies gi, internalState @*/;
#ifdef __cplusplus } #endif
#endif /* H_RPMGI */
|