fi
fi
SQL_INCLUDE=-I$MYSQL_INCDIR
- if test -f "$MYSQL_LIBDIR/libmysqlclient_r.a"; then
+ if test -f $MYSQL_LIBDIR/libmysqlclient_r.a; then
SQL_LFLAGS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz"
cat >>confdefs.h <<\_ACEOF
#define HAVE_THREAD_SAFE_MYSQL 1
$(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../cats -L../findlib -o $@ $(SVROBJS) \
-lsql -lfind -lbac -lm $(PYTHON_LIBS) $(DLIB) $(DB_LIBS) $(LIBS) \
$(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
-
+
static-bacula-dir: $(SVROBJS) ../lib/libbac.a ../cats/libsql.a ../findlib/libfind.a
$(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../cats -L../findlib -o $@ $(SVROBJS) \
"HAVE_LINUX_OS\n" \
"HAVE_NETBSD_OS\n" \
"HAVE_OPENBSD_OS\n" \
- "HAVE_SUN_OS\n"
-#define bool int
+ "HAVE_SUN_OS\n" \
+ "HAVE_WIN32\n"
#define false 0
#define true 1
#define bstrncpy strncpy
}
/* Tru64 */
+#elif defined (HAVE_WIN32)
+/* Windows */
+
+bool fstype(const char *fname, char *fs, int fslen)
+{
+ DWORD componentlength;
+ DWORD fsflags;
+ CHAR rootpath[4];
+ UINT oldmode;
+ BOOL result;
+
+ /* Copy Drive Letter, colon, and backslash to rootpath */
+ bstrncpy(rootpath, fname, sizeof(rootpath));
+
+ /* We don't want any popups if there isn't any media in the drive */
+ oldmode = SetErrorMode(SEM_FAILCRITICALERRORS);
+
+ result = GetVolumeInformation(rootpath, NULL, 0, NULL, &componentlength, &fsflags, fs, fslen);
+
+ SetErrorMode(oldmode);
+
+ if (result) {
+ /* Windows returns NTFS, FAT, etc. Make it lowercase to be consistent with other OSes */
+ lcase(fs);
+ } else {
+ Dmsg2(10, "GetVolumeInformation() failed for \"%s\", Error = %d.\n", rootpath, GetLastError());
+ }
+
+ return result != 0;
+}
+/* Windows */
+
#else /* No recognised OS */
bool fstype(const char *fname, char *fs, int fslen)
init_last_jobs_list();
}
-#if defined(HAVE_WIN32)
+#if !defined(HAVE_WIN32)
/*
* Make sure we have fd's 0, 1, 2 open
* If we don't do this one of our sockets may open
if (msg == NULL) {
daemon_msgs = (MSGS *)malloc(sizeof(MSGS));
memset(daemon_msgs, 0, sizeof(MSGS));
-#if defined(HAVE_WIN32)
+#if !defined(HAVE_WIN32)
for (i=1; i<=M_MAX; i++) {
add_msg_dest(daemon_msgs, MD_STDOUT, i, NULL, NULL);
}
}
}
-/* kludge below disabled for MinGW, due to link problems ... */
-#if HAVE_WIN32 && !HAVE_CONSOLE && !HAVE_WXCONSOLE && !HAVE_MINGW
-extern long _timezone;
-extern int _daylight;
-extern long _dstbias;
-extern "C" void __tzset(void);
-extern "C" int _isindst(struct tm *);
-#endif
-
char *encode_time(time_t time, char *buf)
{
struct tm tm;
int n = 0;
-#if HAVE_WIN32 && !HAVE_CONSOLE && !HAVE_WXCONSOLE && !HAVE_MINGW
- /*
- * Gross kludge to avoid a seg fault in Microsoft's CRT localtime_r(),
- * which incorrectly references a NULL returned from gmtime() if
- * the time (adjusted for the current timezone) is invalid.
- * This could happen if you have a bad date/time, or perhaps if you
- * moved a file from one timezone to another?
- */
- struct tm *gtm;
- time_t gtime;
- __tzset();
- gtime = time - _timezone;
- if (!(gtm = gmtime(>ime))) {
- return buf;
- }
- if (_daylight && _isindst(gtm)) {
- gtime -= _dstbias;
- if (!gmtime(>ime)) {
- return buf;
- }
- }
+#if defined(HAVE_WIN32)
+ /*
+ * Avoid a seg fault in Microsoft's CRT localtime_r(),
+ * which incorrectly references a NULL returned from gmtime() if
+ * time is negative before or after the timezone adjustment.
+ */
+ struct tm *gtm;
+
+ if ((gtm = gmtime(&time)) == NULL) {
+ return buf;
+ }
+
+ if (gtm->tm_year == 1970 && gtm->tm_mon == 1 && gtm->tm_mday < 3) {
+ return buf;
+ }
#endif
+
if (localtime_r(&time, &tm)) {
n = sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
(void)getcwd(s + strlen(s), 256);
sprintf(s + strlen(s), "%lu", (unsigned long)clock());
sprintf(s + strlen(s), "%lu", (unsigned long)time(NULL));
-#ifdef Solaris
+#if defined(Solaris)
sysinfo(SI_HW_SERIAL,s + strlen(s), 12);
#endif
-#ifdef HAVE_GETHOSTID
+#if defined(HAVE_GETHOSTID)
sprintf(s + strlen(s), "%lu", (unsigned long) gethostid());
#endif
gethostname(s + strlen(s), 256);
#ifdef WIN32_VSS
-#include <bacula.h>
+#include "bacula.h"
#undef setlocale
//
-// WinUPS header file
-
// Application specific messages
// Message used for system tray notifications
if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
!cram_md5_challenge(dir, password, tls_local_need, compatible)) {
goto bail_out;
- }
+ }
/* Verify that the remote host is willing to meet our TLS requirements */
if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {