]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Add code to tell the OS that we no longer need a cached
authorKern Sibbald <kern@sibbald.com>
Thu, 24 May 2007 19:58:07 +0000 (19:58 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 24 May 2007 19:58:07 +0000 (19:58 +0000)
     file that we were reading. In findlib/bfile.c.  Also,
     only cache files that we are reading.
kes  Tweak to bsmtp to eliminate compiler warnings on Win32.
kes  Implement script to automatically generate cats and dll .def
     files for Win32 dll.
kes  Update README.mingw32 to include new .def file generation.

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

13 files changed:
bacula/autoconf/config.h.in
bacula/autoconf/configure.in
bacula/configure
bacula/kernstodo
bacula/src/findlib/bfile.c
bacula/src/findlib/bfile.h
bacula/src/stored/spool.c
bacula/src/tools/bsmtp.c
bacula/src/win32/README.mingw32
bacula/src/win32/cats/bacula_cats.def
bacula/src/win32/dll/bacula.def
bacula/src/win32/dll/make_def [new file with mode: 0755]
bacula/technotes-2.1

index e860477e18e8c82ffb2b68f9b1ae876dfe26d69a..5806d22ea10639dba9523c99f9ea2998f7cfb34c 100644 (file)
 /* Set if Bacula conio support enabled */
 #undef HAVE_CONIO
 
+/* Define if encryption support should be enabled */
+#undef HAVE_CRYPTO
+
 /* Define to 1 if you have the <curses.h> header file. */
 #undef HAVE_CURSES_H
 
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
+/* Define to 1 if you have the `fdatasync' function. */
+#undef HAVE_FDATASYNC
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at runtime.
-        STACK_DIRECTION > 0 => grows toward higher addresses
-        STACK_DIRECTION < 0 => grows toward lower addresses
-        STACK_DIRECTION = 0 => direction of growth unknown */
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
 #undef STACK_DIRECTION
 
 /* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
index 700d4644683377a89a9ac1b8ba4b4b7a628f07c7..700a9f8922293eb5047df5e7ca22d7d9ad577048 100644 (file)
@@ -1640,6 +1640,7 @@ AC_CHECK_FUNCS( \
 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
 AC_CHECK_FUNCS(posix_fadvise)
+AC_CHECK_FUNCS(fdatasync)
 
 AC_CHECK_FUNCS(chflags) 
 
index 02c42ea61d8d5042dfb2722b0d414d68144eab1e..00383b154fe84b51e9b2838408eb551c57fd322c 100755 (executable)
 done
 
 
+for ac_func in fdatasync
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
 
 for ac_func in chflags
 do
index 9fef4e1e0f0e83dc740f904526a248d130d67c59..4488411d171253a3aba1bbbd6462f3d4567c0499 100644 (file)
@@ -83,6 +83,14 @@ Priority:
    02-Feb 11:00 btape: Fatal Error because: Bacula interrupted by signal 11: Segmentation violation
    Kaboom! btape, btape got signal 11. Attempting traceback.
 
+- Encryption -- email from Landon
+   > The backup encryption algorithm is currently not configurable, and is  
+   > set to AES_128_CBC in src/filed/backup.c. The encryption code  
+   > supports a number of different ciphers (as well as adding arbitrary  
+   > new ones) -- only a small bit of code would be required to map a  
+   > configuration string value to a CRYPTO_CIPHER_* value, if anyone is  
+   > interested in implementing this functionality.
+
 - Ensure that moving a purged Volume in ua_purge.c to the RecyclePool
   does the right thing.
 - Why doesn't @"xxx abc" work in a conf file?
index 48464c0807a262a3e87bfb42a1fadf663775f36c..9e32afecb5a40dc72152fff36a33184781bf08b9 100644 (file)
@@ -49,6 +49,11 @@ ssize_t (*python_write)(BFILE *bfd, void *buf, size_t count) = NULL;
 #include <sys/paths.h>
 #endif
 
+#if !defined(HAVE_FDATASYNC)
+#define fdatasync(fd)
+#endif
+
+
 /* ===============================================================
  *
  *            U N I X   AND   W I N D O W S
@@ -796,6 +801,7 @@ int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
       }
    }
    bfd->berrno = errno;
+   bfd->m_flags = flags;
    Dmsg1(400, "Open file %d\n", bfd->fid);
    errno = bfd->berrno;
 
@@ -803,7 +809,7 @@ int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
    bfd->win32DecompContext.liNextHeader = 0;
 
 #if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED)
-   if (bfd->fid != -1) {
+   if (bfd->fid != -1 && flags & O_RDONLY) {
       int stat = posix_fadvise(bfd->fid, 0, 0, POSIX_FADV_WILLNEED);
       Dmsg2(400, "Did posix_fadvise on %s stat=%d\n", fname, stat);
    }
@@ -842,6 +848,13 @@ int bclose(BFILE *bfd)
    if (bfd->fid == -1) {
       return 0;
    }
+#if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
+   if (bfd->m_flags & O_RDONLY) {
+      fdatasync(bfd->fid);            /* sync the file */
+      /* Tell OS we don't need it any more */
+      posix_fadvise(bfd->fid, 0, 0, POSIX_FADV_DONTNEED);
+   }
+#endif
 
    /* Close normal file */
    stat = close(bfd->fid);
index 03cdd13ab03d41c90cc02b896e0d65832722fd70..5c856b52d0b474c5c8c476f03c7670af753aed71 100644 (file)
@@ -1,14 +1,7 @@
-/*
- *  Bacula low level File I/O routines.  This routine simulates
- *    open(), read(), write(), and close(), but using native routines.
- *    I.e. on Windows, we use Windows APIs.
- *
- *     Kern Sibbald May MMIII
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2007 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.
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
 */
+/*
+ *  Bacula low level File I/O routines.  This routine simulates
+ *    open(), read(), write(), and close(), but using native routines.
+ *    I.e. on Windows, we use Windows APIs.
+ *
+ *     Kern Sibbald May MMIII
+ */
 
 #ifndef __BFILE_H
 #define __BFILE_H
