From: Kern Sibbald Date: Thu, 11 Jan 2007 20:04:13 +0000 (+0000) Subject: kes Add dynamic dll entry point for SHGetFolderPath to Win32 code. X-Git-Tag: Release-2.0.1~12 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6872bd694d98711846adaae124f19dfc88d8f2e0;p=bacula%2Fbacula kes Add dynamic dll entry point for SHGetFolderPath to Win32 code. This *should* fix bug #747. kes Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix bug #742. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3972 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/configure b/bacula/configure index e1e4c83aee..3527148ab3 100755 --- a/bacula/configure +++ b/bacula/configure @@ -1439,6 +1439,8 @@ Optional Features: --enable-client-only build client (File daemon) only disabled --enable-build-dird enable building of dird (Director) enabled --enable-build-stored enable building of stored (Storage daemon) enabled + --disable-conio disable conio support enabled + --enable-ipv6 enable ipv6 support enabled --disable-readline disable readline support disable @@ -14899,6 +14901,20 @@ else fi +# --------------------------------------------------- +# Check for conio (Bacula readline substitute)( +# --------------------------------------------------- +# this allows you to turn it completely off +# Check whether --enable-conio was given. +if test "${enable_conio+set}" = set; then + enableval=$enable_conio; if test x$enableval = xno; then + support_conio=no + fi + +fi + + + # --------------------------------------------------- # Check for IPv6 support # --------------------------------------------------- diff --git a/bacula/kernstodo b/bacula/kernstodo index ece693d379..db38cc0395 100644 --- a/bacula/kernstodo +++ b/bacula/kernstodo @@ -41,6 +41,7 @@ Document: Priority: +- Add the OS version back to the Win32 client info. - Look at the possibility of adding "SET NAMES UTF8" for MySQL, and possibly changing the blobs into varchar. - Check if gnome-console works with TLS. @@ -69,6 +70,9 @@ Projects: - Despool attributes in separate thread - Database speedups - Embedded MySQL + - Check why restore repeatedly sends Rechdrs between + each data chunk -- according to James Harper 9Jan07. + - Building the in memory restore tree is slow. - Features - Better scheduling - Full at least once a month, ... diff --git a/bacula/src/dird/dird_conf.h b/bacula/src/dird/dird_conf.h index ac4cfa109e..020a086ffe 100644 --- a/bacula/src/dird/dird_conf.h +++ b/bacula/src/dird/dird_conf.h @@ -318,7 +318,8 @@ public: POOLMEM *store_source; /* Methods */ - USTORE() { store = NULL; store_source = get_pool_memory(PM_MESSAGE); } + USTORE() { store = NULL; store_source = get_pool_memory(PM_MESSAGE); + *store_source = 0; }; ~USTORE() { destroy(); } void set_source(const char *where); void destroy(); diff --git a/bacula/src/dird/job.c b/bacula/src/dird/job.c index e715d0edce..ebcd832ba6 100644 --- a/bacula/src/dird/job.c +++ b/bacula/src/dird/job.c @@ -399,10 +399,8 @@ bool cancel_job(UAContext *ua, JCR *jcr) USTORE store; if (jcr->rstorage) { store.store = jcr->rstore; - pm_strcpy(store.store_source, jcr->rstore_source); } else { store.store = jcr->wstore; - pm_strcpy(store.store_source, jcr->wstore_source); } set_wstorage(ua->jcr, &store); } diff --git a/bacula/src/filed/job.c b/bacula/src/filed/job.c index dbec9bd976..51f8afcedc 100644 --- a/bacula/src/filed/job.c +++ b/bacula/src/filed/job.c @@ -676,6 +676,7 @@ static void add_fileset(JCR *jcr, const char *item) /* Skip all lines we receive after an error */ if (state == state_error) { + Dmsg0(100, "State=error return\n"); return; } @@ -687,6 +688,7 @@ static void add_fileset(JCR *jcr, const char *item) */ if (subcode != ' ') { state = state_error; + Dmsg0(100, "Set state=error\n"); } switch (code) { case 'I': @@ -942,10 +944,6 @@ static void set_options(findFOPTS *fo, const char *opts) break; case 'S': switch(*(p + 1)) { - case ' ': - /* Old director did not specify SHA variant */ - fo->flags |= FO_SHA1; - break; case '1': fo->flags |= FO_SHA1; p++; @@ -961,10 +959,14 @@ static void set_options(findFOPTS *fo, const char *opts) break; #endif default: - /* Automatically downgrade to SHA-1 if an unsupported - * SHA variant is specified */ + /* + * If 2 or 3 is seen here, SHA2 is not configured, so + * eat the option, and drop back to SHA-1. + */ + if (p[1] == '2' || p[1] == '3') { + p++; + } fo->flags |= FO_SHA1; - p++; break; } break; @@ -999,7 +1001,6 @@ static void set_options(findFOPTS *fo, const char *opts) case 'Z': /* gzip compression */ fo->flags |= FO_GZIP; fo->GZIP_level = *++p - '0'; - Dmsg1(200, "Compression level=%d\n", fo->GZIP_level); break; case 'K': fo->flags |= FO_NOATIME; diff --git a/bacula/src/findlib/match.c b/bacula/src/findlib/match.c index 90b9041aea..e08c863fdf 100644 --- a/bacula/src/findlib/match.c +++ b/bacula/src/findlib/match.c @@ -245,7 +245,8 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, const char *fname) { } next->next = inc; } - Dmsg1(50, "add_fname_to_include fname=%s\n", inc->fname); + Dmsg3(00, "add_fname_to_include prefix=%d gzip=%d fname=%s\n", + prefixed, !!(inc->options & FO_GZIP), inc->fname); } /* diff --git a/bacula/src/lib/parse_conf.c b/bacula/src/lib/parse_conf.c index ecce0a4cfd..1e432a640e 100755 --- a/bacula/src/lib/parse_conf.c +++ b/bacula/src/lib/parse_conf.c @@ -932,8 +932,13 @@ const char *get_default_configdir() HRESULT hr; static char szConfigDir[MAX_PATH + 1] = { 0 }; + if (!p_SHGetFolderPath) { + bstrncpy(szConfigDir, DEFAULT_CONFIGDIR, sizeof(szConfigDir)); + return szConfigDir; + } + if (szConfigDir[0] == '\0') { - hr = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szConfigDir); + hr = p_SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szConfigDir); if (SUCCEEDED(hr)) { bstrncat(szConfigDir, "\\Bacula", sizeof(szConfigDir)); diff --git a/bacula/src/stored/status.c b/bacula/src/stored/status.c index e4fb7d6487..aaf4dcb18d 100644 --- a/bacula/src/stored/status.c +++ b/bacula/src/stored/status.c @@ -389,6 +389,9 @@ static void list_running_jobs(void sendit(const char *msg, int len, void *sarg), dcr->dev?dcr->dev->print_name(): dcr->device->device_name); sendit(msg, len, arg); + len= Mmsg(msg, _(" spooling=%d despooling=%d despool_wait=%d\n"), + dcr->spooling, dcr->despooling, dcr->despool_wait); + sendit(msg, len, arg); } sec = time(NULL) - jcr->run_time; if (sec <= 0) { diff --git a/bacula/src/version.h b/bacula/src/version.h index 9962614c1d..e48a731188 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -3,9 +3,9 @@ */ #undef VERSION -#define VERSION "2.1.0" -#define BDATE "05 January 2007" -#define LSMDATE "05Jan07" +#define VERSION "2.1.1" +#define BDATE "11 January 2007" +#define LSMDATE "11Jan07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ @@ -47,7 +47,7 @@ #define TRACE_FILE 1 /* If this is set stdout will not be closed on startup */ -/* #define DEVELOPER 1 */ +#define DEVELOPER 1 #define DATA_ENCRYPTION 1 diff --git a/bacula/src/win32/compat/winapi.c b/bacula/src/win32/compat/winapi.c index 0de12dc822..55ea083788 100644 --- a/bacula/src/win32/compat/winapi.c +++ b/bacula/src/win32/compat/winapi.c @@ -85,6 +85,8 @@ t_GetCurrentDirectoryW p_GetCurrentDirectoryW = NULL; t_GetVolumePathNameW p_GetVolumePathNameW = NULL; t_GetVolumeNameForVolumeMountPointW p_GetVolumeNameForVolumeMountPointW = NULL; +t_SHGetFolderPath p_SHGetFolderPath = NULL; + void InitWinAPIWrapper() { @@ -203,5 +205,21 @@ InitWinAPIWrapper() } } + /* First try in SHFOLDER for older systems */ + hLib = LoadLibraryA("SHFOLDER.DLL"); + if (hLib) { + p_SHGetFolderPath = (t_SHGetFolderPath) + GetProcAddress(hLib, "SHGetFolderPath"); + FreeLibrary(hLib); + } + + /* Now try Shell32.dll for newer systems */ + hLib = LoadLibraryA("SHELL32.DLL"); + if (hLib) { + p_SHGetFolderPath = (t_SHGetFolderPath) + GetProcAddress(hLib, "SHGetFolderPath"); + FreeLibrary(hLib); + } + atexit(Win32ConvCleanupCache); } diff --git a/bacula/src/win32/installer/winbacula.nsi b/bacula/src/win32/installer/winbacula.nsi index aaa57fe045..861e95884e 100644 --- a/bacula/src/win32/installer/winbacula.nsi +++ b/bacula/src/win32/installer/winbacula.nsi @@ -442,7 +442,7 @@ Section "-Initialize" ${StrRep} $R2 "$INSTDIR\bin" "\" "\\\\" FileWrite $R1 's;@bin_dir@;$R2;$\r$\n' ${StrRep} $R2 "$INSTDIR\bin" "\" "\\" - FileWrite $R1 's;@bin_dir_cmd@;$R2;$\r$\n' + FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n' ${StrRep} $R2 "$INSTDIR" "\" "/" FileWrite $R1 "s;@BUILD_DIR@;$R2;$\r$\n" diff --git a/bacula/src/win32/winapi.h b/bacula/src/win32/winapi.h index 3af4fa46a0..94497023a8 100644 --- a/bacula/src/win32/winapi.h +++ b/bacula/src/win32/winapi.h @@ -75,7 +75,6 @@ extern DWORD DLL_IMP_EXP g_platform_id; extern DWORD DLL_IMP_EXP g_MinorVersion; /* In ADVAPI32.DLL */ - typedef BOOL (WINAPI * t_OpenProcessToken)(HANDLE, DWORD, PHANDLE); typedef BOOL (WINAPI * t_AdjustTokenPrivileges)(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); @@ -177,6 +176,11 @@ extern t_GetVolumeNameForVolumeMountPointW DLL_IMP_EXP p_GetVolumeNameForVolumeM extern t_AttachConsole DLL_IMP_EXP p_AttachConsole; void InitWinAPIWrapper(); + +/* In SHFolder.dll on older systems, and now Shell32.dll */ +typedef BOOL (WINAPI * t_SHGetFolderPath)(HWND, int, HANDLE, DWORD, LPTSTR); +extern t_SHGetFolderPath DLL_IMP_EXP p_SHGetFolderPath; + #endif #endif /* __WINAPI_H */ diff --git a/bacula/technotes-2.1 b/bacula/technotes-2.1 index bafefbe137..6ac62eda69 100644 --- a/bacula/technotes-2.1 +++ b/bacula/technotes-2.1 @@ -1,4 +1,21 @@ - Technical notes on version 2.1 + Technical notes on version 2.0 General: +Version 2.0.1 +11Jan06 +kes Add dynamic dll entry point for SHGetFolderPath to Win32 code. + This *should* fix bug #747. +kes Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix + bug #742. +09Jan06 +kes Modify USTORE constructor to set an empty store_source string, + and don't copy the store_source string in a cancel. Hopefully + this will fix Arno's seg fault, bug #744. +kes Add back code to disable conio in configure. Fixes bug #743. +kes Correct the Options scanner in the FD to correctly handle + SHA1 option, which was eating the next option. Reported by + Sebastien Guilbaud. +kes Add code to indicate when the SD is spooling, spool wait, and + despooling as requested by Alan Brown. + Version 2.0.0 released: 4 January 2007