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

interface to fileystem for FSA More...

#include <filesystem_specific_attribute.hpp>

+ Collaboration diagram for libdar::filesystem_specific_attribute_list:

Public Member Functions

 filesystem_specific_attribute_list (const filesystem_specific_attribute_list &ref)
 
filesystem_specific_attribute_listoperator= (const filesystem_specific_attribute_list &ref)
 
void clear ()
 clear all attributes
 
void add (const filesystem_specific_attribute &fsa)
 add an fsa to the list
 
fsa_scope get_fsa_families () const
 gives the set of FSA family present in the list
 
bool is_included_in (const filesystem_specific_attribute_list &ref, const fsa_scope &scope) const
 compare two lists of FSA to see whether they have equal FSA with identical values within the given family scope
 
void read (generic_file &f, archive_version ver)
 read FSA list from archive
 
void write (generic_file &f) const
 write FSA list to archive
 
void get_fsa_from_filesystem_for (user_interaction &ui, const std::string &target, const fsa_scope &scope, mode_t itype, bool auto_zeroing_neg_dates)
 read FSA list from filesystem
 
bool has_linux_immutable_set () const
 return true if this FSA_list contains linux FSA with the immutable attribute set to true
 
bool set_fsa_to_filesystem_for (const std::string &target, const fsa_scope &scope, user_interaction &ui, bool set_linux_immutable) const
 
bool empty () const
 whether the list has at least one FSA
 
U_I size () const
 access to members of the list
 
const filesystem_specific_attributeoperator[] (U_I arg) const
 provide reference to FSA given its index
 
infinint storage_size () const
 give the storage size for the EA
 
filesystem_specific_attribute_list operator+ (const filesystem_specific_attribute_list &arg) const
 addition operator More...
 
bool find (fsa_family fam, fsa_nature nat, const filesystem_specific_attribute *&ptr) const
 look for the FSA of given familly and nature More...
 

Private Member Functions

void copy_from (const filesystem_specific_attribute_list &ref)
 
void update_familes ()
 
void priv_add (const filesystem_specific_attribute &ref)
 
void sort_fsa ()
 
void fill_extX_FSA_with (const std::string &target, mode_t itype)
 
void fill_HFS_FSA_with (user_interaction &ui, const std::string &target, mode_t itype, bool auto_zeroing_neg_dates)
 
bool set_extX_FSA_to (user_interaction &ui, const std::string &target, bool set_immutable) const
 
bool set_hfs_FSA_to (user_interaction &ui, const std::string &target) const
 

Static Private Member Functions

static std::string family_to_signature (fsa_family f)
 
static std::string nature_to_signature (fsa_nature n)
 
static fsa_family signature_to_family (const std::string &sig)
 
static fsa_nature signature_to_nature (const std::string &sig)
 

Private Attributes

std::deque< filesystem_specific_attribute * > fsa
 
fsa_scope familes
 

Detailed Description

interface to fileystem for FSA

Definition at line 137 of file filesystem_specific_attribute.hpp.

Member Function Documentation

◆ find()

bool libdar::filesystem_specific_attribute_list::find ( fsa_family  fam,
fsa_nature  nat,
const filesystem_specific_attribute *&  ptr 
) const

look for the FSA of given familly and nature

Parameters
[in]famfamily of the FSA to look for
[in]natnature of the FSA to look for
[in,out]ptrpoints to the FSA if found
Returns
true if such an FSA has been found and set ptr accordingly else return false

◆ operator+()

filesystem_specific_attribute_list libdar::filesystem_specific_attribute_list::operator+ ( const filesystem_specific_attribute_list arg) const

addition operator

Note
this operator is not reflexive (or symetrical if you prefer). Here "a + b" may differ from "b + a" all FSA of the arg are added with overwriting to the FSA of 'this'

◆ set_extX_FSA_to()

bool libdar::filesystem_specific_attribute_list::set_extX_FSA_to ( user_interaction ui,
const std::string &  target,
bool  set_immutable 
) const
private
Note
return true if some FSA could be set
Parameters
[in]uiuser interaction
[in]targetthe target to assign the FSA to
[in]set_immutablewhether to ignore or set the immutable flag when present

◆ set_fsa_to_filesystem_for()

bool libdar::filesystem_specific_attribute_list::set_fsa_to_filesystem_for ( const std::string &  target,
const fsa_scope scope,
user_interaction ui,
bool  set_linux_immutable 
) const

set FSA list to filesystem

Parameters
[in]targetpath of file to restore FSA to
[in]scopelist of FSA families to only consider
[in]uiuser interaction object
[in]set_linux_immutablewhether to restore the only linux immutable flag or ignore it and restore the rest
Returns
true if some FSA have effectively been set, false if no FSA could be set either because list was empty of all FSA in the list where out of scope

◆ set_hfs_FSA_to()

bool libdar::filesystem_specific_attribute_list::set_hfs_FSA_to ( user_interaction ui,
const std::string &  target 
) const
private
Note
return true if some FSA could be set

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