Disk ARchive 2.7.16
Full featured and portable backup and archiving tool
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
libdar::cat_directory Class Reference

the cat_directory inode class More...

#include <cat_directory.hpp>

+ Inheritance diagram for libdar::cat_directory:
+ Collaboration diagram for libdar::cat_directory:

Public Member Functions

 cat_directory (const infinint &xuid, const infinint &xgid, U_16 xperm, const datetime &last_access, const datetime &last_modif, const datetime &last_change, const std::string &xname, const infinint &device)
 
 cat_directory (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &pdesc, const archive_version &reading_ver, saved_status saved, entree_stats &stats, std::map< infinint, cat_etoile * > &corres, compression default_algo, bool lax, bool only_detruit, bool small)
 
 cat_directory (const cat_directory &ref)
 
 cat_directory (cat_directory &&ref) noexcept
 
cat_directoryoperator= (const cat_directory &ref)
 
cat_directoryoperator= (cat_directory &&ref)
 
virtual bool operator== (const cat_entree &ref) const override
 attention this compares only the directories themselves, not the list of their children More...
 
void add_children (cat_nomme *r)
 
bool has_children () const
 
void reset_read_children () const
 
void end_read () const
 
bool read_children (const cat_nomme *&r) const
 
void tail_to_read_children ()
 
void remove (const std::string &name)
 remove the given entry from the catalogue More...
 
cat_directoryget_parent () const
 
bool search_children (const std::string &name, const cat_nomme *&ref) const
 
virtual unsigned char signature () const override
 inherited class signature More...
 
virtual std::string get_description () const override
 inherited class designation More...
 
bool get_recursive_has_changed () const
 detemine whether some data has changed since archive of reference in this cat_directory or subdirectories More...
 
void recursive_has_changed_update () const
 ask recursive update for the recursive_has_changed field
 
infinint get_dir_size () const
 get the number of "cat_nomme" entry directly containted in this cat_directory (no recursive call) More...
 
infinint get_tree_size () const
 get then number of "cat_nomme" entry contained in this cat_directory and subdirectories (recursive call)
 
infinint get_tree_ea_num () const
 get the number of entry having some EA set in the cat_directory tree (recursive call)
 
infinint get_tree_mirage_num () const
 get the number of entry that are hard linked inode (aka mirage in dar implementation) (recursive call)
 
void get_etiquettes_found_in_tree (std::map< infinint, infinint > &already_found) const
 
bool is_empty () const
 whether this cat_directory is empty or not More...
 
void remove_all_mirages_and_reduce_dirs ()
 recursively remove all mirage entries
 
void set_all_mirage_s_inode_wrote_field_to (bool val) const
 recursively set all mirage inode_wrote flag
 
void set_all_mirage_s_inode_dumped_field_to (bool val) const
 set the value of inode_dumped for all mirage (recusively)
 
virtual cat_entreeclone () const override
 a way to copy the exact type of an object even if pointed to by a parent class pointer More...
 
const infinintget_size () const
 
const infinintget_storage_size () const
 
void recursively_set_to_unsaved_data_and_FSA ()
 
virtual void change_location (const smart_pointer< pile_descriptor > &pdesc) override
 overwrite virtual method of cat_entree to propagate the action to all entries of the directory tree More...
 
- Public Member Functions inherited from libdar::cat_inode
 cat_inode (const infinint &xuid, const infinint &xgid, U_16 xperm, const datetime &last_access, const datetime &last_modif, const datetime &last_change, const std::string &xname, const infinint &device)
 flag used to only consider certain fields when comparing/restoring inodes
 
 cat_inode (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &pdesc, const archive_version &reading_ver, saved_status saved, bool small)
 
 cat_inode (const cat_inode &ref)
 
 cat_inode (cat_inode &&ref) noexcept
 
cat_inodeoperator= (const cat_inode &ref)
 
cat_inodeoperator= (cat_inode &&ref)
 
