X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Ffindlib%2Fbfile.h;h=78e3b58a3b175f7620d86f98c591d23ad70e3da6;hb=10cfd798ced2d27f61ead2de6fe9b1bcc8e3468d;hp=ed3f6c6d2866a3d0b764df8508f08fbc452c8aef;hpb=26dea62aec147d0e9dfb688ce1a971c43ff53be0;p=bacula%2Fbacula diff --git a/bacula/src/findlib/bfile.h b/bacula/src/findlib/bfile.h index ed3f6c6d28..78e3b58a3b 100644 --- a/bacula/src/findlib/bfile.h +++ b/bacula/src/findlib/bfile.h @@ -1,29 +1,20 @@ /* - Bacula® - The Network Backup Solution - - 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. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version two of the GNU General Public - License as published by the Free Software Foundation and included - in the file LICENSE. - - 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., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - - Bacula® is a registered trademark of John Walker. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2018 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. */ /* * Bacula low level File I/O routines. This routine simulates @@ -36,39 +27,12 @@ #ifndef __BFILE_H #define __BFILE_H -#ifdef HAVE_PYTHON -#undef _POSIX_C_SOURCE -#include -struct Python_IO { - PyObject *fo; - PyObject *fr; - PyObject *fc; -}; -#else -struct Python_IO { -}; -#endif - - -/* this should physically correspond to WIN32_STREAM_ID - * from winbase.h on Win32. We didn't inlcude cStreamName - * as we don't use it and don't need it for a correct struct size. - */ - -#define WIN32_BACKUP_DATA 1 - -typedef struct _BWIN32_STREAM_ID { - int32_t dwStreamId; - int32_t dwStreamAttributes; - int64_t Size; - int32_t dwStreamNameSize; -} BWIN32_STREAM_ID, *LPBWIN32_STREAM_ID ; - +#include "win32filter.h" typedef struct _PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT { int64_t liNextHeader; bool bIsInData; - BWIN32_STREAM_ID header_stream; + BWIN32_STREAM_ID header_stream; } PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT; /* ======================================================= @@ -77,7 +41,7 @@ typedef struct _PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT { * * ======================================================= */ -#if defined(HAVE_WIN32) +#ifdef HAVE_WIN32 enum { BF_CLOSED, @@ -88,26 +52,37 @@ enum { /* In bfile.c */ /* Basic Win32 low level I/O file packet */ -struct BFILE { +class BFILE { +public: bool use_backup_api; /* set if using BackupRead/Write */ int mode; /* set if file is open */ HANDLE fh; /* Win32 file handle */ int fid; /* fd if doing Unix style */ LPVOID lpContext; /* BackupRead/Write context */ + PVOID pvContext; /* Windows encryption (EFS) context */ POOLMEM *errmsg; /* error message buffer */ DWORD rw_bytes; /* Bytes read or written */ DWORD lerror; /* Last error code */ + DWORD fattrs; /* Windows file attributes */ int berrno; /* errno */ - char *prog; /* reader/writer program if any */ + int block; /* Count of read/writes */ + uint64_t total_bytes; /* bytes written */ + boffset_t offset; /* Delta offset */ JCR *jcr; /* jcr for editing job codes */ - Python_IO pio; /* Python I/O routines */ - PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT win32DecompContext; /* context for decomposition of win32 backup streams */ + Win32Filter win32filter; /* context for decomposition of win32 backup streams */ int use_backup_decomp; /* set if using BackupRead Stream Decomposition */ - bool reparse_point; /* set if reparse point */ + bool reparse_point; /* set if reparse point */ + bool cmd_plugin; /* set if we have a command plugin */ + bool const is_encrypted() const; }; +/* Windows encrypted file system */ +inline const bool BFILE::is_encrypted() const + { return (fattrs & FILE_ATTRIBUTE_ENCRYPTED) != 0; }; + HANDLE bget_handle(BFILE *bfd); + #else /* Linux/Unix systems */ /* ======================================================= @@ -120,32 +95,37 @@ 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 */ + int berrno; /* errno */ + int32_t lerror; /* not used - simplies Win32 builds */ + int block; /* Count of read/writes */ + uint64_t m_flags; /* open flags */ + uint64_t total_bytes; /* bytes written */ + boffset_t offset; /* Delta offset */ JCR *jcr; /* jcr for editing job codes */ - Python_IO pio; /* Python I/O routines */ - PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT win32DecompContext; /* context for decomposition of win32 backup streams */ + Win32Filter win32filter; /* context for decomposition of win32 backup streams */ int use_backup_decomp; /* set if using BackupRead Stream Decomposition */ bool reparse_point; /* not used in Unix */ + bool cmd_plugin; /* set if we have a command plugin */ }; #endif void binit(BFILE *bfd); bool is_bopen(BFILE *bfd); +#ifdef HAVE_WIN32 +void set_fattrs(BFILE *bfd, struct stat *statp); +#else +#define set_fattrs(bfd, fattrs) +#endif bool set_win32_backup(BFILE *bfd); bool set_portable_backup(BFILE *bfd); -bool set_prog(BFILE *bfd, char *prog, JCR *jcr); +bool set_cmd_plugin(BFILE *bfd, JCR *jcr); bool have_win32_api(); bool is_portable_backup(BFILE *bfd); bool is_restore_stream_supported(int stream); bool is_win32_stream(int stream); -char *xberror(BFILE *bfd); /* DO NOT USE -- use berrno class */ -int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode); -#ifdef HAVE_DARWIN_OS -int bopen_rsrc(BFILE *bfd, const char *fname, int flags, mode_t mode); -#endif +int bopen(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode); +int bopen_rsrc(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode); int bclose(BFILE *bfd); ssize_t bread(BFILE *bfd, void *buf, size_t count); ssize_t bwrite(BFILE *bfd, void *buf, size_t count);