 |
Disk ARchive
2.6.8
Full featured and portable backup and archiving tool
|
Go to the documentation of this file.
30 #include "../my_config.h"
65 std::string get_name()
const {
return filename; };
66 void set_name(
const std::string & name) { filename = name; };
89 db_etat present) { set_data(
archive, date, present,
nullptr,
nullptr); };
95 const crc *result) { last_mod[
archive] = status_plus(date, present, base, result); (void) check_delta_validity(); };
100 virtual bool check_order(
user_interaction & dialog,
const path & current_path,
bool & initial_warn)
const {
return check_map_order(dialog, last_mod, current_path,
"data", initial_warn) && check_map_order(dialog, last_change, current_path,
"EA", initial_warn); };
113 const archive_num & ignore_archive_greater_or_equal);
125 virtual void compute_most_recent_stats(std::deque<infinint> & data,
126 std::deque<infinint> &
ea,
127 std::deque<infinint> & total_data,
128 std::deque<infinint> & total_ea)
const;
130 virtual char obj_signature()
const {
return signature(); };
131 static char signature() {
return 't'; };
134 virtual bool fix_corruption();
138 static constexpr
const char *
const ETAT_SAVED =
"S";
139 static constexpr
const char *
const ETAT_PATCH =
"O";
140 static constexpr
const char *
const ETAT_PATCH_UNUSABLE =
"U";
141 static constexpr
const char *
const ETAT_PRESENT =
"P";
142 static constexpr
const char *
const ETAT_REMOVED =
"R";
143 static constexpr
const char *
const ETAT_ABSENT =
"A";
144 static constexpr
const char *
const ETAT_INODE =
"I";
146 static constexpr
unsigned char STATUS_PLUS_FLAG_ME = 0x01;
147 static constexpr
unsigned char STATUS_PLUS_FLAG_REF = 0x02;
153 status(
const datetime & d,
db_etat p) { date = d; present = p; };
154 status(
const status & ref) =
default;
155 status(status && ref) noexcept =
default;
156 status & operator = (
const status & ref) =
default;
157 status & operator = (status && ref) noexcept =
default;
158 virtual ~status() =
default;
163 virtual void dump(generic_file & f)
const;
164 virtual void read(generic_file &f,
165 unsigned char db_version);
169 class status_plus :
public status
172 status_plus() { base = result =
nullptr; };
173 status_plus(
const datetime & d,
db_etat p,
const crc *xbase,
const crc *xresult);
174 status_plus(
const status_plus & ref): status(ref) { copy_from(ref); };
175 status_plus(status_plus && ref) noexcept: status(std::move(ref)) { nullifyptr(); move_from(std::move(ref)); };
176 status_plus & operator = (
const status_plus & ref) { detruit(); copy_from(ref);
return *
this; };
177 status_plus & operator = (status_plus && ref) noexcept { status::operator = (std::move(ref)); move_from(std::move(ref));
return *
this; };
178 ~status_plus() { detruit(); };
183 void dump(generic_file & f)
const;
184 void read(generic_file &f,
185 unsigned char db_version);
188 void nullifyptr() noexcept { base = result =
nullptr; };
189 void copy_from(
const status_plus & ref);
190 void move_from(status_plus && ref) noexcept;
195 std::string filename;
196 std::map<archive_num, status_plus> last_mod;
197 std::map<archive_num, status> last_change;
203 template <
class T>
bool check_map_order(user_interaction & dialog,
204 const std::map<archive_num, T> the_map,
205 const path & current_path,
206 const std::string & field_nature,
207 bool & initial_warn)
const;
209 bool check_delta_validity();
223 const datetime *data,
void listing(database_listing_get_version_callback callback, void *tag) const
list where is saved this file
virtual bool check_order(user_interaction &dialog, const path ¤t_path, bool &initial_warn) const
check date order between archives withing the database ; throw Erange if problem found with date orde...
file not even mentionned in the archive, This entry is equivalent to et_removed, but is required to b...
This is a pure virtual class that is used by libdar when interaction with the user is required.
db_lookup get_data(std::set< archive_num > &archive, const datetime &date, bool even_when_removed) const
defines the interaction interface between libdar and users.
switch module to limitint (32 ou 64 bits integers) or infinint
db_lookup get_EA(archive_num &archive, const datetime &date, bool even_when_removed) const
if EA has been saved alone later, returns in which version for the state of the file at the given dat...
virtual void finalize(const archive_num &archive, const datetime &deleted_date, const archive_num &ignore_archive_greater_or_equal)
add deleted entry if no object of the current archive exist and the entry of the previous archive is ...
bool read_data(archive_num num, datetime &val, db_etat &present) const
return the date of file's last modification date within the give archive and whether the file has bee...
pure virtual class defining interface of a CRC object
class generic_file is defined here as well as class fichier
bool read_EA(archive_num num, datetime &val, db_etat &present) const
return the date of last inode change and whether the EA has been saved or deleted
the class path is here to manipulate paths in the Unix notation: using'/'
void(*)(void *context, archive_num num, db_etat data_presence, bool has_data_date, datetime data, db_etat ea_presence, bool has_ea_date, datetime ea) database_listing_get_version_callback
called with the information of presence for an entry in archive number num
set of datastructures used to interact with a database object
virtual bool remove_all_from(const archive_num &archive_to_remove, const archive_num &last_archive)
return true if the corresponding file is no more located in any archive (thus, the object is no more ...
static void display_line(database_listing_get_version_callback callback, void *tag, archive_num num, const datetime *data, db_etat data_presence, const datetime *ea, db_etat ea_presence)
helper method to provide information to a database_listing_get_version_callback
db_etat
the status for a founded entry
db_lookup
the available status of a lookup
this is the interface class from which all other data transfer classes inherit
the data_tree class stores presence of a given file in a set of archives
the archive class realizes the most general operations on archives
virtual void skip_out(archive_num num)
decrement archive numbers above num
class archive_num stores the position of an archive inside a dar_manager database
static archive_num data_tree_permutation(archive_num src, archive_num dst, archive_num x)
gives new archive number when an database has its archive reordered
here is the definition of the path class
definition of the user defined callback function used for database listing
bool ea() noexcept
returns whether EA support has been activated at compilation time
libdar namespace encapsulate all libdar symbols