const infinintget_uid () const
 
const infinintget_gid () const
 
U_16 get_perm () const
 
datetime get_last_access () const
 
datetime get_last_modif () const
 
void set_last_access (const datetime &x_time)
 
void set_last_modif (const datetime &x_time)
 
infinint get_device () const
 
bool same_as (const cat_inode &ref) const
 
bool is_more_recent_than (const cat_inode &ref, const infinint &hourshift) const
 
virtual bool has_changed_since (const cat_inode &ref, const infinint &hourshift, comparison_fields what_to_check) const
 
void compare (const cat_inode &other, const mask &ea_mask, comparison_fields what_to_check, const infinint &hourshift, bool symlink_date, const fsa_scope &scope, bool isolated_mode) const
 do not try to compare pointed to data, EA of FSA (suitable for isolated catalogue)
 
void ea_set_saved_status (ea_saved_status status)
 
ea_saved_status ea_get_saved_status () const
 
void ea_attach (ea_attributs *ref)
 
const ea_attributsget_ea () const
 the returned value is the address of an existing file of the cat_inode object and shall not be deleted by the caller
 
void ea_detach () const
 
infinint ea_get_size () const
 
void ea_set_offset (const infinint &pos)
 
bool ea_get_offset (infinint &pos) const
 
void ea_set_crc (const crc &val)
 
void ea_get_crc (const crc *&ptr) const
 the argument is set to point to an allocated crc object owned by this "cat_inode" object, this reference stays valid while the "cat_inode" object exists and MUST NOT be deleted by the caller in any case
 
bool ea_get_crc_size (infinint &val) const
 returns true if crc is know and puts its width in argument
 
datetime get_last_change () const
 
void set_last_change (const datetime &x_time)
 
bool has_last_change () const
 
void fsa_set_saved_status (fsa_saved_status status)
 
fsa_saved_status fsa_get_saved_status () const
 
fsa_scope fsa_get_families () const
 gives the set of FSA family recorded for that inode More...
 
void fsa_attach (filesystem_specific_attribute_list *ref)
 
void fsa_partial_attach (const fsa_scope &val)
 
const filesystem_specific_attribute_listget_fsa () const
 
void fsa_detach () const
 
infinint fsa_get_size () const
 
void fsa_set_offset (const infinint &pos)
 
bool fsa_get_offset (infinint &pos) const
 
void fsa_set_crc (const crc &val)
 
void fsa_get_crc (const crc *&ptr) const
 
bool fsa_get_crc_size (infinint &val) const
 
- Public Member Functions inherited from libdar::cat_nomme
 cat_nomme (const std::string &name, saved_status arg)
 
 cat_nomme (const smart_pointer< pile_descriptor > &pdesc, bool small, saved_status val)
 
 cat_nomme (const cat_nomme &ref)=default
 
 cat_nomme (cat_nomme &&ref) noexcept=default
 
cat_nommeoperator= (const cat_nomme &ref)=default
 
cat_nommeoperator= (cat_nomme &&ref)=default
 
virtual bool operator== (const cat_entree &ref) const override
 returns true if the two object are the same More...
 
virtual bool operator< (const cat_nomme &ref) const
 
const std::string & get_name () const
 
void change_name (const std::string &x)
 
bool same_as (const cat_nomme &ref) const
 
- Public Member Functions inherited from libdar::cat_entree
 cat_entree (saved_status val)
 setup an object when read from filesystem More...
 
 cat_entree (const smart_pointer< pile_descriptor > &pdesc, bool small, saved_status val)
 setup an object when read from an archive More...
 
 cat_entree (const cat_entree &ref)=default
 
 cat_entree (cat_entree &&ref) noexcept=default
 
cat_entreeoperator= (const cat_entree &ref)=default
 
cat_entreeoperator= (cat_entree &&ref)=default
 
virtual ~cat_entree () noexcept(false)
 destructor More...
 
