Disk ARchive 2.7.16
Full featured and portable backup and archiving tool
archive_options5.hpp
Go to the documentation of this file.
1/*********************************************************************/
2// dar - disk archive - a backup/restoration program
3// Copyright (C) 2002-2024 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18//
19// to contact the author, see the AUTHOR file
20/*********************************************************************/
21
25
26#ifndef ARCHIVE_OPTIONS5_HPP
27#define ARCHIVE_OPTIONS5_HPP
28
29#include "archive_options.hpp"
31
32namespace libdar5
33{
34
35 // ///////////////////////////////////////////////////////
36 // //////////// OPTIONS FOR OPENNING AN ARCHIVE //////////
37 // ///////////////////////////////////////////////////////
38
41
42 using libdar::entrepot;
43
44 class archive_options_read: public libdar::archive_options_read
45 {
46 public:
47 void set_entrepot(const entrepot & entr)
48 {
49 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
50 if(!tmp)
51 throw Ememory("libdar5::archive_options_create::set_entrepot");
53 }
54
55 void set_ref_entrepot(const entrepot & entr)
56 {
57 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
58 if(!tmp)
59 throw Ememory("libdar5::archive_options_create::set_ref_entrepot");
61 }
62 };
63
64
65 // ///////////////////////////////////////////////////////
66 // /////// OPTIONS FOR CREATING AN ARCHIVE ///////////////
67 // ///////////////////////////////////////////////////////
68
69 class archive_options_create: public libdar::archive_options_create
70 {
71 public:
72 using libdar::archive_options_create::archive_options_create;
73
75
89 void set_reference(libdar::archive *ref_arch)
90 {
92 std::shared_ptr<libdar::archive>(ref_arch,
93 [](libdar::archive* ptr) {} )
94 // the custom deleter must not delete the object pointed to by
95 // by ref, this is why it does nothing
96 );
97 };
98
99 void set_entrepot(const entrepot & entr)
100 {
101 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
102 if(!tmp)
103 throw Ememory("libdar5::archive_options_create::set_entrepot");
105 }
106
107 };
108
109 // ///////////////////////////////////////////////////////
110 // ////////// OPTIONS FOR ISOLATING A CATALOGUE //////////
111 // ///////////////////////////////////////////////////////
112
113
114 class archive_options_isolate: public libdar::archive_options_isolate
115 {
116 void set_entrepot(const entrepot & entr)
117 {
118 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
119 if(!tmp)
120 throw Ememory("libdar5::archive_options_create::set_entrepot");
122 }
123 };
124
125 // ///////////////////////////////////////////////////////
126 // //////// OPTONS FOR MERGING ARCHIVES //////////////////
127 // ///////////////////////////////////////////////////////
128
129 class archive_options_merge: public libdar::archive_options_merge
130 {
131 public:
132
133 using libdar::archive_options_merge::archive_options_merge;
134
135 void set_auxilliary_ref(libdar::archive *ref)
136 {
137 libdar::archive_options_merge::set_auxiliary_ref(
138 std::shared_ptr<libdar::archive>(ref,
139 [](libdar::archive* ptr) {})
140 // the custom deleter must not delete the object pointed to by
141 // by ref, this is why it does nothing
142 );
143 };
144
145 void set_entrepot(const entrepot & entr)
146 {
147 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
148 if(!tmp)
149 throw Ememory("libdar5::archive_options_create::set_entrepot");
151 }
152 };
153
154
155 // ///////////////////////////////////////////////////////
156 // //////// OPTONS FOR EXTRACTING FILES FROM ARCHIVE /////
157 // ///////////////////////////////////////////////////////
158
160
161
162 // ///////////////////////////////////////////////////////
163 // //////// OPTIONS FOR LISTING AN ARCHIVE ///////////////
164 // ///////////////////////////////////////////////////////
165
166 class archive_options_listing: public libdar::archive_options_listing_shell
167 {
168 public:
169 using libdar::archive_options_listing_shell::archive_options_listing_shell;
170 };
171
172
173 // ///////////////////////////////////////////////////////
174 // //////// OPTONS FOR DIFFING AN ARCHIVE ////////////////
175 // ///////////////////////////////////////////////////////
176
177 using libdar::archive_options_diff;
178
179
180 // ///////////////////////////////////////////////////////
181 // //////// OPTONS FOR TESTING AN ARCHIVE ////////////////
182 // ///////////////////////////////////////////////////////
183
185
186
187 // ///////////////////////////////////////////////////////
188 // /////// OPTIONS FOR REPAIRING AN ARCHIVE //////////////
189 // ///////////////////////////////////////////////////////
190
192
194
195} // end of namespace
196
197#endif
this file contains a set of classes used to transmit options to archive operation
this file contains shell_interaction options class for listing
class holding optional parameters used to create an archive
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use for slices
void set_reference(std::shared_ptr< archive > ref_arch)
set the archive to take as reference (nullptr for a full backup)
class holding optional parameters used to extract files from an existing archive
class holding optional parameters used to isolate an existing archive
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use for slices
class holding optional shell specific parameters used to list the contents of an existing archive
class holding optional parameters used to proceed to the merge operation
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use for slices
class holding optional parameters used to read an existing archive
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use to retrieve slices
void set_ref_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use to retrieve slices of the reference archive (where the external catalogue...
class holding optional parameters used to create an archive
class holding optional parameters used to test the structure coherence of an existing archive
the archive class realizes the most general operations on archives
Definition: archive.hpp:65
the Entrepot interface
Definition: entrepot.hpp:56
libdar5 namespace encapsulate all libdar symbols
Definition: archive5.hpp:37