summaryrefslogtreecommitdiff
path: root/lib/rpmplugins.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rpmplugins.h')
-rw-r--r--lib/rpmplugins.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/lib/rpmplugins.h b/lib/rpmplugins.h
new file mode 100644
index 0000000..7985559
--- /dev/null
+++ b/lib/rpmplugins.h
@@ -0,0 +1,125 @@
+#ifndef _PLUGINS_H
+#define _PLUGINS_H
+
+#include <rpm/rpmtypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PLUGIN_HOOKS plugin_hooks
+
+#define PLUGINHOOK_INIT_FUNC pluginhook_init
+#define PLUGINHOOK_CLEANUP_FUNC pluginhook_cleanup
+#define PLUGINHOOK_OPENTE_FUNC pluginhook_opente
+#define PLUGINHOOK_COLL_POST_ADD_FUNC pluginhook_coll_post_add
+#define PLUGINHOOK_COLL_POST_ANY_FUNC pluginhook_coll_post_any
+#define PLUGINHOOK_COLL_PRE_REMOVE_FUNC pluginhook_coll_pre_remove
+
+enum rpmPluginHook_e {
+ PLUGINHOOK_NONE = 0,
+ PLUGINHOOK_INIT = 1 << 0,
+ PLUGINHOOK_CLEANUP = 1 << 1,
+ PLUGINHOOK_OPENTE = 1 << 2,
+ PLUGINHOOK_COLL_POST_ADD = 1 << 3,
+ PLUGINHOOK_COLL_POST_ANY = 1 << 4,
+ PLUGINHOOK_COLL_PRE_REMOVE = 1 << 5
+};
+
+typedef rpmFlags rpmPluginHook;
+
+/** \ingroup rpmplugins
+ * Create a new plugins structure
+ * @param ts transaction set
+ * @return new plugin structure
+ */
+rpmPlugins rpmpluginsNew(rpmts ts);
+
+/** \ingroup rpmplugins
+ * Destroy a plugins structure
+ * @param plugins plugins structure to destroy
+ * @return NULL always
+ */
+rpmPlugins rpmpluginsFree(rpmPlugins plugins);
+
+/** \ingroup rpmplugins
+ * Add and open a plugin
+ * @param plugins plugins structure to add a plugin to
+ * @param name name to access plugin
+ * @param path path of plugin to open
+ * @param opts options to pass to the plugin
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsAdd(rpmPlugins plugins, const char *name, const char *path, const char *opts);
+
+/** \ingroup rpmplugins
+ * Add and open a collection plugin
+ * @param plugins plugins structure to add a collection plugin to
+ * @param name name of collection to open
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsAddCollectionPlugin(rpmPlugins plugins, const char *name);
+
+/** \ingroup rpmplugins
+ * Determine if a plugin has been added already
+ * @param plugins plugins structure
+ * @param name name of plugin to check
+ * @return 1 if plugin name has already been added, 0 otherwise
+ */
+int rpmpluginsPluginAdded(rpmPlugins plugins, const char *name);
+
+
+/** \ingroup rpmplugins
+ * Call the init plugin hook
+ * @param plugins plugins structure
+ * @param name name of plugin
+ * @param opts plugin options
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsCallInit(rpmPlugins plugins, const char *name, const char *opts);
+
+/** \ingroup rpmplugins
+ * Call the cleanup plugin hook
+ * @param plugins plugins structure
+ * @param name name of plugin
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsCallCleanup(rpmPlugins plugins, const char *name);
+
+/** \ingroup rpmplugins
+ * Call the open te plugin hook
+ * @param plugins plugins structure
+ * @param name name of plugin
+ * @param te transaction element opened
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsCallOpenTE(rpmPlugins plugins, const char *name, rpmte te);
+
+/** \ingroup rpmplugins
+ * Call the collection post add plugin hook
+ * @param plugins plugins structure
+ * @param name name of plugin
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsCallCollectionPostAdd(rpmPlugins plugins, const char *name);
+
+/** \ingroup rpmplugins
+ * Call the collection post any plugin hook
+ * @param plugins plugins structure
+ * @param name name of plugin
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsCallCollectionPostAny(rpmPlugins plugins, const char *name);
+
+/** \ingroup rpmplugins
+ * Call the collection pre remove plugin hook
+ * @param plugins plugins structure
+ * @param name name of plugin
+ * @return RPMRC_OK on success, RPMRC_FAIL otherwise
+ */
+rpmRC rpmpluginsCallCollectionPreRemove(rpmPlugins plugins, const char *name);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _PLUGINS_H */