@@ -119,6 +119,7 @@ HANDLE bget_handle(BFILE *bfd);
 /* Basic Unix low level I/O file packet */
 struct BFILE {
    int fid;                           /* file id on Unix */
+   int m_flags;                       /* open flags */
    int berrno;
    char *prog;                        /* reader/writer program if any */
    JCR *jcr;                          /* jcr for editing job codes */
index ee26ee7a869af19b7f2bd84bd8d68823f279cc47..bf8687945ebc228ef0ed8b9d0612084863df9bc1 100644 (file)
@@ -81,6 +81,8 @@ void list_spool_stats(void sendit(const char *msg, int len, void *sarg), void *a
    POOL_MEM msg(PM_MESSAGE);
    int len;
 
+   len = Mmsg(msg, _("Spooling statistics:\n"));
+
    if (spool_stats.data_jobs || spool_stats.max_data_size) {
       len = Mmsg(msg, _("Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"),
          spool_stats.data_jobs, edit_uint64_with_commas(spool_stats.data_size, ed1),
@@ -97,6 +99,8 @@ void list_spool_stats(void sendit(const char *msg, int len, void *sarg), void *a
    
       sendit(msg.c_str(), len, arg);
    }
+   len = Mmsg(msg, "====\n");
+   sendit(msg.c_str(), len, arg);
 }
 
 bool begin_data_spool(DCR *dcr)
index d0b6066e686b67261f22ee65e0032938bebf9a0d..0747cc9fd753853b049d05046fe93d5863e1298c 100644 (file)
@@ -175,8 +175,6 @@ static void get_date_string(char *buf, int buf_len)
    struct tm tm;
    char tzbuf[MAXSTRING];
    long my_timezone;
-   struct timeval tv;
-   struct timezone tz;
 
    /* Add RFC822 date */
    (void)localtime_r(&now, &tm);
@@ -191,6 +189,8 @@ __MINGW_IMPORT long     _dstbias;
    my_timezone /= 60;
 
 #else
+   struct timeval tv;
+   struct timezone tz;
    gettimeofday(&tv, &tz);
    my_timezone = tz.tz_minuteswest; /* timezone offset in mins */
 #endif
index 7fc095e39b3b67d153e9f2487de729b7f4a8c0fd..8ad7d12a27270c1234abf7ad1cd9f22a5e10916a 100644 (file)
@@ -130,6 +130,18 @@ the variable declaration in the header file.  All exported variables
 must be declared in a header file and MUST NOT be declared in a
 source file referencing the variable.
 
+Exporting functions is now more or less automated.  If you find that
+a function name has been added, changed, or an argument modified,    
+simply do the following:
+
+   cd .../bacula/src/win32/dll 
+   make                  (to build the .o files, note the link will fail)
+   ./make_def >bacula.def
+
+This should rebuild the bacula.def file.
+
+===== manual changing of bacula.def no longer necessary =====
+If you want to do it manually, please see below:
 Exporting a function requires a bit more work.  You must determine the
 C++ mangled name of the new function.
 
@@ -146,6 +158,7 @@ the new function.  Remove the leading underscore and place the result
 in the file
 
    .../bacula/src/win32/dll/bacula.def
+=== end manual changing of bacula.def ==========
 
 If you add a new file, you will need to specify its name in
 
@@ -172,6 +185,19 @@ exported.
 New data variables are exported by placing their name in the file
 .../bacula/src/win32/cats/bacula_cats.def.
 
+As with the bacula.def file above, this is now more or less automated.
+When the link dies, simply do the following:
+
+   cd .../bacula/src/win32/cats
+   make                  (to build the .o files, note the link will fail)
+   ./make_def >bacula_cats.def
+
+This should rebuild the bacula_cats.def file. Note, if you have
+changed any data entry points, you will need to modify the make_def
+script -- it should be rather obvious.
+
+
+===== manual changing of bacula_cats.def no longer necessary =====
 Exporting a function requires a bit more work.  You must determine the
 C++ mangled name of the new function.
 
@@ -186,6 +212,7 @@ Replace <file> with the base part of the name of the source code file
 which contains the new function.  Replace <symbol> with the name of
 the new function.  Remove the leading underscore and place the result
 in the .../bacula/src/win32/cats/bacula_cats.def file.
+=== end manual changing of bacula_cats.def ==========
 
 
 Structure of the MinGW32 build environment
index 140a409541c18db57f50ef05ff4438f47b72adf7..e8773351d52a86c1a23c673d3ab487d7f050eabc 100644 (file)
@@ -1,54 +1,52 @@
 LIBRARY bacula_cats.dll\r
 EXPORTS\r
-\r
-; bdb.c:\r
-; mysql.c:\r
-; postgresql.c:\r
-; sqlite.c:\r
-_Z11db_get_typev\r
-_Z12db_sql_queryP4B_DBPKcPFiPviPPcES3_\r
-_Z16db_escape_stringPcS_i\r
-_Z16db_init_databaseP3JCRPKcS2_S2_S2_iS2_i\r
-_Z16db_open_databaseP3JCRP4B_DB\r
-_Z17db_close_databaseP3JCRP4B_DB\r
-_Z17db_thread_cleanupv\r
-\r
-; sql.c:\r
\r
+; sql.o\r
 _Z10_db_unlockPKciP4B_DB\r
 _Z11db_strerrorP4B_DB\r
+_Z11list_dashesP4B_DBPFvPvPKcES1_\r
+_Z11list_resultP3JCRP4B_DBPFvPvPKcES3_11e_list_type\r
 _Z16db_int64_handlerPviPPc\r
 _Z18db_end_transactionP3JCRP4B_DB\r
+_Z18get_sql_record_maxP3JCRP4B_DB\r
+_Z19split_path_and_fileP3JCRP4B_DBPKc\r
+_Z20check_tables_versionP3JCRP4B_DB\r
 _Z20db_start_transactionP3JCRP4B_DB\r
+_Z7QueryDBPKciP3JCRP4B_DBPc\r
+_Z8DeleteDBPKciP3JCRP4B_DBPc\r
+_Z8InsertDBPKciP3JCRP4B_DBPc\r
+_Z8UpdateDBPKciP3JCRP4B_DBPc\r
 _Z8_db_lockPKciP4B_DB\r
-\r
-; bdb_create.c:\r
-; sql_create.c:\r
\r
+; sql_create.o\r
+_Z12my_batch_endP3JCRP4B_DBPKc\r
+_Z14my_batch_startP3JCRP4B_DB\r
+_Z15my_batch_insertP3JCRP4B_DBP8ATTR_DBR\r
 _Z20db_create_job_recordP3JCRP4B_DBP7JOB_DBR\r
 _Z21db_create_pool_recordP3JCRP4B_DBP8POOL_DBR\r
 _Z22db_create_media_recordP3JCRP4B_DBP9MEDIA_DBR\r
 _Z23db_create_client_recordP3JCRP4B_DBP10CLIENT_DBR\r
+_Z23db_create_device_recordP3JCRP4B_DBP10DEVICE_DBR\r
 _Z24db_create_counter_recordP3JCRP4B_DBP11COUNTER_DBR\r
 _Z24db_create_fileset_recordP3JCRP4B_DBP11FILESET_DBR\r
 _Z24db_create_storage_recordP3JCRP4B_DBP11STORAGE_DBR\r
 _Z25db_create_jobmedia_recordP3JCRP4B_DBP12JOBMEDIA_DBR\r
 _Z26db_create_mediatype_recordP3JCRP4B_DBP13MEDIATYPE_DBR\r
-_Z32db_create_file_attributes_recordP3JCRP4B_DBP8ATTR_DBR\r
 _Z27db_write_batch_file_recordsP3JCR\r
-\r
-; bdb_delete.c:\r
-; sql_delete.c:\r
+_Z32db_create_file_attributes_recordP3JCRP4B_DBP8ATTR_DBR\r
\r
+; sql_delete.o\r
 _Z21db_delete_pool_recordP3JCRP4B_DBP8POOL_DBR\r
+_Z21db_purge_media_recordP3JCRP4B_DBP9MEDIA_DBR\r
 _Z22db_delete_media_recordP3JCRP4B_DBP9MEDIA_DBR\r
-\r
-; bdb_find.c:\r
-; sql_find.c:\r
\r
+; sql_find.o\r
 _Z18db_find_last_jobidP3JCRP4B_DBPKcP7JOB_DBR\r
 _Z19db_find_next_volumeP3JCRP4B_DBibP9MEDIA_DBR\r
 _Z22db_find_job_start_timeP3JCRP4B_DBP7JOB_DBRPPc\r
 _Z24db_find_failed_job_sinceP3JCRP4B_DBP7JOB_DBRPcRi\r
-\r
-; bdb_get.c:\r
-; sql_get.c:\r
\r
+; sql_get.o\r
 _Z15db_get_pool_idsP3JCRP4B_DBPiPPj\r
 _Z16db_get_media_idsP3JCRP4B_DBP9MEDIA_DBRPiPPj\r
 _Z17db_get_client_idsP3JCRP4B_DBPiPPj\r
@@ -56,13 +54,15 @@ _Z17db_get_job_recordP3JCRP4B_DBP7JOB_DBR
 _Z18db_get_pool_recordP3JCRP4B_DBP8POOL_DBR\r
 _Z19db_get_media_recordP3JCRP4B_DBP9MEDIA_DBR\r
 _Z20db_get_client_recordP3JCRP4B_DBP10CLIENT_DBR\r
+_Z21db_get_counter_recordP3JCRP4B_DBP11COUNTER_DBR\r
 _Z21db_get_fileset_recordP3JCRP4B_DBP11FILESET_DBR\r
 _Z23db_get_job_volume_namesP3JCRP4B_DBjPPc\r
+_Z23db_get_num_pool_recordsP3JCRP4B_DB\r
+_Z24db_get_num_media_recordsP3JCRP4B_DB\r
 _Z28db_get_job_volume_parametersP3JCRP4B_DBjPP10VOL_PARAMS\r
 _Z29db_get_file_attributes_recordP3JCRP4B_DBPcP7JOB_DBRP8FILE_DBR\r
-\r
-; bdb_list.c:\r
-; sql_list.c:\r
\r
+; sql_list.o\r
 _Z17db_list_sql_queryP3JCRP4B_DBPKcPFvPvS4_ES5_i11e_list_type\r
 _Z18db_list_job_totalsP3JCRP4B_DBP7JOB_DBRPFvPvPKcES5_\r
 _Z19db_list_job_recordsP3JCRP4B_DBP7JOB_DBRPFvPvPKcES5_11e_list_type\r
@@ -71,9 +71,8 @@ _Z21db_list_files_for_jobP3JCRP4B_DBjPFvPvPKcES3_
 _Z21db_list_media_recordsP3JCRP4B_DBP9MEDIA_DBRPFvPvPKcES5_11e_list_type\r
 _Z22db_list_client_recordsP3JCRP4B_DBPFvPvPKcES3_11e_list_type\r
 _Z24db_list_jobmedia_recordsP3JCRP4B_DBjPFvPvPKcES3_11e_list_type\r
-\r
-; bdb_update.c:\r
-; sql_update.c:\r
\r
+; sql_update.o\r
 _Z19db_mark_file_recordP3JCRP4B_DBjj\r
 _Z21db_update_pool_recordP3JCRP4B_DBP8POOL_DBR\r
 _Z22db_update_media_recordP3JCRP4B_DBP9MEDIA_DBR\r
@@ -85,7 +84,15 @@ _Z24db_update_media_defaultsP3JCRP4B_DBP9MEDIA_DBR
 _Z24db_update_storage_recordP3JCRP4B_DBP11STORAGE_DBR\r
 _Z26db_update_job_start_recordP3JCRP4B_DBP7JOB_DBR\r
 _Z28db_add_digest_to_file_recordP3JCRP4B_DBjPci\r
-\r
\r
+_Z11db_get_typev\r
+_Z12db_sql_queryP4B_DBPKcPFiPviPPcES3_\r
+_Z13db_next_indexP3JCRP4B_DBPcS3_\r
+_Z16db_escape_stringPcS_i\r
+_Z16db_init_databaseP3JCRPKcS2_S2_S2_iS2_i\r
+_Z16db_open_databaseP3JCRP4B_DB\r
+_Z17db_close_databaseP3JCRP4B_DB\r
+_Z17db_thread_cleanupv\r
 client_backups DATA\r
 list_pool DATA\r
 drop_deltabs DATA\r
@@ -105,7 +112,6 @@ del_JobMedia DATA
 cnt_JobMedia DATA\r
 sel_JobMedia DATA\r
 upd_Purged DATA\r
-\r
 uar_list_jobs DATA\r
 uar_file DATA\r
 uar_count_files DATA\r
index e2b154f7b851b1bc8741accd39ba3efae5771826..9beb9bc80b12abb74a0daf4b39d0a8d99d6073d1 100644 (file)
 LIBRARY bacula.dll
 EXPORTS
-
-;
-; compat
-;
-; compat.c:
+; compat.o
 _Z10open_bpipePciPKc
 _Z11close_bpipeP5BPIPE
+_Z11close_wpipeP5BPIPE
+_Z11strncasecmpPKcS0_i
 _Z11win32_cgetsPci
+_Z11win32_chdirPKc
 _Z11win32_fputsPKcP6_iobuf
+_Z11win32_mkdirPKc
+_Z12UTF8_2_wcharPPcPKc
 _Z12gettimeofdayP7timevalP8timezone
 _Z12init_signalsPFviE
 _Z12wchar_2_UTF8PcPKwi
+_Z12win32_getcwdPci
 _Z12win32_unlinkPKc
 _Z15init_stack_dumpv
+_Z15win32_ftruncateix
+_Z16wchar_win32_pathPKcPw
 _Z17SetVSSPathConvertPFiPKcPciEPFiPKwPwiE
+_Z18CreateChildProcessPKcPvS1_S1_
+_Z18GetApplicationNamePKcPPcPS0_
+_Z18cvt_ftime_to_utimeRK9_FILETIME
+_Z18cvt_utime_to_ftimeRKlR9_FILETIME
+_Z18unix_name_to_win32PPcS_
+_Z21Win32ConvCleanupCachev
+_Z21make_wchar_win32_pathPcPi
+_Z23conv_unix_to_win32_pathPKcPcm
+_Z28make_win32_path_UTF8_2_wcharPPcPKcPi
+_Z4forkv
 _Z4killii
+_Z4pipePi
 _Z4statPKcP4stat
+_Z5chmodPKct
+_Z5chownPKcjj
+_Z5fcntlii
 _Z5fcntliil
 _Z5fstatiP4stat
 _Z5lstatPKcP4stat
 _Z5sleepi
+_Z6execvpPKcPPc
+_Z6lchownPKcjj
 _Z6randomv
+_Z7geteuidv
 _Z7opendirPKc
+_Z7openlogPKcii
 _Z7srandomj
+_Z7waitpidiPii
+_Z8WSA_Initv
 _Z8closedirPv
+_Z8closelogv
+_Z8getArgv0PKc
+_Z8getgrgidj
+_Z8getpwuidj
 _Z8pathconfPKci
-_Z8WSA_Initv
+_Z8readlinkPKcPci
+_Z9ErrorExitPKc
+_Z9inet_atonPKcP7in_addr
+_Z9nanosleepPK8timespecPS_
 _Z9readdir_rPvP6direntPS1_
-_Z15win32_ftruncateix
-
-; print.c:
-
-; winapi.c:
+_ZN6winverC1Ev
+_ZN6winverC2Ev
+syslog
+umask
+utime
+; print.o
+_Z10__snprintfPcjPKcz
+_Z10__vsprintfPcPKcS_
+_Z11__vsnprintfPcjPKcS_
+_Z4doprPcjPKcS_PFvS_PjjiE
+_Z9__sprintfPcPKcz
+; winapi.o
 _Z17InitWinAPIWrapperv
-
-;
-; findlib
-;
-; attribs.c:
+; attribs.o
 _Z11decode_statPcP4statPi
 _Z11encode_statPcP6FF_PKTi
 _Z13decode_LinkFIPcP4stat
 _Z14set_attributesP3JCRP4ATTRP5BFILE
 _Z16encode_attribsExP3JCRPcP6FF_PKT
 _Z18select_data_streamP6FF_PKT
-
-; bfile.c:
+_Z4plugIjEvRT_y
+_Z4plugIlEvRT_y
+_Z4plugImEvRT_y
+_Z4plugIsEvRT_y
+_Z4plugItEvRT_y
+_Z4plugIyEvRT_y
+_Z9win_errorP3JCRPcS1_
+_Z9win_errorP3JCRPcm
+; bfile.o
+_Z11bget_handleP5BFILE
+_Z11int32_LE2BEPii
+_Z11int64_LE2BEPxx
 _Z14have_win32_apiv
 _Z15is_win32_streami
 _Z15stream_to_asciii
+_Z16set_win32_backupP5BFILE
 _Z18is_portable_backupP5BFILE
 _Z19set_portable_backupP5BFILE
 _Z26processWin32BackupAPIBlockP5BFILEPvl
@@ -62,201 +112,284 @@ _Z6blseekP5BFILExi
 _Z6bwriteP5BFILEPvj
 _Z8is_bopenP5BFILE
 _Z8set_progP5BFILEPcP3JCR
-
-; create_file.c:
+; create_file.o
 _Z11create_fileP3JCRP4ATTRP5BFILEi
-
-; drivetype.c:
+; drivetype.o
 _Z9drivetypePKcPci
-
-; enable_priv.c:
+; enable_priv.o
 _Z24enable_backup_privilegesP3JCRi
-
-; find.c:
+; find.o
 _Z10find_filesP3JCRP6FF_PKTPFiS2_PvbES3_
 _Z15init_find_filesv
 _Z15term_find_filesP6FF_PKT
 _Z16set_find_optionsP6FF_PKTil
 _Z22get_win32_drivelettersP6FF_PKTPc
-
-; find_one.c:
+; find_one.o
 _Z13find_one_fileP3JCRP6FF_PKTPFiS2_PvbES3_Pcjb
+_Z13term_find_oneP6FF_PKT
 _Z16has_file_changedP3JCRP6FF_PKT
-
-
-; fstype.c:
+; fstype.o
 _Z6fstypePKcPci
-
-; makepath.c:
-
-; match.c:
+; match.o
 _Z11match_filesP3JCRP6FF_PKTPFiS2_PvbES3_
 _Z16file_is_excludedP6FF_PKTPKc
 _Z16file_is_includedP6FF_PKTPKc
+_Z22get_next_included_fileP6FF_PKTP15s_included_file
 _Z25add_fname_to_exclude_listP6FF_PKTPKc
 _Z25add_fname_to_include_listP6FF_PKTiPKc
 _Z26term_include_exclude_filesP6FF_PKT
-
-; save-cwd.c:
-
-;
-; lib
-;
-; address_conf.c:
+; address_conf.o
 _Z14free_addressesP5dlist
 _Z15store_addressesP13s_lex_contextP8RES_ITEMii
 _Z17get_first_addressP5dlistPci
+_Z17sockaddr_get_portPK8sockaddr
 _Z17sockaddr_to_asciiPK8sockaddrPci
+_Z19build_addresses_strP5dlistPci
 _Z20store_addresses_portP13s_lex_contextP8RES_ITEMii
 _Z22init_default_addressesPP5dlisti
 _Z23store_addresses_addressP13s_lex_contextP8RES_ITEMii
+_Z24get_first_port_net_orderP5dlist
 _Z25get_first_port_host_orderP5dlist
 _Z27sockaddr_get_port_net_orderPK8sockaddr
 _ZN6IPADDR11get_addressEPci
+_ZN6IPADDR12get_sockaddrEv
+_ZN6IPADDR12set_addr_anyEv
+_ZN6IPADDR12set_port_netEt
+_ZN6IPADDR16get_sockaddr_lenEv
+_ZN6IPADDR17build_address_strEPci
+_ZN6IPADDR8set_typeENS_6i_typeE
+_ZN6IPADDR9copy_addrEPS_
+_ZN6IPADDR9set_addr4EP7in_addr
+_ZN6IPADDRC1ERKS_
+_ZN6IPADDRC1Ei
+_ZN6IPADDRC2ERKS_
+_ZN6IPADDRC2Ei
+_ZNK6IPADDR10get_familyEv
 _ZNK6IPADDR18get_port_net_orderEv
-
-; alist.c:
+_ZNK6IPADDR8get_typeEv
+; alist.o
 _ZN5alist3getEi
+_ZN5alist4lastEv
 _ZN5alist4nextEv
+_ZN5alist4prevEv
 _ZN5alist5firstEv
 _ZN5alist6appendEPv
 _ZN5alist6removeEi
 _ZN5alist7destroyEv
 _ZN5alist7prependEPv
-
-; alloc.c:
-
-; attr.c:
+_ZN5alist9grow_listEv
+; attr.o
 _Z15print_ls_outputP3JCRP4ATTR
 _Z24build_attr_output_fnamesP3JCRP4ATTR
 _Z24unpack_attributes_recordP3JCRiPcP4ATTR
 _Z8new_attrv
 _Z9free_attrP4ATTR
-
-; base64.c:
+; base64.o
+_Z11base64_initv
+_Z11from_base64PxPc
 _Z13bin_to_base64PciS_ii
-
-; berrno.c:
+_Z9to_base64xPc
+; berrno.o
 _ZN6berrno20format_win32_messageEv
 _ZN6berrno9bstrerrorEv
-
-; bget_msg.c:
+; bget_msg.o
 _Z8bget_msgP5BSOCK
-
-; bnet.c:
+; bnet.o
 _Z10bnet_closeP5BSOCK
 _Z10bnet_fsendP5BSOCKPKcz
 _Z10init_bsockP3JCRiPKcS2_iP8sockaddr
 _Z10term_bsockP5BSOCK
+_Z11read_nbytesP5BSOCKPci
 _Z12bnet_connectP3JCRixxPKcPcS3_ii
 _Z12is_bnet_stopP5BSOCK
+_Z12write_nbytesP5BSOCKPci
 _Z13bnet_get_peerP5BSOCKPci
 _Z13bnet_strerrorP5BSOCK
 _Z13is_bnet_errorP5BSOCK
 _Z14bnet_wait_dataP5BSOCKi
 _Z15bnet_tls_clientP11TLS_ContextP5BSOCKP5alist
 _Z15bnet_tls_serverP11TLS_ContextP5BSOCKP5alist
+_Z17bnet_host2ipaddrsPKciPS0_
+_Z17bnet_set_blockingP5BSOCK
 _Z17bnet_sig_to_asciiP5BSOCK
 _Z19bnet_wait_data_intrP5BSOCKi
 _Z20bnet_set_buffer_sizeP5BSOCKji
-; _Z21bnet_despool_to_bsockP5BSOCKPFvlEl
+_Z20bnet_set_nonblockingP5BSOCK
+_Z21bnet_restore_blockingP5BSOCKi
 _Z28bnet_suppress_error_messagesP5BSOCKb
 _Z8bnet_sigP5BSOCKi
 _Z9bnet_recvP5BSOCK
 _Z9bnet_sendP5BSOCK
 _Z9dup_bsockP5BSOCK
-
-; bnet_server.c:
+; bnet_server.o
 _Z18bnet_thread_serverP5dlistiP9workq_tagPFPvS3_E
 _Z23bnet_stop_thread_serverP10pthread_t_
-
-; bpipe.c:
+; bpipe.o
 _Z11run_programPciS_
 _Z23run_program_full_outputPciS_
-
-; breg.c:
-_Z12get_bregexpsPKc
-_Z19bregexp_build_wherePciS_S_S_
+; breg.o
+_Z11new_bregexpPKc
 _Z12free_bregexpP7BREGEXP
+_Z12get_bregexpsPKc
 _Z13free_bregexpsP5alist
-_Z11new_bregexpPKc
 _Z14apply_bregexpsPKcP5alistPPc
+_Z19bregexp_build_wherePciS_S_S_
 _Z21bregexp_escape_stringPcS_c
 _Z28bregexp_get_build_where_sizePcS_S_
-
-; bregex.c:
+_ZN7BREGEXP10edit_substEPKcP12b_regmatch_t
+_ZN7BREGEXP12return_fnameEPKci
+_ZN7BREGEXP14extract_regexpEPKc
+_ZN7BREGEXP16compute_dest_lenEPKcP12b_regmatch_t
+_ZN7BREGEXP5debugEv
+_ZN7BREGEXP7replaceEPKc
+; bregex.o
+_Z24re_registers_to_regmatchP12re_registersP12b_regmatch_tj
+b_re_compile_fastmap
+b_re_compile_initialize
+b_re_compile_pattern
+b_re_match
+b_re_search
+b_re_set_syntax
 b_regcomp
 b_regerror
 b_regexec
 b_regfree
-
-; bsnprintf.c:
+; bsnprintf.o
 _Z10bvsnprintfPciPKcS_
 _Z9bsnprintfPciPKcz
-
-; bsock.c
+; bsock.o
+_Z9new_bsockv
+_ZN5BSOCK10free_bsockEv
+_ZN5BSOCK12set_blockingEv
+_ZN5BSOCK14wait_data_intrEi
+_ZN5BSOCK15set_buffer_sizeEji
+_ZN5BSOCK15set_nonblockingEv
+_ZN5BSOCK16restore_blockingEi
+_ZN5BSOCK4initEv
 _ZN5BSOCK4recvEv
 _ZN5BSOCK4sendEv
+_ZN5BSOCK5_openEP3JCRPKcPcS4_ixPi
 _ZN5BSOCK5closeEv
 _ZN5BSOCK5fsendEPKcz
 _ZN5BSOCK6signalEi
-_ZN5BSOCK7destroyEv
+_ZN5BSOCK7connectEP3JCRixxPKcPcS4_ii
 _ZN5BSOCK7despoolEPFvlEl
-
-; bsys.c:
+_ZN5BSOCK7destroyEv
+_ZN5BSOCK8fin_initEP3JCRiPKcS3_iP8sockaddr
+_ZN5BSOCK8get_peerEPci
+_ZN5BSOCK9bstrerrorEv
+_ZN5BSOCK9wait_dataEi
+; bsys.o
+_Z10b_strerroriPcj
 _Z11bmicrosleepll
 _Z15create_pid_filePcPKci
 _Z15delete_pid_filePcPKci
 _Z15escape_filenamePKc
 _Z15read_state_filePcPKci
 _Z16write_state_filePcPKci
+_Z20make_unique_filenamePPciS_
 _Z2_pPP16pthread_mutex_t_
 _Z2_vPP16pthread_mutex_t_
 _Z4dropPcS_
 _Z5bfreePv
 _Z6bfgetsPciP6_iobuf
+_Z7bcallocjj
 _Z7bstrcmpPKcS0_
 _Z7cstrlenPKc
 _Z8b_mallocPKcij
 _Z8breallocPvj
 _Z8bstrncatPcPKci
+_Z8bstrncatPcR8POOL_MEMi
 _Z8bstrncpyPcPKci
 _Z8bstrncpyPcR8POOL_MEMi
-
-; btime.c:
+; btime.o
 _Z10bstrftimesPcix
+_Z11date_decodedPjPhS0_
+_Z11date_encodejhh
+_Z11time_decodedPhS_S_Pf
+_Z11time_encodehhhf
 _Z12bstrftime_ncPcix
+_Z12bstrftime_nyPcix
 _Z12str_to_utimePc
 _Z13btime_to_unixx
 _Z14btime_to_utimex
+_Z16date_time_decodeP9date_timePjPhS2_S2_S2_S2_Pf
+_Z16date_time_encodeP9date_timejhhhhhf
 _Z16get_current_timeP9date_time
+_Z17date_time_compareP9date_timeS0_
 _Z17get_current_btimev
+_Z6tm_womii
 _Z6tm_woyl
 _Z9bstrftimePcix
 _Z9bstrutimePcix
 _Z9tm_decodeP9date_timeP2tm
-
-; btimers.c:
+_Z9tm_encodeP9date_timeP2tm
+; btimers.o
 _Z16stop_bsock_timerP10s_btimer_t
+_Z16stop_child_timerP10s_btimer_t
 _Z17start_bsock_timerP5BSOCKj
+_Z17start_child_timerij
 _Z17stop_thread_timerP10s_btimer_t
 _Z18start_thread_timerP10pthread_t_j
-
-; cram-md5.c:
+; cram-md5.o
 _Z16cram_md5_respondP5BSOCKPcPiS2_
 _Z18cram_md5_challengeP5BSOCKPcii
-
-; crc32.c:
+; crc32.o
 _Z6bcrc32Phi
-
-; crypto.c:
+; crypto.o
 _Z11init_cryptov
+_Z13CryptoData_itv
+_Z13SignerInfo_itv
+_Z14CryptoData_newv
+_Z14SignerInfo_newv
 _Z14cleanup_cryptov
+_Z14d2i_CryptoDataPP10CryptoDataPPKhl
+_Z14d2i_SignerInfoPP10SignerInfoPPKhl
+_Z14i2d_CryptoDataP10CryptoDataPPh
+_Z14i2d_SignerInfoP10SignerInfoPPh
+_Z15CryptoData_freeP10CryptoData
+_Z15SignerInfo_freeP10SignerInfo
 _Z15crypto_sign_newP3JCR
 _Z15crypto_strerror14crypto_error_t
+_Z16RecipientInfo_itv
+_Z16SignatureData_itv
 _Z16crypto_sign_freeP9Signature
+_Z17RecipientInfo_newv
+_Z17SignatureData_newv
 _Z17crypto_cipher_newP14Crypto_SessionbPj
 _Z17crypto_digest_newP3JCR15crypto_digest_t
+_Z17d2i_RecipientInfoPP13RecipientInfoPPKhl
+_Z17d2i_SignatureDataPP13SignatureDataPPKhl
+_Z17i2d_RecipientInfoP13RecipientInfoPPh
+_Z17i2d_SignatureDataP13SignatureDataPPh
+_Z18RecipientInfo_freeP13RecipientInfo
+_Z18SignatureData_freeP13SignatureData
 _Z18crypto_cipher_freeP14Cipher_Context
 _Z18crypto_digest_freeP6Digest
 _Z18crypto_digest_nameP6Digest
@@ -280,13 +413,15 @@ _Z22crypto_sign_get_digestP9SignatureP12X509_KeypairPP6Digest
 _Z23crypto_keypair_load_keyP12X509_KeypairPKcPFiPciPKvES5_
 _Z24crypto_keypair_load_certP12X509_KeypairPKc
 _Z25crypto_digest_stream_typei
-
-; daemon.c:
+_Z27crypto_default_pem_callbackPciPKv
+; daemon.o
 _Z12daemon_startv
-
-; dlist.c:
+; dlist.o
 _Z15new_dlistStringPKc
 _Z15new_dlistStringPKci
+_ZN5dlist12insert_afterEPvS0_
 _ZN5dlist13binary_insertEPvPFiS0_S0_E
 _ZN5dlist13binary_searchEPvPFiS0_S0_E
 _ZN5dlist13insert_beforeEPvS0_
@@ -297,8 +432,8 @@ _ZN5dlist6appendEPv
 _ZN5dlist6removeEPv
 _ZN5dlist7destroyEv
 _ZN5dlist7prependEPv
-
-; edit.c:
+; edit.o
 _Z10add_commasPcS_
 _Z10edit_int64xPc
 _Z10edit_utimexPci
@@ -312,21 +447,17 @@ _Z14size_to_uint64PciPy
 _Z17duration_to_utimePcPx
 _Z23edit_uint64_with_commasyPc
 _Z23edit_uint64_with_suffixyPc
-
-; enh_fnmatch.c:
-
-; fnmatch.c:
+; fnmatch.o
 fnmatch
-
-; hmac.c:
-
-; htable.c:
-
-; idcache.c:
+; idcache.o
+_Z18free_getuser_cachev
+_Z19free_getgroup_cachev
 _Z7getuserjPci
 _Z8getgroupjPci
-
-; jcr.c:
+; jcr.o
 _Z10b_free_jcrPKciP3JCR
 _Z11unlock_jobsv
 _Z12jcr_walk_endP3JCR
@@ -337,29 +468,37 @@ _Z14jcr_walk_startv
 _Z18get_jcr_by_sessionjj
 _Z18init_jcr_subsystemv
 _Z18set_jcr_job_statusP3JCRi
+_Z19init_last_jobs_listv
 _Z19lock_last_jobs_listv
+_Z19read_last_jobs_listiy
 _Z19term_last_jobs_listv
 _Z20get_jcr_by_full_namePc
+_Z20write_last_jobs_listiy
 _Z21unlock_last_jobs_listv
 _Z23get_jcr_by_partial_namePc
 _Z7new_jcriPFvP3JCRE
 _Z9lock_jobsv
-
-; lex.c:
+timeout_handler
+; lex.o
 _Z11scan_to_eolP13s_lex_context
+_Z12lex_get_charP13s_lex_context
 _Z13lex_get_tokenP13s_lex_contexti
 _Z13lex_open_fileP13s_lex_contextPKcPFvS2_iS0_S2_zE
 _Z14lex_close_fileP13s_lex_context
 _Z14lex_tok_to_stri
+_Z14lex_unget_charP13s_lex_context
+_Z20scan_to_next_not_eolP13s_lex_context
 _Z29lex_set_default_error_handlerP13s_lex_context
 _Z32lex_set_error_handler_error_typeP13s_lex_contexti
-
-; md5.c:
+; md5.o
+_Z12MD5TransformPjS_
 _Z7MD5InitP10MD5Context
 _Z8MD5FinalPhP10MD5Context
 _Z9MD5UpdateP10MD5ContextPhj
-
-; mem_pool.c:
+; mem_pool.o
 _Z13sm_get_memoryPKcii
 _Z17close_memory_poolv
 _Z18sm_get_pool_memoryPKcii
@@ -368,22 +507,31 @@ _Z21sm_sizeof_pool_memoryPKciPc
 _Z22sm_realloc_pool_memoryPKciPci
 _Z23print_memory_pool_statsv
 _Z25sm_check_pool_memory_sizePKciPci
+_Z27garbage_collect_memory_poolv
 _Z9pm_strcatPPcPKc
 _Z9pm_strcatR8POOL_MEMPKc
 _Z9pm_strcatRPcPKc
+_Z9pm_strcatRPcR8POOL_MEM
 _Z9pm_strcpyPPcPKc
 _Z9pm_strcpyR8POOL_MEMPKc
 _Z9pm_strcpyRPcPKc
 _Z9pm_strcpyRPcR8POOL_MEM
-
-; message.c:
+_ZN8POOL_MEM10realloc_pmEi
+_ZN8POOL_MEM6strcatEPKc
+_ZN8POOL_MEM6strcpyEPKc
+_ZN8POOL_MEM8max_sizeEv
+; message.o
 _Z10my_name_isiPPcPKc
+_Z11get_db_typev
+_Z11set_db_typePKc
 _Z12add_msg_destP4MSGSiiPcS1_
 _Z12rem_msg_destP4MSGSiiPc
 _Z13free_msgs_resP4MSGS
 _Z16dequeue_messagesP3JCR
 _Z16dispatch_messageP3JCRilPc
 _Z16init_console_msgPKc
+_Z25register_message_callbackPFviPcE
 _Z4JmsgP3JCRilPKcz
 _Z4MmsgPPcPKcz
 _Z4MmsgR8POOL_MEMPKcz
@@ -396,34 +544,36 @@ _Z5m_msgPKciPPcS0_z
 _Z5m_msgPKciRPcS0_z
 _Z5p_msgPKciiS0_z
 _Z5q_msgPKciP3JCRilS0_z
+_Z5t_msgPKciiS0_z
 _Z8init_msgP3JCRP4MSGS
 _Z8term_msgv
 _Z9close_msgP3JCR
 _Z9get_tracev
 _Z9set_tracei
-_Z11set_db_typePKc
-
-; openssl.c:
-
-; pythonlib.c:
+; pythonlib.o
 _Z21generate_daemon_eventP3JCRPKc
 _Z23init_python_interpreterPKcS0_S0_
 _Z23term_python_interpreterv
-
-; queue.c:
+; queue.o
 _Z5qnextP7b_queueS0_
 _Z7qdchainP7b_queue
 _Z7qinsertP7b_queueS0_
-
-; rblist.c:
+_Z7qremoveP7b_queue
+; rblist.o
+_ZN6rblist11left_rotateEPv
+_ZN6rblist12right_rotateEPv
+_ZN6rblist3anyEPv
 _ZN6rblist4nextEPv
 _ZN6rblist5firstEv
 _ZN6rblist6insertEPvPFiS0_S0_E
 _ZN6rblist6removeEPv
 _ZN6rblist6searchEPvPFiS0_S0_E
 _ZN6rblist7destroyEv
-
-; runscript.c:
+; runscript.o
 _Z11run_scriptsP3JCRP5alistPKc
 _Z13new_runscriptv
 _Z14copy_runscriptP9RUNSCRIPT
@@ -434,64 +584,89 @@ _ZN9RUNSCRIPT11set_commandEPKc
 _ZN9RUNSCRIPT13reset_defaultEb
 _ZN9RUNSCRIPT3runEP3JCRPKc
 _ZN9RUNSCRIPT5debugEv
-
-; rwlock.c:
+_ZN9RUNSCRIPT8is_localEv
+; rwlock.o
 _Z11rwl_destroyP12s_rwlock_tag
+_Z12rwl_readlockP12s_rwlock_tag
 _Z13rwl_writelockP12s_rwlock_tag
+_Z14rwl_readunlockP12s_rwlock_tag
+_Z15rwl_readtrylockP12s_rwlock_tag
 _Z15rwl_writeunlockP12s_rwlock_tag
+_Z16rwl_writetrylockP12s_rwlock_tag
 _Z8rwl_initP12s_rwlock_tag
-
-; scan.c:
+; scan.o
 _Z10parse_argsPcPS_PiS0_S0_i
-_Z15parse_args_onlyPcPS_PiS0_S0_i
 _Z11skip_spacesPPc
 _Z14skip_nonspacesPPc
+_Z15parse_args_onlyPcPS_PiS0_S0_i
 _Z19strip_leading_spacePc
 _Z19strip_trailing_junkPc
 _Z22strip_trailing_newlinePc
+_Z22strip_trailing_slashesPc
+_Z23split_path_and_filenamePKcPPcPiS2_S3_
 _Z7bsscanfPKcS0_z
 _Z7fstrschPKcS0_
-
-; semlock.c:
-
-; serial.c:
+_Z8next_argPPc
+; serial.o
 _Z12serial_btimePPhx
+_Z12serial_int16PPhs
 _Z12serial_int32PPhi
+_Z12serial_int64PPhx
 _Z13serial_stringPPhPKc
+_Z13serial_uint16PPht
 _Z13serial_uint32PPhj
 _Z13serial_uint64PPhy
 _Z14serial_float64PPhd
 _Z14unserial_btimePPh
+_Z14unserial_int16PPh
 _Z14unserial_int32PPh
 _Z15unserial_stringPPhPc
+_Z15unserial_uint16PPh
 _Z15unserial_uint32PPh
 _Z15unserial_uint64PPh
 _Z16unserial_float64PPh
-
-; sha1.c:
-
-; signal.c:
-
-; smartall.c:
+; smartall.o
 _Z10sm_reallocPKciPvj
+_Z12actuallyfreePv
+_Z12sm_check_rtnPKcib
+_Z12sm_new_ownerPKciPc
+_Z14actuallycallocjj
+_Z14actuallymallocj
+_Z15actuallyreallocPvj
 _Z7sm_dumpb
 _Z7sm_freePKciPv
 _Z8sm_checkPKcib
 _Z9sm_callocPKcijj
 _Z9sm_mallocPKcij
-
-; tls.c:
+_Z9sm_staticb
+; tls.o
 _Z15new_tls_contextPKcS0_S0_S0_PFiPciPKvES3_S0_b
+_Z15tls_bsock_readnP5BSOCKPci
 _Z16free_tls_contextP11TLS_Context
-
-; tree.c:
+_Z16tls_bsock_acceptP5BSOCK
+_Z16tls_bsock_writenP5BSOCKPci
+_Z17tls_bsock_connectP5BSOCK
+_Z18new_tls_connectionP11TLS_Contexti
+_Z18tls_bsock_shutdownP5BSOCK
+_Z19free_tls_connectionP14TLS_Connection
+_Z25tls_postconnect_verify_cnP14TLS_ConnectionP5alist
+_Z27tls_postconnect_verify_hostP14TLS_ConnectionPKc
+; tree.o
+_Z11tree_relcwdPcP11s_tree_rootP11s_tree_node
 _Z12tree_getpathP11s_tree_nodePci
+_Z14make_tree_pathPcP11s_tree_root
 _Z16insert_tree_nodePcS_iP11s_tree_rootP11s_tree_node
 _Z8new_treei
 _Z8tree_cwdPcP11s_tree_rootP11s_tree_node
 _Z9free_treeP11s_tree_root
-
-; util.c:
+; util.o
 _Z11bash_spacesPc
 _Z11bash_spacesR8POOL_MEM
 _Z11encode_modetPc
@@ -506,21 +681,25 @@ _Z16make_session_keyPcS_i
 _Z17job_status_to_stri
 _Z18do_shell_expansionPci
 _Z18jobstatus_to_asciiiPci
+_Z19last_path_separatorPKc
 _Z21set_working_directoryPc
 _Z5lcasePc
-
-; var.c:
+; var.o
 _Z10var_configP6var_st12var_config_tz
 _Z10var_createPP6var_st
 _Z10var_expandP6var_stPKciPPcPii
+_Z10var_formatP6var_stPPciPKcz
 _Z11var_destroyP6var_st
+_Z11var_formatvP6var_stPPciPKcS1_
 _Z12var_strerrorP6var_st8var_rc_t
 _Z12var_unescapeP6var_stPKciPcii
-
-; watchdog.c:
+; watchdog.o
 _Z12new_watchdogv
 _Z13stop_watchdogv
 _Z14start_watchdogv
 _Z17register_watchdogP12s_watchdog_t
-
-; workq.c:
+_Z19unregister_watchdogP12s_watchdog_t
+watchdog_thread
diff --git a/bacula/src/win32/dll/make_def b/bacula/src/win32/dll/make_def
new file mode 100755 (executable)
index 0000000..d8a4412
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+#  Make the stupid bacula.def file so that we don't have to do it
+#    manually
+#
+echo "LIBRARY bacula.dll"
+echo "EXPORTS"
+echo " "
+
+OBJS="compat.o print.o winapi.o attribs.o bfile.o create_file.o \
+      drivetype.o enable_priv.o find.o find_one.o fstype.o match.o \
+      address_conf.o alist.o attr.o base64.o berrno.o bget_msg.o \
+      bnet.o bnet_server.o bpipe.o breg.o bregex.o bsnprintf.o \
+      bsock.o bsys.o btime.o btimers.o cram-md5.o crc32.o crypto.o \
+      daemon.o dlist.o edit.o fnmatch.o idcache.o jcr.o lex.o md5.o \
+      mem_pool.o message.o pythonlib.o queue.o rblist.o runscript.o \
+      rwlock.o scan.o serial.o smartall.o tls.o tree.o util.o var.o \
+      watchdog.o"
+
+
+for i in ${OBJS}; do \
+   echo "; $i"; \
+   nm $i | grep "^[0-9a-f]* T _" | cut -c21-; \
+   echo " "; \
+done
index ec7bb20f7c2ee3ca91ffc026402af28707158484..eeb0865b1954121202a18545a46be32bfacb0a39 100644 (file)
@@ -2,6 +2,13 @@
 
 General:
 24May07
+kes  Add code to tell the OS that we no longer need a cached
+     file that we were reading. In findlib/bfile.c.  Also,
+     only cache files that we are reading.
+kes  Tweak to bsmtp to eliminate compiler warnings on Win32.
+kes  Implement script to automatically generate cats and dll .def
+     files for Win32 dll.
+kes  Update README.mingw32 to include new .def file generation.
 kes  Correct typo in UTF-8 error message as reported by:
      jhernandez <julianhernandez@gmail.com>
 kes  Add additional sm_check() code on debug level 1.