From: Kern Sibbald Date: Tue, 3 May 2005 12:51:31 +0000 (+0000) Subject: Move winapi.h/c from findlib to lib for inclusion in multiple places X-Git-Tag: Release-7.0.0~8845 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=5de09d68674f4298eb4c3a0de3fe062b4d1bf2d1;hp=a2c8dc5f9e2b49225bdb2a4b39bd772a361dfcd6;p=bacula%2Fbacula Move winapi.h/c from findlib to lib for inclusion in multiple places git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1980 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/src/filed/win32/winmain.cpp b/bacula/src/filed/win32/winmain.cpp index 95b843da62..26ae82ad80 100755 --- a/bacula/src/filed/win32/winmain.cpp +++ b/bacula/src/filed/win32/winmain.cpp @@ -32,7 +32,7 @@ #include "winservice.h" #include #include -#include "../../findlib/winapi.h" +#include "../../lib/winapi.h" extern int BaculaMain(int argc, char *argv[]); extern void terminate_filed(int sig); diff --git a/bacula/src/findlib/attribs.c b/bacula/src/findlib/attribs.c index 3079d00cc4..90db4b21af 100755 --- a/bacula/src/findlib/attribs.c +++ b/bacula/src/findlib/attribs.c @@ -33,7 +33,8 @@ #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); @@ -48,9 +49,9 @@ HANDLE bget_handle(BFILE *bfd); #endif /*=============================================================*/ -/* */ -/* *** A l l S y s t e m s *** */ -/* */ +/* */ +/* *** A l l S y s t e m s *** */ +/* */ /*=============================================================*/ /* @@ -72,11 +73,11 @@ int select_data_stream(FF_PKT *ff_pkt) #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 @@ -101,7 +102,7 @@ void encode_stat(char *buf, FF_PKT *ff_pkt, int data_stream) 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 */ @@ -154,7 +155,7 @@ void encode_stat(char *buf, FF_PKT *ff_pkt, int data_stream) /* 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 void plug(T &st, uint64_t val) { st = static_cast(val); } @@ -252,32 +253,32 @@ int32_t decode_LinkFI(char *buf, struct stat *statp) 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) == ' ')) { @@ -295,7 +296,7 @@ int32_t decode_LinkFI(char *buf, struct stat *statp) * 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) { @@ -308,7 +309,7 @@ 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; @@ -316,7 +317,7 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) 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; @@ -334,11 +335,11 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) 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)); } } @@ -348,38 +349,38 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) /* ***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 /* @@ -390,10 +391,10 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) * 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 } @@ -404,9 +405,9 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) /*=============================================================*/ -/* */ -/* * * * U n i x * * * * */ -/* */ +/* */ +/* * * * U n i x * * * * */ +/* */ /*=============================================================*/ #if !defined(HAVE_CYGWIN) && !defined(HAVE_WIN32) @@ -417,7 +418,7 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) * 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) @@ -434,7 +435,7 @@ 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; } @@ -444,9 +445,9 @@ int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt) /*=============================================================*/ -/* */ -/* * * * W i n 3 2 * * * * */ -/* */ +/* */ +/* * * * W i n 3 2 * * * * */ +/* */ /*=============================================================*/ #if defined(HAVE_CYGWIN) || defined(HAVE_WIN32) @@ -457,31 +458,31 @@ int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt) 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; } } @@ -515,7 +516,7 @@ int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt) FILE_ATTRIBUTE_OFFLINE| \ FILE_ATTRIBUTE_READONLY| \ FILE_ATTRIBUTE_SYSTEM| \ - FILE_ATTRIBUTE_TEMPORARY) + FILE_ATTRIBUTE_TEMPORARY) /* @@ -525,7 +526,7 @@ int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt) * 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) { @@ -539,10 +540,10 @@ 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 { @@ -551,17 +552,17 @@ static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) 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; @@ -583,15 +584,15 @@ static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) 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); @@ -606,12 +607,12 @@ static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *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); @@ -623,13 +624,13 @@ void win_error(JCR *jcr, char *prefix, POOLMEM *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); @@ -640,13 +641,13 @@ void win_error(JCR *jcr, char *prefix, DWORD lerror) { 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); @@ -667,4 +668,4 @@ void unix_name_to_win32(POOLMEM **win32_name, char *name) cygwin_conv_to_win32_path(name, *win32_name); } -#endif /* HAVE_CYGWIN */ +#endif /* HAVE_CYGWIN */ diff --git a/bacula/src/findlib/bfile.h b/bacula/src/findlib/bfile.h index 544b596311..a38e53c1c1 100644 --- a/bacula/src/findlib/bfile.h +++ b/bacula/src/findlib/bfile.h @@ -50,7 +50,7 @@ struct Python_IO { #if defined(HAVE_CYGWIN) || defined(HAVE_WIN32) #include -#include "winapi.h" +#include "../lib/winapi.h" enum { BF_CLOSED, diff --git a/bacula/src/lib/winapi.c b/bacula/src/lib/winapi.c new file mode 100644 index 0000000000..ea8a5a02ef --- /dev/null +++ b/bacula/src/lib/winapi.c @@ -0,0 +1,72 @@ +/* + * 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 diff --git a/bacula/src/lib/winapi.h b/bacula/src/lib/winapi.h new file mode 100644 index 0000000000..8fed7e90e5 --- /dev/null +++ b/bacula/src/lib/winapi.h @@ -0,0 +1,139 @@ +/* + * 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 + * #endif + */ +#include +#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 */ diff --git a/bacula/src/stored/spool.c b/bacula/src/stored/spool.c index 8724854b94..60e9b760c8 100644 --- a/bacula/src/stored/spool.c +++ b/bacula/src/stored/spool.c @@ -308,8 +308,8 @@ static int read_block_from_spool_file(DCR *dcr) 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; } @@ -321,8 +321,8 @@ static int read_block_from_spool_file(DCR *dcr) } 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 */ diff --git a/bacula/src/version.h b/bacula/src/version.h index 394e38b486..7b9538329c 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -1,8 +1,8 @@ /* */ #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