]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Correct bacula32.def entry point as specified by James.
authorKern Sibbald <kern@sibbald.com>
Sun, 29 Mar 2009 08:01:30 +0000 (08:01 +0000)
committerKern Sibbald <kern@sibbald.com>
Sun, 29 Mar 2009 08:01:30 +0000 (08:01 +0000)
kes  Add code to FD plugin driver to make a copy of the plugin
     filename to be saved to avoid save_file from zaping it.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8635 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/release-3-status.txt
bacula/src/filed/fd_plugins.c
bacula/src/win32/lib/bacula32.def
bacula/technotes

index e801d08dc8f199110fd74f9bde72599d96675834..6074d1fa2fc136c87d888b91d4fb98df5e5d67bf 100644 (file)
@@ -24,6 +24,7 @@ Code to be completed before 3.0.0 is released:
    - is file deleted (at end of job)
    - Pass accurate flag to Plugin (* this works)
    * code implemented not yet intgrated into Exchange plugin
+4. Possibly change VirtualFull to use same input and output pool.
 
 New features implemented:
 - Accurate Backup
index e484da73f2451ebc9175caa11ad80574aa0db7e5..ec6ce7449a669142b8c8da8147fd28c5b4522088 100644 (file)
@@ -214,6 +214,8 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    char *cmd = ff_pkt->top_fname;
    struct save_pkt sp;
    bEvent event;
+   POOL_MEM fname(PM_FNAME);
+   POOL_MEM link(PM_FNAME);
 
    if (!plugin_list || !jcr->plugin_ctx_list) {
       return 1;                            /* Return if no plugins loaded */
@@ -277,15 +279,21 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          }
          jcr->plugin_sp = &sp;
          ff_pkt = jcr->ff;
-         ff_pkt->fname = sp.fname;
-         ff_pkt->link = sp.link;
+         /*
+          * Copy fname and link because save_file() zaps them.  This 
+          *  avoids zaping the plugin's strings.
+          */
+         pm_strcpy(fname, sp.fname);
+         pm_strcpy(link, sp.link);
+         ff_pkt->fname = fname.c_str();
+         ff_pkt->link = link.c_str();
          ff_pkt->type = sp.type;
          memcpy(&ff_pkt->statp, &sp.statp, sizeof(ff_pkt->statp));
-         Dmsg1(dbglvl, "Save_file: file=%s\n", ff_pkt->fname);
+         Dmsg1(dbglvl, "Save_file: file=%s\n", fname.c_str());
          save_file(jcr, ff_pkt, true);
          bRC rc = plug_func(plugin)->endBackupFile(jcr->plugin_ctx);
          if (rc == bRC_More || rc == bRC_OK) {
-            accurate_mark_file_as_seen(jcr, ff_pkt->fname);
+            accurate_mark_file_as_seen(jcr, fname.c_str());
          }
          if (rc == bRC_More) {
             continue;
index d020257d107e8c4d1f64289e4ccb0a65dc88f599..6048d58506bba0391f305486ad6815f2c76029b2 100644 (file)
@@ -68,7 +68,7 @@ utime
  
 ; plugins.o
 _Z10new_pluginv
-_Z12load_pluginsPvS_PKcS1_
+_Z12load_pluginsPvS_PKcS1_PFbP6PluginE
 _Z14unload_pluginsv
 _Z19dbg_plugin_add_hookPFvP6PluginP6_iobufE
 
index 413b37f035b44c3a03915ef27bc8599d228b3711..bcafdbb229342fda5cef0f77bbea363c880323c5 100644 (file)
@@ -1,6 +1,10 @@
               Technical notes for current SVN
           
 General:
+29Mar09
+kes  Correct bacula32.def entry point as specified by James.
+kes  Add code to FD plugin driver to make a copy of the plugin
+     filename to be saved to avoid save_file from zaping it.
 28Mar09
 kes  Directly mark all files saved by plugin as being seen for Accurate.
 kes  Add checks on the plugin version and the plugin license. Currently