diff options
author | Jinkun Jang <jinkun.jang@samsung.com> | 2013-03-12 15:17:20 +0900 |
---|---|---|
committer | Jinkun Jang <jinkun.jang@samsung.com> | 2013-03-12 15:17:20 +0900 |
commit | 7df2385c2f6c93f96e00bc87f2086066cae89ecc (patch) | |
tree | 79d5c20a494622eb084de831a2a51530cd421e33 /lib/rpmprob.h | |
parent | b7a3bffb8e0341b7e4ef69def268bca3a7f279ff (diff) | |
download | rpm-tizen_2.1.tar.gz rpm-tizen_2.1.tar.bz2 rpm-tizen_2.1.zip |
Tizen 2.1 basesubmit/tizen_2.2/20130710.072219submit/tizen_2.1/20130423.104200accepted/tizen_2.1/20130423.1513382.2_release2.2.1_release2.1b_releasetizen_2.2tizen_2.1
Diffstat (limited to 'lib/rpmprob.h')
-rw-r--r-- | lib/rpmprob.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/lib/rpmprob.h b/lib/rpmprob.h new file mode 100644 index 0000000..2b89f15 --- /dev/null +++ b/lib/rpmprob.h @@ -0,0 +1,148 @@ +#ifndef _RPMPROB_H +#define _RPMPROB_H + +/** \ingroup rpmprob + * \file lib/rpmprob.h + * Structures and prototypes used for an rpm problem item. + */ + +#include <stdio.h> +#include <rpm/rpmtypes.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rpmProblem_s * rpmProblem; + +/** \ingroup rpmprob + * @todo Generalize filter mechanism. + */ +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 */ +}; + +typedef rpmFlags rpmprobFilterFlags; + +/** \ingroup rpmprob + * 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 */ + RPMPROB_OBSOLETES, /*!< package ... is obsoleted by ... */ + } rpmProblemType; + +/** \ingroup rpmprob + * Create a problem item. + * @param type type of problem + * @param pkgNEVR package name + * @param key filename or python object address + * @param altNEVR related (e.g. through a dependency) package name + * @param str generic string attribute + * @param number generic number attribute + * @return rpmProblem + */ +rpmProblem rpmProblemCreate(rpmProblemType type, + const char * pkgNEVR, fnpyKey key, + const char * altNEVR, + const char * str, uint64_t number); + +/** \ingroup rpmprob + * Destroy a problem item. + * @param prob rpm problem + * @return rpm problem (NULL) + */ +rpmProblem rpmProblemFree(rpmProblem prob); + +/** \ingroup rpmprob + * Reference an rpmProblem instance + * @param prob rpm problem + * @return rpm problem + */ +rpmProblem rpmProblemLink(rpmProblem prob); + +/** \ingroup rpmprob + * Compare two problems for equality. + * @param ap 1st problem + * @param bp 2nd problem + * @return 1 if the problems differ, 0 otherwise + */ +int rpmProblemCompare(rpmProblem ap, rpmProblem bp); + +/** \ingroup rpmprob + * Return package NEVR + * @param prob rpm problem + * @return package NEVR + */ + +const char * rpmProblemGetPkgNEVR(rpmProblem prob); +/** \ingroup rpmprob + * 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(rpmProblem prob); + +/** \ingroup rpmprob + * Return type of problem (dependency, diskpace etc) + * @param prob rpm problem + * @return type of problem + */ + +rpmProblemType rpmProblemGetType(rpmProblem prob); + +/** \ingroup rpmprob + * Return filename or python object address of a problem + * @param prob rpm problem + * @return filename or python object address + */ +fnpyKey rpmProblemGetKey(rpmProblem prob); + +/** \ingroup rpmprob + * 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(rpmProblem prob); + +/** \ingroup rpmprob + * Return disk requirement (needed disk space / number of inodes) + * depending on problem type. On problem types other than RPMPROB_DISKSPACE + * and RPMPROB_DISKNODES return value is undefined. + * @param prob rpm problem + * @return disk requirement + */ +rpm_loff_t rpmProblemGetDiskNeed(rpmProblem prob); + +/** \ingroup rpmprob + * Return formatted string representation of a problem. + * @param prob rpm problem + * @return formatted string (malloc'd) + */ +char * rpmProblemString(rpmProblem prob); + +#ifdef __cplusplus +} +#endif + +#endif /* _RPMPROB_H */ |