1 /*********************************************************************/
2 // dar - disk archive - a backup/restoration program
3 // Copyright (C) 2002-2052 Denis Corbin
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 //
19 // to contact the author : http://dar.linux.free.fr/email.html
20 /*********************************************************************/
21 
22     /// \file database_header.hpp
23     /// \brief defines the database structure in file
24     /// \ingroup Private
25 
26 #ifndef DATABASE_HEADER_HPP
27 #define DATABASE_HEADER_HPP
28 
29 #include "../my_config.h"
30 #include "infinint.hpp"
31 #include "generic_file.hpp"
32 
33 #include "user_interaction.hpp"
34 
35 namespace libdar
36 {
37 
38 	/// \ingroup Private
39 	/// @}
40 
41 	/// create the header for a dar_manager database
42 
43 	/// \param[in] dialog is used for user interaction
44 	/// \param[in] pool memory pool to use or nullptr for default memory allocation
45 	/// \param[in] filename is the file's name to create/overwrite
46 	/// \param[in] overwrite set to true to allow file overwriting (else generates an error if file exists)
47 	/// \return the database header has been read and checked the database can now be read from the returned generic_file pointed by the returned value
48 	/// then it must be destroyed with the delete operator.
49     extern generic_file *database_header_create(user_interaction & dialog,
50 						memory_pool *pool,
51 						const std::string & filename,
52 						bool overwrite);
53 
54 	/// read the header of a dar_manager database
55 
56 	/// \param[in] dialog for user interaction
57 	/// \param[in] pool memory pool to use or nullptr for default memory allocation
58 	/// \param[in] filename is the filename to read from
59 	/// \param[out] db_version version of the database
60 	/// \return the generic_file where the database header has been put
61     extern generic_file *database_header_open(user_interaction & dialog,
62 					      memory_pool *pool,
63 					      const std::string & filename,
64 					      unsigned char & db_version);
65 
66     extern const unsigned char database_header_get_supported_version();
67 
68 	///@}
69 
70 } // end of namespace
71 
72 #endif
73