summaryrefslogtreecommitdiff
path: root/lib/rpmprob.h
diff options
context:
space:
mode:
authorJinkun Jang <jinkun.jang@samsung.com>2013-03-12 15:17:20 +0900
committerJinkun Jang <jinkun.jang@samsung.com>2013-03-12 15:17:20 +0900
commit7df2385c2f6c93f96e00bc87f2086066cae89ecc (patch)
tree79d5c20a494622eb084de831a2a51530cd421e33 /lib/rpmprob.h
parentb7a3bffb8e0341b7e4ef69def268bca3a7f279ff (diff)
downloadrpm-7df2385c2f6c93f96e00bc87f2086066cae89ecc.tar.gz
rpm-7df2385c2f6c93f96e00bc87f2086066cae89ecc.tar.bz2
rpm-7df2385c2f6c93f96e00bc87f2086066cae89ecc.zip
Diffstat (limited to 'lib/rpmprob.h')
-rw-r--r--lib/rpmprob.h148
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 */