#include "winservice.h"
#include <signal.h>
#include <pthread.h>
-#include "../../findlib/winapi.h"
+#include "../../lib/winapi.h"
extern int BaculaMain(int argc, char *argv[]);
extern void terminate_filed(int sig);
#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
-#include "compat.h"
+#include "../lib/winapi.h"
+
/* Forward referenced subroutines */
static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *ofd);
#endif
/*=============================================================*/
-/* */
-/* *** A l l S y s t e m s *** */
-/* */
+/* */
+/* *** A l l S y s t e m s *** */
+/* */
/*=============================================================*/
/*
#ifdef HAVE_LIBZ
if (ff_pkt->flags & FO_GZIP) {
if (stream == STREAM_WIN32_DATA) {
- stream = STREAM_WIN32_GZIP_DATA;
+ stream = STREAM_WIN32_GZIP_DATA;
} else if (stream == STREAM_FILE_DATA) {
- stream = STREAM_GZIP_DATA;
+ stream = STREAM_GZIP_DATA;
} else {
- stream = STREAM_SPARSE_GZIP_DATA;
+ stream = STREAM_SPARSE_GZIP_DATA;
}
}
#endif
struct stat *statp = &ff_pkt->statp;
/*
* Encode a stat packet. I should have done this more intelligently
- * with a length so that it could be easily expanded.
+ * with a length so that it could be easily expanded.
*/
p += to_base64((int64_t)statp->st_dev, p);
*p++ = ' '; /* separate fields with a space */
/* Do casting according to unknown type to keep compiler happy */
#if !HAVE_GCC & HAVE_SUN_OS
-#define plug(st, val) st = val /* brain damaged compiler */
+#define plug(st, val) st = val /* brain damaged compiler */
#else
template <class T> void plug(T &st, uint64_t val)
{ st = static_cast<T>(val); }
char *p = buf;
int64_t val;
- skip_nonspaces(&p); /* st_dev */
- p++; /* skip space */
- skip_nonspaces(&p); /* st_ino */
+ skip_nonspaces(&p); /* st_dev */
+ p++; /* skip space */
+ skip_nonspaces(&p); /* st_ino */
p++;
p += from_base64(&val, p);
- plug(statp->st_mode, val); /* st_mode */
+ plug(statp->st_mode, val); /* st_mode */
p++;
- skip_nonspaces(&p); /* st_nlink */
+ skip_nonspaces(&p); /* st_nlink */
p++;
- skip_nonspaces(&p); /* st_uid */
+ skip_nonspaces(&p); /* st_uid */
p++;
- skip_nonspaces(&p); /* st_gid */
+ skip_nonspaces(&p); /* st_gid */
p++;
- skip_nonspaces(&p); /* st_rdev */
+ skip_nonspaces(&p); /* st_rdev */
p++;
- skip_nonspaces(&p); /* st_size */
+ skip_nonspaces(&p); /* st_size */
p++;
- skip_nonspaces(&p); /* st_blksize */
+ skip_nonspaces(&p); /* st_blksize */
p++;
- skip_nonspaces(&p); /* st_blocks */
+ skip_nonspaces(&p); /* st_blocks */
p++;
- skip_nonspaces(&p); /* st_atime */
+ skip_nonspaces(&p); /* st_atime */
p++;
- skip_nonspaces(&p); /* st_mtime */
+ skip_nonspaces(&p); /* st_mtime */
p++;
- skip_nonspaces(&p); /* st_ctime */
+ skip_nonspaces(&p); /* st_ctime */
/* Optional FileIndex of hard linked file data */
if (*p == ' ' || (*p != 0 && *(p+1) == ' ')) {
* ofile is the output filename (may be in a different directory)
*
* Returns: true on success
- * false on failure
+ * false on failure
*/
bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
{
if (attr->stream == STREAM_UNIX_ATTRIBUTES_EX &&
set_win32_attributes(jcr, attr, ofd)) {
if (is_bopen(ofd)) {
- bclose(ofd);
+ bclose(ofd);
}
pm_strcpy(attr->ofname, "*none*");
return true;
if (attr->data_stream == STREAM_WIN32_DATA ||
attr->data_stream == STREAM_WIN32_GZIP_DATA) {
if (is_bopen(ofd)) {
- bclose(ofd);
+ bclose(ofd);
}
pm_strcpy(attr->ofname, "*none*");
return true;
if (is_bopen(ofd)) {
char ec1[50], ec2[50];
fsize = blseek(ofd, 0, SEEK_CUR);
- bclose(ofd); /* first close file */
- if (fsize > 0 && fsize != attr->statp.st_size) {
+ bclose(ofd); /* first close file */
+ if (fsize > 0 && fsize != (off_t)attr->statp.st_size) {
Jmsg3(jcr, M_ERROR, 0, _("File size of restored file %s not correct. Original %s, restored %s.\n"),
- attr->ofname, edit_uint64(attr->statp.st_size, ec1),
- edit_uint64(fsize, ec2));
+ attr->ofname, edit_uint64(attr->statp.st_size, ec1),
+ edit_uint64(fsize, ec2));
}
}
/* ***FIXME**** optimize -- don't do if already correct */
/*
* For link, change owner of link using lchown, but don't
- * try to do a chmod as that will update the file behind it.
+ * try to do a chmod as that will update the file behind it.
*/
if (attr->type == FT_LNK) {
/* Change owner of link, not of real file */
if (lchown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0) {
- berrno be;
+ berrno be;
Jmsg2(jcr, M_ERROR, 0, _("Unable to set file owner %s: ERR=%s\n"),
- attr->ofname, be.strerror());
- ok = false;
+ attr->ofname, be.strerror());
+ ok = false;
}
} else {
if (chown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0) {
- berrno be;
+ berrno be;
Jmsg2(jcr, M_ERROR, 0, _("Unable to set file owner %s: ERR=%s\n"),
- attr->ofname, be.strerror());
- ok = false;
+ attr->ofname, be.strerror());
+ ok = false;
}
if (chmod(attr->ofname, attr->statp.st_mode) < 0) {
- berrno be;
+ berrno be;
Jmsg2(jcr, M_ERROR, 0, _("Unable to set file modes %s: ERR=%s\n"),
- attr->ofname, be.strerror());
- ok = false;
+ attr->ofname, be.strerror());
+ ok = false;
}
/*
* Reset file times.
*/
if (utime(attr->ofname, &ut) < 0) {
- berrno be;
+ berrno be;
Jmsg2(jcr, M_ERROR, 0, _("Unable to set file times %s: ERR=%s\n"),
- attr->ofname, be.strerror());
- ok = false;
+ attr->ofname, be.strerror());
+ ok = false;
}
#ifdef HAVE_CHFLAGS
/*
* fail.
*/
if (chflags(attr->ofname, attr->statp.st_flags) < 0) {
- berrno be;
+ berrno be;
Jmsg2(jcr, M_ERROR, 0, _("Unable to set file flags %s: ERR=%s\n"),
- attr->ofname, be.strerror());
- ok = false;
+ attr->ofname, be.strerror());
+ ok = false;
}
#endif
}
/*=============================================================*/
-/* */
-/* * * * U n i x * * * * */
-/* */
+/* */
+/* * * * U n i x * * * * */
+/* */
/*=============================================================*/
#if !defined(HAVE_CYGWIN) && !defined(HAVE_WIN32)
* here. They must be "self-contained" (i.e. you keep track
* of your own length), and they must be in ASCII string
* format. Using this feature is not recommended.
- * The code below shows how to return nothing. See the Win32
+ * The code below shows how to return nothing. See the Win32
* code below for returning something in the attributes.
*/
int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt)
}
*p = 0;
#else
- *attribsEx = 0; /* no extended attributes */
+ *attribsEx = 0; /* no extended attributes */
#endif
return STREAM_UNIX_ATTRIBUTES;
}
/*=============================================================*/
-/* */
-/* * * * W i n 3 2 * * * * */
-/* */
+/* */
+/* * * * W i n 3 2 * * * * */
+/* */
/*=============================================================*/
#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
WIN32_FILE_ATTRIBUTE_DATA atts;
ULARGE_INTEGER li;
- attribsEx[0] = 0; /* no extended attributes */
+ attribsEx[0] = 0; /* no extended attributes */
// try unicode version
- if (p_GetFileAttributesExW) {
+ if (p_GetFileAttributesExW) {
unix_name_to_win32(&ff_pkt->sys_fname, ff_pkt->fname);
WCHAR szBuf[MAX_PATH_UNICODE];
UTF8_2_wchar(szBuf, ff_pkt->sys_fname, MAX_PATH_UNICODE);
if (!p_GetFileAttributesExW(szBuf, GetFileExInfoStandard,
- (LPVOID)&atts)) {
+ (LPVOID)&atts)) {
win_error(jcr, "GetFileAttributesExW:", ff_pkt->sys_fname);
- return STREAM_UNIX_ATTRIBUTES;
+ return STREAM_UNIX_ATTRIBUTES;
}
}
else {
if (!p_GetFileAttributesExA)
- return STREAM_UNIX_ATTRIBUTES;
+ return STREAM_UNIX_ATTRIBUTES;
unix_name_to_win32(&ff_pkt->sys_fname, ff_pkt->fname);
if (!p_GetFileAttributesExA(ff_pkt->sys_fname, GetFileExInfoStandard,
- (LPVOID)&atts)) {
+ (LPVOID)&atts)) {
win_error(jcr, "GetFileAttributesExA:", ff_pkt->sys_fname);
- return STREAM_UNIX_ATTRIBUTES;
+ return STREAM_UNIX_ATTRIBUTES;
}
}
FILE_ATTRIBUTE_OFFLINE| \
FILE_ATTRIBUTE_READONLY| \
FILE_ATTRIBUTE_SYSTEM| \
- FILE_ATTRIBUTE_TEMPORARY)
+ FILE_ATTRIBUTE_TEMPORARY)
/*
* ofile is the output filename (may be in a different directory)
*
* Returns: true on success
- * false on failure
+ * false on failure
*/
static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
{
if (!(p_SetFileAttributesW || p_SetFileAttributesA))
return false;
- if (!p || !*p) { /* we should have attributes */
+ if (!p || !*p) { /* we should have attributes */
Dmsg2(100, "Attributes missing. of=%s ofd=%d\n", attr->ofname, ofd->fid);
if (is_bopen(ofd)) {
- bclose(ofd);
+ bclose(ofd);
}
return false;
} else {
p += from_base64(&val, p);
plug(atts.dwFileAttributes, val);
- p++; /* skip space */
+ p++; /* skip space */
p += from_base64(&val, p);
li.QuadPart = val;
atts.ftCreationTime.dwLowDateTime = li.LowPart;
atts.ftCreationTime.dwHighDateTime = li.HighPart;
- p++; /* skip space */
+ p++; /* skip space */
p += from_base64(&val, p);
li.QuadPart = val;
atts.ftLastAccessTime.dwLowDateTime = li.LowPart;
atts.ftLastAccessTime.dwHighDateTime = li.HighPart;
- p++; /* skip space */
+ p++; /* skip space */
p += from_base64(&val, p);
li.QuadPart = val;
atts.ftLastWriteTime.dwLowDateTime = li.LowPart;
if (!is_bopen(ofd)) {
Dmsg1(100, "File not open: %s\n", attr->ofname);
- bopen(ofd, attr->ofname, O_WRONLY|O_BINARY, 0); /* attempt to open the file */
+ bopen(ofd, attr->ofname, O_WRONLY|O_BINARY, 0); /* attempt to open the file */
}
if (is_bopen(ofd)) {
Dmsg1(100, "SetFileTime %s\n", attr->ofname);
if (!SetFileTime(bget_handle(ofd),
- &atts.ftCreationTime,
- &atts.ftLastAccessTime,
- &atts.ftLastWriteTime)) {
+ &atts.ftCreationTime,
+ &atts.ftLastAccessTime,
+ &atts.ftLastWriteTime)) {
win_error(jcr, "SetFileTime:", win32_ofile);
}
bclose(ofd);
if (!SetFileAttributesW(szBuf, atts.dwFileAttributes & SET_ATTRS)) {
win_error(jcr, "SetFileAttributesW:", win32_ofile);
- }
+ }
}
else {
if (!SetFileAttributes(win32_ofile, atts.dwFileAttributes & SET_ATTRS)) {
win_error(jcr, "SetFileAttributesA:", win32_ofile);
- }
+ }
}
}
free_pool_memory(win32_ofile);
DWORD lerror = GetLastError();
LPTSTR msg;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
- FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- lerror,
- 0,
- (LPTSTR)&msg,
- 0,
- NULL);
+ FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ lerror,
+ 0,
+ (LPTSTR)&msg,
+ 0,
+ NULL);
Dmsg3(100, "Error in %s on file %s: ERR=%s\n", prefix, win32_ofile, msg);
strip_trailing_junk(msg);
Jmsg(jcr, M_ERROR, 0, _("Error in %s file %s: ERR=%s\n"), prefix, win32_ofile, msg);
{
LPTSTR msg;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
- FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- lerror,
- 0,
- (LPTSTR)&msg,
- 0,
- NULL);
+ FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ lerror,
+ 0,
+ (LPTSTR)&msg,
+ 0,
+ NULL);
strip_trailing_junk(msg);
if (jcr) {
Jmsg2(jcr, M_ERROR, 0, _("Error in %s: ERR=%s\n"), prefix, msg);
cygwin_conv_to_win32_path(name, *win32_name);
}
-#endif /* HAVE_CYGWIN */
+#endif /* HAVE_CYGWIN */
#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
#include <windows.h>
-#include "winapi.h"
+#include "../lib/winapi.h"
enum {
BF_CLOSED,
--- /dev/null
+/*
+ * Windows APIs that are different for each system.
+ * We use pointers to the entry points so that a
+ * single binary will run on all Windows systems.
+ *
+ * Kern Sibbald MMIII
+ */
+/*
+ Copyright (C) 2000-2005 Kern Sibbald
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ */
+
+#include "bacula.h"
+
+#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
+
+#include "winapi.h"
+
+/* API Pointers */
+
+t_OpenProcessToken p_OpenProcessToken = NULL;
+t_AdjustTokenPrivileges p_AdjustTokenPrivileges = NULL;
+t_LookupPrivilegeValue p_LookupPrivilegeValue = NULL;
+
+t_SetProcessShutdownParameters p_SetProcessShutdownParameters = NULL;
+
+t_CreateFileA p_CreateFileA = NULL;
+t_CreateFileW p_CreateFileW = NULL;
+
+t_wunlink p_wunlink = NULL;
+t_wmkdir p_wmkdir = NULL;
+t_wopen p_wopen = NULL;
+t_GetFileAttributesA p_GetFileAttributesA = NULL;
+t_GetFileAttributesW p_GetFileAttributesW = NULL;
+
+t_GetFileAttributesExA p_GetFileAttributesExA = NULL;
+t_GetFileAttributesExW p_GetFileAttributesExW = NULL;
+
+t_SetFileAttributesA p_SetFileAttributesA = NULL;
+t_SetFileAttributesW p_SetFileAttributesW = NULL;
+t_BackupRead p_BackupRead = NULL;
+t_BackupWrite p_BackupWrite = NULL;
+t_WideCharToMultiByte p_WideCharToMultiByte = NULL;
+t_MultiByteToWideChar p_MultiByteToWideChar = NULL;
+
+t_FindFirstFileA p_FindFirstFileA = NULL;
+t_FindFirstFileW p_FindFirstFileW = NULL;
+
+t_FindNextFileA p_FindNextFileA = NULL;
+t_FindNextFileW p_FindNextFileW = NULL;
+
+t_SetCurrentDirectoryA p_SetCurrentDirectoryA = NULL;
+t_SetCurrentDirectoryW p_SetCurrentDirectoryW = NULL;
+
+t_GetCurrentDirectoryA p_GetCurrentDirectoryA = NULL;
+t_GetCurrentDirectoryW p_GetCurrentDirectoryW = NULL;
+#endif
--- /dev/null
+/*
+ * Windows APIs that are different for each system.
+ * We use pointers to the entry points so that a
+ * single binary will run on all Windows systems.
+ *
+ * Kern Sibbald MMIII
+ */
+/*
+ Copyright (C) 2000-2005 Kern Sibbald
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ */
+
+#ifndef __WINAPI_H
+#define __WINAPI_H
+
+#if defined(HAVE_WIN32)
+/*
+ * Commented out native.h include statement, which is not distributed with the
+ * free version of VC++, and which is not used in bacula.
+ *
+ * #if !defined(HAVE_MINGW) // native.h not present on mingw
+ * #include <native.h>
+ * #endif
+ */
+#include <windef.h>
+#endif
+
+#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
+
+// unicode enabling of win 32 needs some defines and functions
+#define MAX_PATH_UNICODE 32767
+#define MAX_PATH_UTF8 MAX_PATH*3
+
+int wchar_2_UTF8(char *pszUTF, const WCHAR *pszUCS, int cchChar = MAX_PATH_UTF8);
+int UTF8_2_wchar(WCHAR *pszUCS, const char *pszUTF, int cchWideChar = MAX_PATH);
+
+
+/* In ADVAPI32.DLL */
+
+typedef BOOL (WINAPI * t_OpenProcessToken)(HANDLE, DWORD, PHANDLE);
+typedef BOOL (WINAPI * t_AdjustTokenPrivileges)(HANDLE, BOOL,
+ PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD);
+typedef BOOL (WINAPI * t_LookupPrivilegeValue)(LPCTSTR, LPCTSTR, PLUID);
+
+extern t_OpenProcessToken p_OpenProcessToken;
+extern t_AdjustTokenPrivileges p_AdjustTokenPrivileges;
+extern t_LookupPrivilegeValue p_LookupPrivilegeValue;
+
+/* In MSVCRT.DLL */
+typedef int (__cdecl * t_wunlink) (const wchar_t *);
+typedef int (__cdecl * t_wmkdir) (const wchar_t *);
+typedef int (__cdecl * t_wopen) (const wchar_t *, int, ...);
+
+extern t_wunlink p_wunlink;
+extern t_wmkdir p_wmkdir;
+extern t_wopen p_wopen;
+/* In KERNEL32.DLL */
+typedef BOOL (WINAPI * t_GetFileAttributesExA)(LPCSTR, GET_FILEEX_INFO_LEVELS,
+ LPVOID);
+typedef BOOL (WINAPI * t_GetFileAttributesExW)(LPCWSTR, GET_FILEEX_INFO_LEVELS,
+ LPVOID);
+
+typedef DWORD (WINAPI * t_GetFileAttributesA)(LPCSTR);
+typedef DWORD (WINAPI * t_GetFileAttributesW)(LPCWSTR);
+typedef BOOL (WINAPI * t_SetFileAttributesA)(LPCSTR, DWORD);
+typedef BOOL (WINAPI * t_SetFileAttributesW)(LPCWSTR, DWORD);
+
+typedef HANDLE (WINAPI * t_CreateFileA) (LPCSTR, DWORD ,DWORD, LPSECURITY_ATTRIBUTES,
+ DWORD , DWORD, HANDLE);
+typedef HANDLE (WINAPI * t_CreateFileW) (LPCWSTR, DWORD ,DWORD, LPSECURITY_ATTRIBUTES,
+ DWORD , DWORD, HANDLE);
+
+typedef BOOL (WINAPI * t_SetProcessShutdownParameters)(DWORD, DWORD);
+typedef BOOL (WINAPI * t_BackupRead)(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
+typedef BOOL (WINAPI * t_BackupWrite)(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
+
+typedef int (WINAPI * t_WideCharToMultiByte) (UINT CodePage, DWORD , LPCWSTR, int,
+ LPSTR, int, LPCSTR, LPBOOL);
+
+typedef int (WINAPI * t_MultiByteToWideChar) (UINT, DWORD, LPCSTR, int, LPWSTR, int);
+typedef HANDLE (WINAPI * t_FindFirstFileA) (LPCSTR, LPWIN32_FIND_DATAA);
+typedef HANDLE (WINAPI * t_FindFirstFileW) (LPCWSTR, LPWIN32_FIND_DATAW);
+
+typedef BOOL (WINAPI * t_FindNextFileA) (HANDLE, LPWIN32_FIND_DATAA);
+typedef BOOL (WINAPI * t_FindNextFileW) (HANDLE, LPWIN32_FIND_DATAW);
+
+typedef BOOL (WINAPI * t_SetCurrentDirectoryA) (LPCSTR);
+typedef BOOL (WINAPI * t_SetCurrentDirectoryW) (LPCWSTR);
+
+typedef DWORD (WINAPI * t_GetCurrentDirectoryA) (DWORD, LPSTR);
+typedef DWORD (WINAPI * t_GetCurrentDirectoryW) (DWORD, LPWSTR);
+
+extern t_GetFileAttributesA p_GetFileAttributesA;
+extern t_GetFileAttributesW p_GetFileAttributesW;
+
+extern t_GetFileAttributesExA p_GetFileAttributesExA;
+extern t_GetFileAttributesExW p_GetFileAttributesExW;
+
+extern t_SetFileAttributesA p_SetFileAttributesA;
+extern t_SetFileAttributesW p_SetFileAttributesW;
+
+extern t_CreateFileA p_CreateFileA;
+extern t_CreateFileW p_CreateFileW;
+extern t_SetProcessShutdownParameters p_SetProcessShutdownParameters;
+extern t_BackupRead p_BackupRead;
+extern t_BackupWrite p_BackupWrite;
+
+extern t_WideCharToMultiByte p_WideCharToMultiByte;
+extern t_MultiByteToWideChar p_MultiByteToWideChar;
+
+extern t_FindFirstFileA p_FindFirstFileA;
+extern t_FindFirstFileW p_FindFirstFileW;
+
+extern t_FindNextFileA p_FindNextFileA;
+extern t_FindNextFileW p_FindNextFileW;
+
+extern t_SetCurrentDirectoryA p_SetCurrentDirectoryA;
+extern t_SetCurrentDirectoryW p_SetCurrentDirectoryW;
+
+extern t_GetCurrentDirectoryA p_GetCurrentDirectoryA;
+extern t_GetCurrentDirectoryW p_GetCurrentDirectoryW;
+#endif
+
+#endif /* __WINAPI_H */
Jmsg(dcr->jcr, M_FATAL, 0, _("Spool header read error. ERR=%s\n"),
be.strerror());
} else {
- Pmsg2(000, "Spool read error. Wanted %u bytes, got %u\n", rlen, stat);
- Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool header read error. Wanted %u bytes, got %u\n"), rlen, stat);
+ Pmsg2(000, "Spool read error. Wanted %u bytes, got %d\n", rlen, stat);
+ Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool header read error. Wanted %u bytes, got %d\n"), rlen, stat);
}
return RB_ERROR;
}
}
stat = read(dcr->spool_fd, (char *)block->buf, (size_t)rlen);
if (stat != (ssize_t)rlen) {
- Pmsg2(000, "Spool data read error. Wanted %u bytes, got %u\n", rlen, stat);
- Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool data read error. Wanted %u bytes, got %u\n"), rlen, stat);
+ Pmsg2(000, "Spool data read error. Wanted %u bytes, got %d\n", rlen, stat);
+ Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool data read error. Wanted %u bytes, got %d\n"), rlen, stat);
return RB_ERROR;
}
/* Setup write pointers */
/* */
#undef VERSION
#define VERSION "1.37.16"
-#define BDATE "02 May 2005"
-#define LSMDATE "02May05"
+#define BDATE "03 May 2005"
+#define LSMDATE "03May05"
/* Debug flags */
#undef DEBUG
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find_one.c"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\match.c"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\filed\win32\winbacula.h"\
-..\findlib\winapi.cpp : \
+..\lib\winapi.cpp : \
"..\..\baconfig.h"\
"..\..\bacula.h"\
"..\..\bc_types.h"\
"..\..\findlib\find.h"\
"..\..\findlib\protos.h"\
"..\..\findlib\save-cwd.h"\
- "..\..\findlib\winapi.c"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.c"\
+ "..\..\lib\winapi.h"\
"..\..\host.h"\
"..\..\jcr.h"\
"..\..\lib\alist.h"\
"..\..\filed\win32\winservice.h"\
"..\..\filed\win32\winstat.h"\
"..\..\filed\win32\wintray.h"\
- "..\..\findlib\winapi.h"\
+ "..\..\lib\winapi.h"\
"..\compat\compat.h"\
"..\compat\getopt.h"\
"..\compat\unistd.h"\
!ENDIF
-SOURCE=..\findlib\winapi.cpp
+SOURCE=..\lib\winapi.cpp
!IF "$(CFG)" == "baculafd - Win32 Release"
#include "compat.h"
#include "pthread.h"
-#include "../../findlib/winapi.h"
+#include "../../lib/winapi.h"
#define b_errno_win32 (1<<29)
#define HAVE_WIN32 1
-// unicode enabling of win 32 needs some defines and functions
-#define MAX_PATH_UNICODE 32767
-#define MAX_PATH_UTF8 MAX_PATH*3
-
-int wchar_2_UTF8(char *pszUTF, const WCHAR *pszUCS, int cchChar = MAX_PATH_UTF8);
-int UTF8_2_wchar(WCHAR *pszUCS, const char *pszUTF, int cchWideChar = MAX_PATH);
-
#ifndef HAVE_MINGW
#ifdef HAVE_CYGWIN
#error should not be used under cygwin...
--- /dev/null
+# Microsoft Developer Studio Generated NMAKE File, Based on wx-console.dsp
+!IF "$(CFG)" == ""
+CFG=bconsole - Win32 Release
+!MESSAGE No configuration specified. Defaulting to bconsole - Win32 Release.
+!ENDIF
+
+!IF "$(CFG)" != "bconsole - Win32 Release" && "$(CFG)" != "bconsole - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "bconsole.mak" CFG="bconsole - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "bconsole - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "bconsole - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "bconsole - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\bconsole.exe"
+
+
+CLEAN :
+ @@REL-CLEAN@@
+ -@erase "$(OUTDIR)\bconsole.exe"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MD /W3 /GX /I "../compat" /I "../.." /I "../../../../depkgs-win32/pthreads" /I "." /D "_DEBUG" /D "HAVE_CONSOLE" /D "_WINMAIN_" /D "PTW32_BUILD" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_WIN32" /D "_AFXDLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /I /GZ /c
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\bconsole.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=wsock32.lib pthreadVCE.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"$(OUTDIR)\bconsole.exe" /libpath:"../../../../depkgs-win32/pthreads"
+LINK32_OBJS= \
+ @@REL-OBJS@@
+
+
+"$(OUTDIR)\bconsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "bconsole - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\bconsole.exe" "$(OUTDIR)\bconsole.bsc"
+
+CLEAN :
+ @@DEB-CLEAN@@
+ -@erase "$(OUTDIR)\bconsole.exe"
+ -@erase "$(OUTDIR)\bconsole.bsc"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../compat" /I "../.." /I "../../../../depkgs-win32/pthreads" /I "." /D "_DEBUG" /D "HAVE_CONSOLE" /D "_WINMAIN_" /D "PTW32_BUILD" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_WIN32" /D "_AFXDLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /I /GZ /c
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\bconsole.bsc"
+BSC32_SBRS= \
+ @@DEB-SBRS@@
+
+"$(OUTDIR)\bconsole.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
+ $(BSC32) @<<
+ $(BSC32_FLAGS) $(BSC32_SBRS)
+<<
+
+LINK32=link.exe
+LINK32_FLAGS=wsock32.lib pthreadVCE.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"$(OUTDIR)\bconsole.exe" /libpath:"../../../../depkgs-win32/pthreads"
+LINK32_OBJS= \
+ @@DEB-OBJS@@
+
+"$(OUTDIR)\bconsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("bconsole.dep")
+!INCLUDE "bconsole.dep"
+!ELSE
+!MESSAGE Warning: cannot find "bconsole.dep"
+!ENDIF
+!ENDIF
+
+@@OBJTARGETS@@
-@erase "$(INTDIR)\util.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\watchdog.obj"
+ -@erase "$(INTDIR)\winapi.obj"
-@erase "$(OUTDIR)\bconsole.exe"
"$(OUTDIR)" :
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\btimers.obj" \
"$(INTDIR)\util.obj" \
- "$(INTDIR)\watchdog.obj"
+ "$(INTDIR)\watchdog.obj" \
+ "$(INTDIR)\winapi.obj"
"$(OUTDIR)\bconsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(INTDIR)\watchdog.obj"
+ -@erase "$(INTDIR)\winapi.obj"
-@erase "$(OUTDIR)\bconsole.exe"
"$(OUTDIR)" :
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\btimers.obj" \
"$(INTDIR)\util.obj" \
- "$(INTDIR)\watchdog.obj"
+ "$(INTDIR)\watchdog.obj" \
+ "$(INTDIR)\winapi.obj"
"$(OUTDIR)\bconsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(CPP) $(CPP_PROJ) $(SOURCE)
+SOURCE=..\lib\winapi.cpp
+
+"$(INTDIR)\winapi.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
!ENDIF
--- /dev/null
+..\lib\address_conf
+..\lib\alist
+..\lib\base64
+..\lib\berrno
+..\lib\bnet
+..\lib\bsys
+..\lib\btime
+..\lib\cram-md5
+..\lib\crc32
+..\lib\dlist
+..\lib\edit
+..\lib\getopt
+..\lib\hmac
+..\lib\idcache
+..\lib\jcr
+..\lib\lex
+..\lib\md5
+..\lib\mem_pool
+..\lib\message
+..\lib\parse_conf
+..\lib\queue
+..\lib\res
+..\lib\rwlock
+..\lib\scan
+..\lib\serial
+..\lib\sha1
+..\lib\smartall
+..\lib\btimers
+..\lib\util
+..\lib\watchdog
+..\lib\winapi
+..\compat\compat
+..\compat\print
+.\authenticate
+.\console
+.\console_conf
+.\StdAfx
--- /dev/null
+rm -f bconsole.mak
+sed -e 's/^\(.*\)\\\(.*\)$/FILENAME=\2\nSOURCE=\1\\\2.cpp\n@@OBJMAKIN@@\n/g' filelist > objtargets1.tmp
+sed -e '/@@OBJMAKIN@@/r bconsole-obj.mak.in' -e '/@@OBJMAKIN@@/d' objtargets1.tmp > objtargets.tmp
+sed -e 's/^\(.*\)\\\(.*\)$/\t-@erase "\$(INTDIR)\\\2.obj"/g' filelist > relclean.tmp
+sed -e 's/^\(.*\)\\\(.*\)$/\t"\$(INTDIR)\\\2.obj" \\/g' filelist > relobjs.tmp
+sed -e 's/^\(.*\)\\\(.*\)$/\t-@erase "\$(INTDIR)\\\2.obj\n\t-@erase "\$(INTDIR)\\\2.sbr"/g' filelist > debclean.tmp
+sed -e 's/^\(.*\)\\\(.*\)$/\t"\$(INTDIR)\\\2.obj" \\/g' filelist > debobjs.tmp
+sed -e 's/^\(.*\)\\\(.*\)$/\t"\$(INTDIR)\\\2.sbr" \\/g' filelist > debsbrs.tmp
+sed -e '/@@OBJTARGETS@@/r objtargets.tmp' -e '/@@OBJTARGETS@@/d' \
+ -e '/@@REL-CLEAN@@/r relclean.tmp' -e '/@@REL-CLEAN@@/d' \
+ -e '/@@REL-OBJS@@/r relobjs.tmp' -e '/@@REL-OBJS@@/d' \
+ -e '/@@DEB-CLEAN@@/r debclean.tmp' -e '/@@DEB-CLEAN@@/d' \
+ -e '/@@DEB-OBJS@@/r debobjs.tmp' -e '/@@DEB-OBJS@@/d' \
+ -e '/@@DEB-SBRS@@/r debsbrs.tmp' -e '/@@DEB-SBRS@@/d' \
+ bconsole.mak.in > bconsole.mak
+rm *.tmp
--- /dev/null
+#include "../../lib/winapi.c"
..\lib\util
..\lib\var
..\lib\watchdog
+..\lib\winapi
..\lib\workq
..\compat\compat
..\compat\print
-@erase "$(INTDIR)\util.obj"
-@erase "$(INTDIR)\var.obj"
-@erase "$(INTDIR)\watchdog.obj"
+ -@erase "$(INTDIR)\winapi.obj"
-@erase "$(INTDIR)\workq.obj"
-@erase "$(INTDIR)\compat.obj"
-@erase "$(INTDIR)\print.obj"
"$(INTDIR)\util.obj" \
"$(INTDIR)\var.obj" \
"$(INTDIR)\watchdog.obj" \
+ "$(INTDIR)\winapi.obj" \
"$(INTDIR)\workq.obj" \
"$(INTDIR)\compat.obj" \
"$(INTDIR)\print.obj" \
-@erase "$(INTDIR)\var.sbr"
-@erase "$(INTDIR)\watchdog.obj
-@erase "$(INTDIR)\watchdog.sbr"
+ -@erase "$(INTDIR)\winapi.obj
+ -@erase "$(INTDIR)\winapi.sbr"
-@erase "$(INTDIR)\workq.obj
-@erase "$(INTDIR)\workq.sbr"
-@erase "$(INTDIR)\compat.obj
"$(INTDIR)\util.sbr" \
"$(INTDIR)\var.sbr" \
"$(INTDIR)\watchdog.sbr" \
+ "$(INTDIR)\winapi.sbr" \
"$(INTDIR)\workq.sbr" \
"$(INTDIR)\compat.sbr" \
"$(INTDIR)\print.sbr" \
"$(INTDIR)\util.obj" \
"$(INTDIR)\var.obj" \
"$(INTDIR)\watchdog.obj" \
+ "$(INTDIR)\winapi.obj" \
"$(INTDIR)\workq.obj" \
"$(INTDIR)\compat.obj" \
"$(INTDIR)\print.obj" \
!ENDIF
+FILENAME=winapi
+SOURCE=..\lib\winapi.cpp
+!IF "$(CFG)" == "wx-console - Win32 Release"
+
+
+"$(INTDIR)\$(FILENAME).obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "wx-console - Win32 Debug"
+
+
+"$(INTDIR)\$(FILENAME).obj" "$(INTDIR)\$(FILENAME).sbr" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+
FILENAME=workq
SOURCE=..\lib\workq.cpp
!IF "$(CFG)" == "wx-console - Win32 Release"