Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
/*
- * Bacula plugin loader/unloader
+ * Common plugin definitions
*
* Kern Sibbald, October 2007
*/
#ifndef __PLUGINS_H
#define __PLUGINS_H
-#include "bacula.h"
-#ifndef HAVE_WIN32
-#include <dlfcn.h>
-#endif
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#define NAMELEN(dirent) (strlen((dirent)->d_name))
-#endif
-#ifndef HAVE_READDIR_R
-int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
-#endif
-
-#ifndef RTLD_NOW
-#define RTLD_NOW 2
-#endif
-
/****************************************************************************
* *
* Common definitions for all plugins *
* *
****************************************************************************/
-extern alist *plugin_list;
+extern DLL_IMP_EXP alist *plugin_list;
+/* Universal return codes from all plugin functions */
+typedef enum {
+ bRC_OK = 0, /* OK */
+ bRC_Stop = 1, /* Stop calling other plugins */
+ bRC_Error = 2, /* Some kind of error */
+ bRC_More = 3, /* More files to backup */
+ bRC_Term = 4 /* Unload me */
+} bRC;
-/* Universal return code from all functions */
-typedef int32_t bpError;
/* Context packet as first argument of all functions */
-typedef struct s_bpContext {
+struct bpContext {
void *bContext; /* Bacula private context */
void *pContext; /* Plugin private context */
-} bpContext;
+};
extern "C" {
-typedef bpError (*t_loadPlugin)(void *binfo, void *bfuncs, void **pinfo, void **pfuncs);
-typedef bpError (*t_unloadPlugin)(void);
+typedef bRC (*t_loadPlugin)(void *binfo, void *bfuncs, void **pinfo, void **pfuncs);
+typedef bRC (*t_unloadPlugin)(void);
}
class Plugin {
void *pinfo;
void *pfuncs;
void *pHandle;
+ bool disabled;
};
/* Functions */