virtual bool operator== (const cat_entree &ref) const =0
 returns true if the two object are the same More...
 
bool operator!= (const cat_entree &ref) const
 
bool same_as (const cat_entree &ref) const
 return true of the two objects would generate the same entry on filsystem More...
 
void dump (const pile_descriptor &pdesc, bool small) const
 write down the object information to a stack More...
 
void specific_dump (const pile_descriptor &pdesc, bool small) const
 this call gives an access to inherited_dump More...
 
virtual void post_constructor (const pile_descriptor &pdesc)
 let inherited classes build object's data after CRC has been read from file in small read mode More...
 
virtual unsigned char signature () const =0
 inherited class signature More...
 
virtual std::string get_description () const =0
 inherited class designation More...
 
virtual cat_entreeclone () const =0
 a way to copy the exact type of an object even if pointed to by a parent class pointer More...
 
virtual void change_location (const smart_pointer< pile_descriptor > &pdesc)
 
saved_status get_saved_status () const
 obtain the saved status of the object More...
 
void set_saved_status (saved_status x)
 modify the saved_status of the object More...
 
void set_list_entry (const slice_layout *sly, bool fetch_ea, list_entry &ent) const
 setup a list_entry object relative to the current cat_entree object More...
 

Protected Member Functions

virtual void inherited_dump (const pile_descriptor &pdesc, bool small) const override
 true if object has been created by sequential reading of an archive More...
 
- Protected Member Functions inherited from libdar::cat_inode
virtual void sub_compare (const cat_inode &other, bool isolated_mode) const
 
bool get_small_read () const
 
virtual void inherited_dump (const pile_descriptor &pdesc, bool small) const override
 true if object has been created by sequential reading of an archive More...
 
virtual void inherited_dump (const pile_descriptor &pdesc, bool small) const override
 inherited class may overload this method but shall first call the parent's inherited_dump() in the overloaded method More...
 
- Protected Member Functions inherited from libdar::cat_entree
virtual void inherited_dump (const pile_descriptor &pdesc, bool small) const
 inherited class may overload this method but shall first call the parent's inherited_dump() in the overloaded method More...
 
pileget_pile () const
 stack used to read object from (nullptr is returned for object created from filesystem) More...
 
proto_compressor * get_compressor_layer () const
 compressor generic_file relative methods More...
 
escape * get_escape_layer () const
 escape generic_file relative methods More...
 
generic_fileget_read_cat_layer (bool small) const
 return the adhoc layer in the stack to read from the catalogue objects (except the EA, FSA or Data part)
 

Private Member Functions

void init () noexcept
 
void clear ()
 
void recursive_update_sizes () const
 
void recursive_flag_size_to_update () const
 
void erase_ordered_fils (std::deque< cat_nomme * >::const_iterator debut, std::deque< cat_nomme * >::const_iterator fin)
 

Private Attributes

infinint x_size
 
infinint x_storage_size
 
bool updated_sizes
 
cat_directoryparent
 
std::deque< cat_nomme * > ordered_fils
 
std::deque< cat_nomme * >::const_iterator it
 next entry to be returned by read_children More...
 
bool recursive_has_changed
 

Static Private Attributes

static const cat_eod fin
 

Additional Inherited Members

- Static Public Member Functions inherited from libdar::cat_entree
static cat_entreeread (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &f, const archive_version &reading_ver, entree_stats &stats, std::map< infinint, cat_etoile * > &corres, compression default_algo, bool lax, bool only_detruit, bool small)
 read and create an object of inherited class of class cat_entree More...
 

Detailed Description

the cat_directory inode class

Definition at line 51 of file cat_directory.hpp.

Member Function Documentation

◆ change_location()

virtual void libdar::cat_directory::change_location ( const smart_pointer< pile_descriptor > &  pdesc)
overridevirtual

overwrite virtual method of cat_entree to propagate the action to all entries of the directory tree

Reimplemented from libdar::cat_entree.

◆ clone()

