X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Frpmps.h;h=1b1142bf295c46a8d6b5040c3fcad9882dfe96bd;hb=9cf156d6583a9f9581000bb12ff047980ebcef03;hp=ca6005923764681daab400140f19f7543b93ce75;hpb=e39b131750525e0f5a172ebee55154db6b71be7b;p=platform%2Fupstream%2Frpm.git diff --git a/lib/rpmps.h b/lib/rpmps.h index ca60059..1b1142b 100644 --- a/lib/rpmps.h +++ b/lib/rpmps.h @@ -7,150 +7,24 @@ */ #include -#include /* for fnpyKey */ +#include +#include #ifdef __cplusplus extern "C" { #endif -extern int _rpmps_debug; - /** \ingroup rpmps - * @todo Generalize filter mechanism. - */ -typedef enum rpmprobFilterFlags_e { - RPMPROB_FILTER_NONE = 0, - RPMPROB_FILTER_IGNOREOS = (1 << 0), /*!< from --ignoreos */ - RPMPROB_FILTER_IGNOREARCH = (1 << 1), /*!< from --ignorearch */ - RPMPROB_FILTER_REPLACEPKG = (1 << 2), /*!< from --replacepkgs */ - RPMPROB_FILTER_FORCERELOCATE= (1 << 3), /*!< from --badreloc */ - RPMPROB_FILTER_REPLACENEWFILES= (1 << 4), /*!< from --replacefiles */ - RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5), /*!< from --replacefiles */ - RPMPROB_FILTER_OLDPACKAGE = (1 << 6), /*!< from --oldpackage */ - RPMPROB_FILTER_DISKSPACE = (1 << 7), /*!< from --ignoresize */ - RPMPROB_FILTER_DISKNODES = (1 << 8) /*!< from --ignoresize */ -} rpmprobFilterFlags; - -/** - * Raw data for an element of a problem set. + * Problem set iterator */ -typedef struct rpmProblem_s * rpmProblem; - -/** \ingroup rpmps - * Transaction problems found while processing a transaction set/ - */ -typedef struct rpmps_s * rpmps; - typedef struct rpmpsi_s * rpmpsi; /** \ingroup rpmps - * Enumerate transaction set problem types. - */ -typedef enum rpmProblemType_e { - RPMPROB_BADARCH, /*!< package ... is for a different architecture */ - RPMPROB_BADOS, /*!< package ... is for a different operating system */ - RPMPROB_PKG_INSTALLED, /*!< package ... is already installed */ - RPMPROB_BADRELOCATE,/*!< path ... is not relocatable for package ... */ - RPMPROB_REQUIRES, /*!< package ... has unsatisfied Requires: ... */ - RPMPROB_CONFLICT, /*!< package ... has unsatisfied Conflicts: ... */ - RPMPROB_NEW_FILE_CONFLICT, /*!< file ... conflicts between attemped installs of ... */ - RPMPROB_FILE_CONFLICT,/*!< file ... from install of ... conflicts with file from package ... */ - RPMPROB_OLDPACKAGE, /*!< package ... (which is newer than ...) is already installed */ - RPMPROB_DISKSPACE, /*!< installing package ... needs ... on the ... filesystem */ - RPMPROB_DISKNODES, /*!< installing package ... needs ... on the ... filesystem */ - } rpmProblemType; - -/** \ingroup rpmps - * Create a problem item. - * @param type type of problem - * @param pkgNEVR package name - * @param key filename or python object address - * @param dn directory name - * @param bn file base name - * @param altNEVR related (e.g. through a dependency) package name - * @param ulong1 generic pointer/long attribute - * @return rpmProblem - */ -rpmProblem rpmProblemCreate(rpmProblemType type, - const char * pkgNEVR, - fnpyKey key, - const char * dn, const char * bn, - const char * altNEVR, - unsigned long ulong1); - -/** \ingroup rpmps - * Destroy a problem item. - * @param prob rpm problem - * @return rpm problem (NULL) - */ -rpmProblem rpmProblemFree(rpmProblem prob); - -/** \ingroup rpmps - * Return package NEVR - * @param prob rpm problem - * @return package NEVR - */ -const char * rpmProblemGetPkgNEVR(const rpmProblem prob); -/** \ingroup rpmps - * Return related (e.g. through a dependency) package NEVR - * @param prob rpm problem - * @return related (e.g. through a dependency) package NEVR - */ -const char * rpmProblemGetAltNEVR(const rpmProblem prob); - -/** \ingroup rpmps - * Return type of problem (dependency, diskpace etc) - * @param prob rpm problem - * @return type of problem - */ - -rpmProblemType rpmProblemGetType(const rpmProblem prob); - -/** \ingroup rpmps - * Return filename or python object address of a problem - * @param prob rpm problem - * @return filename or python object address - */ -fnpyKey rpmProblemGetKey(const rpmProblem prob); - -/** \ingroup rpmps - * Return a generic data string from a problem - * @param prob rpm problem - * @return a generic data string - * @todo needs a better name - */ -const char * rpmProblemGetStr(const rpmProblem prob); -/** \ingroup rpmps - * Return generic pointer/long attribute from a problem - * @param prob rpm problem - * @return a generic pointer/long attribute - * @todo needs a better name - */ -unsigned long rpmProblemGetLong(const rpmProblem prob); - -/** \ingroup rpmps - * Return formatted string representation of a problem. - * @param prob rpm problem - * @return formatted string (malloc'd) - */ -extern char * rpmProblemString(const rpmProblem prob); - -/** \ingroup rpmps - * Unreference a problem set instance. - * @param ps problem set - * @param msg - * @return problem set - */ -rpmps rpmpsUnlink (rpmps ps, - const char * msg); - -/** \ingroup rpmps * Reference a problem set instance. * @param ps transaction set - * @param msg * @return new transaction set reference */ -rpmps rpmpsLink (rpmps ps, const char * msg); +rpmps rpmpsLink (rpmps ps); /** \ingroup rpmps * Return number of problems in set. @@ -174,6 +48,13 @@ rpmpsi rpmpsInitIterator(rpmps ps); rpmpsi rpmpsFreeIterator(rpmpsi psi); /** \ingroup rpmps + * Return next problem from iterator + * @param psi problem set iterator + * @return next problem (weak ref), NULL on termination + */ +rpmProblem rpmpsiNext(rpmpsi psi); + +/** \ingroup rpmps * Return next problem set iterator index * @param psi problem set iterator * @return iterator index, -1 on termination @@ -215,39 +96,12 @@ void rpmpsPrint(FILE *fp, rpmps ps); void rpmpsAppendProblem(rpmps ps, rpmProblem prob); /** \ingroup rpmps - * Append a problem to current set of problems. - * @param ps problem set - * @param type type of problem - * @param pkgNEVR package name - * @param key filename or python object address - * @param dn directory name - * @param bn file base name - * @param altNEVR related (e.g. through a dependency) package name - * @param ulong1 generic pointer/long attribute - */ -void rpmpsAppend(rpmps ps, rpmProblemType type, - const char * pkgNEVR, - fnpyKey key, - const char * dn, const char * bn, - const char * altNEVR, - unsigned long ulong1); - -/** \ingroup rpmps - * Filter a problem set. - * - * As the problem sets are generated in an order solely dependent - * on the ordering of the packages in the transaction, and that - * ordering can't be changed, the problem sets must be parallel to - * one another. Additionally, the filter set must be a subset of the - * target set, given the operations available on transaction set. - * This is good, as it lets us perform this trim in linear time, rather - * then logarithmic or quadratic. - * - * @param ps problem set - * @param filter problem filter (or NULL) - * @return 0 no problems, 1 if problems remain + * Merge problem set into another. + * @param dest destination problem set + * @param src source problem set + * @return number of problems merged */ -int rpmpsTrim(rpmps ps, rpmps filter); +int rpmpsMerge(rpmps dest, rpmps src); #ifdef __cplusplus }