From: Kern Sibbald Date: Thu, 24 May 2007 19:58:07 +0000 (+0000) Subject: kes Add code to tell the OS that we no longer need a cached X-Git-Tag: Release-2.2.0~396 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4df486dd5b04cc16178efcb75eaf3dbd4be44b31;p=bacula%2Fbacula 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. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4898 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/autoconf/config.h.in b/bacula/autoconf/config.h.in index e860477e18..5806d22ea1 100644 --- a/bacula/autoconf/config.h.in +++ b/bacula/autoconf/config.h.in @@ -296,6 +296,9 @@ /* 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 header file. */ #undef HAVE_CURSES_H @@ -340,6 +343,9 @@ /* Define to 1 if you have the 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 @@ -817,9 +823,9 @@ /* 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 do not work properly. */ diff --git a/bacula/autoconf/configure.in b/bacula/autoconf/configure.in index 700d464468..700a9f8922 100644 --- a/bacula/autoconf/configure.in +++ b/bacula/autoconf/configure.in @@ -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) diff --git a/bacula/configure b/bacula/configure index 02c42ea61d..00383b154f 100755 --- a/bacula/configure +++ b/bacula/configure @@ -30317,6 +30317,116 @@ fi 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 declares $ac_func. + For example, HP-UX 11i 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 to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#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 diff --git a/bacula/kernstodo b/bacula/kernstodo index 9fef4e1e0f..4488411d17 100644 --- a/bacula/kernstodo +++ b/bacula/kernstodo @@ -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? diff --git a/bacula/src/findlib/bfile.c b/bacula/src/findlib/bfile.c index 48464c0807..9e32afecb5 100644 --- a/bacula/src/findlib/bfile.c +++ b/bacula/src/findlib/bfile.c @@ -49,6 +49,11 @@ ssize_t (*python_write)(BFILE *bfd, void *buf, size_t count) = NULL; #include #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); diff --git a/bacula/src/findlib/bfile.h b/bacula/src/findlib/bfile.h index 03cdd13ab0..5c856b52d0 100644 --- a/bacula/src/findlib/bfile.h +++ b/bacula/src/findlib/bfile.h @@ -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. @@ -32,6 +25,13 @@ (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 */ diff --git a/bacula/src/stored/spool.c b/bacula/src/stored/spool.c index ee26ee7a86..bf8687945e 100644 --- a/bacula/src/stored/spool.c +++ b/bacula/src/stored/spool.c @@ -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) diff --git a/bacula/src/tools/bsmtp.c b/bacula/src/tools/bsmtp.c index d0b6066e68..0747cc9fd7 100644 --- a/bacula/src/tools/bsmtp.c +++ b/bacula/src/tools/bsmtp.c @@ -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 diff --git a/bacula/src/win32/README.mingw32 b/bacula/src/win32/README.mingw32 index 7fc095e39b..8ad7d12a27 100644 --- a/bacula/src/win32/README.mingw32 +++ b/bacula/src/win32/README.mingw32 @@ -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 with the base part of the name of the source code file which contains the new function. Replace 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 diff --git a/bacula/src/win32/cats/bacula_cats.def b/bacula/src/win32/cats/bacula_cats.def index 140a409541..e8773351d5 100644 --- a/bacula/src/win32/cats/bacula_cats.def +++ b/bacula/src/win32/cats/bacula_cats.def @@ -1,54 +1,52 @@ LIBRARY bacula_cats.dll EXPORTS - -; bdb.c: -; mysql.c: -; postgresql.c: -; sqlite.c: -_Z11db_get_typev -_Z12db_sql_queryP4B_DBPKcPFiPviPPcES3_ -_Z16db_escape_stringPcS_i -_Z16db_init_databaseP3JCRPKcS2_S2_S2_iS2_i -_Z16db_open_databaseP3JCRP4B_DB -_Z17db_close_databaseP3JCRP4B_DB -_Z17db_thread_cleanupv - -; sql.c: + +; sql.o _Z10_db_unlockPKciP4B_DB _Z11db_strerrorP4B_DB +_Z11list_dashesP4B_DBPFvPvPKcES1_ +_Z11list_resultP3JCRP4B_DBPFvPvPKcES3_11e_list_type _Z16db_int64_handlerPviPPc _Z18db_end_transactionP3JCRP4B_DB +_Z18get_sql_record_maxP3JCRP4B_DB +_Z19split_path_and_fileP3JCRP4B_DBPKc +_Z20check_tables_versionP3JCRP4B_DB _Z20db_start_transactionP3JCRP4B_DB +_Z7QueryDBPKciP3JCRP4B_DBPc +_Z8DeleteDBPKciP3JCRP4B_DBPc +_Z8InsertDBPKciP3JCRP4B_DBPc +_Z8UpdateDBPKciP3JCRP4B_DBPc _Z8_db_lockPKciP4B_DB - -; bdb_create.c: -; sql_create.c: + +; sql_create.o +_Z12my_batch_endP3JCRP4B_DBPKc +_Z14my_batch_startP3JCRP4B_DB +_Z15my_batch_insertP3JCRP4B_DBP8ATTR_DBR _Z20db_create_job_recordP3JCRP4B_DBP7JOB_DBR _Z21db_create_pool_recordP3JCRP4B_DBP8POOL_DBR _Z22db_create_media_recordP3JCRP4B_DBP9MEDIA_DBR _Z23db_create_client_recordP3JCRP4B_DBP10CLIENT_DBR +_Z23db_create_device_recordP3JCRP4B_DBP10DEVICE_DBR _Z24db_create_counter_recordP3JCRP4B_DBP11COUNTER_DBR _Z24db_create_fileset_recordP3JCRP4B_DBP11FILESET_DBR _Z24db_create_storage_recordP3JCRP4B_DBP11STORAGE_DBR _Z25db_create_jobmedia_recordP3JCRP4B_DBP12JOBMEDIA_DBR _Z26db_create_mediatype_recordP3JCRP4B_DBP13MEDIATYPE_DBR -_Z32db_create_file_attributes_recordP3JCRP4B_DBP8ATTR_DBR _Z27db_write_batch_file_recordsP3JCR - -; bdb_delete.c: -; sql_delete.c: +_Z32db_create_file_attributes_recordP3JCRP4B_DBP8ATTR_DBR + +; sql_delete.o _Z21db_delete_pool_recordP3JCRP4B_DBP8POOL_DBR +_Z21db_purge_media_recordP3JCRP4B_DBP9MEDIA_DBR _Z22db_delete_media_recordP3JCRP4B_DBP9MEDIA_DBR - -; bdb_find.c: -; sql_find.c: + +; sql_find.o _Z18db_find_last_jobidP3JCRP4B_DBPKcP7JOB_DBR _Z19db_find_next_volumeP3JCRP4B_DBibP9MEDIA_DBR _Z22db_find_job_start_timeP3JCRP4B_DBP7JOB_DBRPPc _Z24db_find_failed_job_sinceP3JCRP4B_DBP7JOB_DBRPcRi - -; bdb_get.c: -; sql_get.c: + +; sql_get.o _Z15db_get_pool_idsP3JCRP4B_DBPiPPj _Z16db_get_media_idsP3JCRP4B_DBP9MEDIA_DBRPiPPj _Z17db_get_client_idsP3JCRP4B_DBPiPPj @@ -56,13 +54,15 @@ _Z17db_get_job_recordP3JCRP4B_DBP7JOB_DBR _Z18db_get_pool_recordP3JCRP4B_DBP8POOL_DBR _Z19db_get_media_recordP3JCRP4B_DBP9MEDIA_DBR _Z20db_get_client_recordP3JCRP4B_DBP10CLIENT_DBR +_Z21db_get_counter_recordP3JCRP4B_DBP11COUNTER_DBR _Z21db_get_fileset_recordP3JCRP4B_DBP11FILESET_DBR _Z23db_get_job_volume_namesP3JCRP4B_DBjPPc +_Z23db_get_num_pool_recordsP3JCRP4B_DB +_Z24db_get_num_media_recordsP3JCRP4B_DB _Z28db_get_job_volume_parametersP3JCRP4B_DBjPP10VOL_PARAMS _Z29db_get_file_attributes_recordP3JCRP4B_DBPcP7JOB_DBRP8FILE_DBR - -; bdb_list.c: -; sql_list.c: + +; sql_list.o _Z17db_list_sql_queryP3JCRP4B_DBPKcPFvPvS4_ES5_i11e_list_type _Z18db_list_job_totalsP3JCRP4B_DBP7JOB_DBRPFvPvPKcES5_ _Z19db_list_job_recordsP3JCRP4B_DBP7JOB_DBRPFvPvPKcES5_11e_list_type @@ -71,9 +71,8 @@ _Z21db_list_files_for_jobP3JCRP4B_DBjPFvPvPKcES3_ _Z21db_list_media_recordsP3JCRP4B_DBP9MEDIA_DBRPFvPvPKcES5_11e_list_type _Z22db_list_client_recordsP3JCRP4B_DBPFvPvPKcES3_11e_list_type _Z24db_list_jobmedia_recordsP3JCRP4B_DBjPFvPvPKcES3_11e_list_type - -; bdb_update.c: -; sql_update.c: + +; sql_update.o _Z19db_mark_file_recordP3JCRP4B_DBjj _Z21db_update_pool_recordP3JCRP4B_DBP8POOL_DBR _Z22db_update_media_recordP3JCRP4B_DBP9MEDIA_DBR @@ -85,7 +84,15 @@ _Z24db_update_media_defaultsP3JCRP4B_DBP9MEDIA_DBR _Z24db_update_storage_recordP3JCRP4B_DBP11STORAGE_DBR _Z26db_update_job_start_recordP3JCRP4B_DBP7JOB_DBR _Z28db_add_digest_to_file_recordP3JCRP4B_DBjPci - + +_Z11db_get_typev +_Z12db_sql_queryP4B_DBPKcPFiPviPPcES3_ +_Z13db_next_indexP3JCRP4B_DBPcS3_ +_Z16db_escape_stringPcS_i +_Z16db_init_databaseP3JCRPKcS2_S2_S2_iS2_i +_Z16db_open_databaseP3JCRP4B_DB +_Z17db_close_databaseP3JCRP4B_DB +_Z17db_thread_cleanupv client_backups DATA list_pool DATA drop_deltabs DATA @@ -105,7 +112,6 @@ del_JobMedia DATA cnt_JobMedia DATA sel_JobMedia DATA upd_Purged DATA - uar_list_jobs DATA uar_file DATA uar_count_files DATA diff --git a/bacula/src/win32/dll/bacula.def b/bacula/src/win32/dll/bacula.def index e2b154f7b8..9beb9bc80b 100644 --- a/bacula/src/win32/dll/bacula.def +++ b/bacula/src/win32/dll/bacula.def @@ -1,55 +1,105 @@ 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 index 0000000000..d8a441213b --- /dev/null +++ b/bacula/src/win32/dll/make_def @@ -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 diff --git a/bacula/technotes-2.1 b/bacula/technotes-2.1 index ec7bb20f7c..eeb0865b19 100644 --- a/bacula/technotes-2.1 +++ b/bacula/technotes-2.1 @@ -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 kes Add additional sm_check() code on debug level 1.