virtual cat_entree * libdar::cat_directory::clone ( ) const
inlineoverridevirtual

a way to copy the exact type of an object even if pointed to by a parent class pointer

Implements libdar::cat_entree.

Definition at line 143 of file cat_directory.hpp.

◆ get_description()

virtual std::string libdar::cat_directory::get_description ( ) const
inlineoverridevirtual

inherited class designation

Implements libdar::cat_entree.

Definition at line 105 of file cat_directory.hpp.

◆ get_dir_size()

infinint libdar::cat_directory::get_dir_size ( ) const
inline

get the number of "cat_nomme" entry directly containted in this cat_directory (no recursive call)

Definition at line 115 of file cat_directory.hpp.

◆ get_parent()

cat_directory * libdar::cat_directory::get_parent ( ) const
inline

Definition at line 98 of file cat_directory.hpp.

◆ get_recursive_has_changed()

bool libdar::cat_directory::get_recursive_has_changed ( ) const
inline

detemine whether some data has changed since archive of reference in this cat_directory or subdirectories

Definition at line 109 of file cat_directory.hpp.

◆ get_size()

const infinint & libdar::cat_directory::get_size ( ) const
inline

Definition at line 145 of file cat_directory.hpp.

◆ get_storage_size()

const infinint & libdar::cat_directory::get_storage_size ( ) const
inline

Definition at line 146 of file cat_directory.hpp.

◆ has_children()

bool libdar::cat_directory::has_children ( ) const
inline

Definition at line 82 of file cat_directory.hpp.

◆ inherited_dump()

virtual void libdar::cat_directory::inherited_dump ( const pile_descriptor &  pdesc,
bool  small 
) const
overrideprotectedvirtual

true if object has been created by sequential reading of an archive

Reimplemented from libdar::cat_inode.

◆ is_empty()

bool libdar::cat_directory::is_empty ( ) const
inline

whether this cat_directory is empty or not

Definition at line 132 of file cat_directory.hpp.

◆ operator==()

virtual bool libdar::cat_directory::operator== ( const cat_entree ref) const
overridevirtual

attention this compares only the directories themselves, not the list of their children

Reimplemented from libdar::cat_nomme.

◆ remove()

void libdar::cat_directory::remove ( const std::string &  name)

remove the given entry from the catalogue

Note
read_children() is taken into account by this operation, no need to call reset_read_children(), if the argument removed was the one about to be read by read_children() the one following the removed entry will be returned the next time read_children() is invoked.

◆ signature()

virtual unsigned char libdar::cat_directory::signature ( ) const
inlineoverridevirtual

inherited class signature

Implements libdar::cat_entree.

Definition at line 103 of file cat_directory.hpp.

Member Data Documentation

◆ fin

const cat_eod libdar::cat_directory::fin
staticprivate

Definition at line 157 of file cat_directory.hpp.

◆ it

std::deque<cat_nomme*>::const_iterator libdar::cat_directory::it
mutableprivate

next entry to be returned by read_children

Definition at line 167 of file cat_directory.hpp.

◆ ordered_fils

std::deque<cat_nomme *> libdar::cat_directory::ordered_fils
private

Definition at line 166 of file cat_directory.hpp.

◆ parent

cat_directory* libdar::cat_directory::parent
private

Definition at line 162 of file cat_directory.hpp.

◆ recursive_has_changed

bool libdar::cat_directory::recursive_has_changed
mutableprivate

Definition at line 168 of file cat_directory.hpp.

◆ updated_sizes

bool libdar::cat_directory::updated_sizes
mutableprivate

Definition at line 161 of file cat_directory.hpp.

◆ x_size

infinint libdar::cat_directory::x_size
mutableprivate

Definition at line 159 of file cat_directory.hpp.

◆ x_storage_size

infinint libdar::cat_directory::x_storage_size
mutableprivate

Definition at line 160 of file cat_directory.hpp.


The documentation for this class was generated from the following file: