]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/filed/fd_plugins.h
Check for job_canceled() in fd_plugin code
[bacula/bacula] / bacula / src / filed / fd_plugins.h
index ad203e979eebd0fa9415ef91a90c2d22cb784a41..12d3baa256a778e3ac723ee315daa9a2d384abdd 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -46,7 +46,7 @@
 #define _FILE_OFFSET_BITS 64
 #define _LARGEFILE_SOURCE 1
 #define _LARGE_FILES 1
-#endif
+#endif  /* ! _BACULA_H */
 
 #include <sys/types.h>
 
@@ -56,7 +56,7 @@
 #else
 #include "winconfig.h"
 #endif
-#else
+#else  /* !HAVE_WIN32 */
 #ifndef __CONFIG_H
 #include "config.h"
 #define __CONFIG_H
@@ -144,9 +144,12 @@ typedef enum {
   bVarClient    = 5,
   bVarJobName   = 6,
   bVarJobStatus = 7,
-  bVarSinceTime = 8
+  bVarSinceTime = 8,
+  bVarAccurate  = 9,
+  bVarFileSeen  = 10
 } bVariable;
 
+/* Events that are passed to plugin */
 typedef enum {
   bEventJobStart        = 1,
   bEventJobEnd          = 2,
@@ -181,10 +184,11 @@ void new_plugins(JCR *jcr);
 void free_plugins(JCR *jcr);
 void generate_plugin_event(JCR *jcr, bEventType event, void *value=NULL);
 bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start);
-void plugin_name_stream(JCR *jcr, char *name);    
+bool plugin_name_stream(JCR *jcr, char *name);    
 int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace);
 bool plugin_set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd);
 int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level);
+bool plugin_check_file(JCR *jcr, char *fname);
 #endif
 
 #ifdef __cplusplus
@@ -202,9 +206,12 @@ typedef struct s_baculaFuncs {
    bRC (*getBaculaValue)(bpContext *ctx, bVariable var, void *value);
    bRC (*setBaculaValue)(bpContext *ctx, bVariable var, void *value);
    bRC (*JobMessage)(bpContext *ctx, const char *file, int line, 
-       int type, time_t mtime, const char *fmt, ...);     
+       int type, utime_t mtime, const char *fmt, ...);     
    bRC (*DebugMessage)(bpContext *ctx, const char *file, int line,
        int level, const char *fmt, ...);
+   void *(*baculaMalloc)(bpContext *ctx, const char *file, int line, 
+       size_t size);
+   void (*baculaFree)(bpContext *ctx, const char *file, int line, void *mem);
 } bFuncs;
 
 
@@ -223,7 +230,7 @@ typedef enum {
 
 
 #define FD_PLUGIN_MAGIC     "*FDPluginData*" 
-#define FD_PLUGIN_INTERFACE_VERSION  1
+#define FD_PLUGIN_INTERFACE_VERSION  4
 
 typedef struct s_pluginInfo {
    uint32_t size;
@@ -255,6 +262,7 @@ typedef struct s_pluginFuncs {
    bRC (*pluginIO)(bpContext *ctx, struct io_pkt *io);
    bRC (*createFile)(bpContext *ctx, struct restore_pkt *rp);
    bRC (*setFileAttributes)(bpContext *ctx, struct restore_pkt *rp);
+   bRC (*checkFile)(bpContext *ctx, char *fname);
 } pFuncs;
 
 #define plug_func(plugin) ((pFuncs *)(plugin->pfuncs))