1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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 */
|