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

#include <list_entry.hpp>

+ Collaboration diagram for libdar::list_entry:

Public Member Functions

 list_entry (const list_entry &ref)=default
 
 list_entry (list_entry &&ref)=default
 
list_entryoperator= (const list_entry &ref)=default
 
list_entryoperator= (list_entry &&ref) noexcept=default
 
bool is_eod () const
 method used to know whether the returned entry signals a End of Directory More...
 
const std::string & get_name () const
 
unsigned char get_type () const
 
bool is_dir () const
 
bool is_file () const
 
bool is_symlink () const
 
bool is_char_device () const
 
bool is_block_device () const
 
bool is_unix_socket () const
 
bool is_named_pipe () const
 
bool is_hard_linked () const
 
bool is_removed_entry () const
 
bool is_door_inode () const
 
bool is_empty_dir () const
 
unsigned char get_removed_type () const
 valid only for removed_entries
 
bool has_data_present_in_the_archive () const
 
std::string get_data_flag () const
 
saved_status get_data_status () const
 
bool has_EA () const
 
bool has_EA_saved_in_the_archive () const
 
std::string get_ea_flag () const
 
ea_saved_status get_ea_status () const
 
bool has_FSA () const
 
bool has_FSA_saved_in_the_archive () const
 
std::string get_fsa_flag () const
 
std::string get_uid (bool try_resolving_name=false) const
 
std::string get_gid (bool try_resolving_name=false) const
 
std::string get_perm () const
 
std::string get_last_access () const
 
std::string get_last_modif () const
 
std::string get_last_change () const
 
std::string get_removal_date () const
 for removed_entry only
 
time_t get_last_access_s () const
 
time_t get_last_modif_s () const
 
time_t get_last_change_s () const
 
time_t get_removal_date_s () const
 for removed_entry only
 
void get_last_access (datetime::time_unit tu, time_t &second, time_t &fraction) const
 yet an alternative method to get last access time More...
 
void get_last_modif (datetime::time_unit tu, time_t &second, time_t &fraction) const
 yet an alternative method to get the last modification date (see get_last_access() for details)
 
void get_last_change (datetime::time_unit tu, time_t &second, time_t &fraction) const
 yet an alternative method to get the last change date (see get_last_access() for details)
 
std::string get_file_size (bool size_in_bytes=true) const
 
std::string get_compression_ratio () const
 
std::string get_compression_ratio_flag () const
 
bool is_sparse () const
 
std::string get_sparse_flag () const
 
std::string get_compression_algo () const
 
bool is_dirty () const
 
std::string get_link_target () const
 
std::string get_major () const
 
std::string get_minor () const
 
const rangeget_slices () const
 provides slice information More...
 
bool has_delta_signature () const
 
std::string get_delta_flag () const
 
bool get_archive_offset_for_data (infinint &val) const
 offset in byte where to find first byte of data More...
 
bool get_archive_offset_for_data (U_64 &val) const
 
std::string get_archive_offset_for_data () const
 
bool get_storage_size_for_data (infinint &val) const
 amount of byte used to store the file's data More...
 
bool get_storage_size_for_data (U_64 &val) const
 
std::string get_storage_size_for_data (bool size_in_bytes=true) const
 
bool get_archive_offset_for_EA (infinint &val) const
 offset in byte whert to find the first byte of Extended Attributes More...
 
bool get_archive_offset_for_EA (U_64 &val) const
 
std::string get_archive_offset_for_EA () const
 
bool get_storage_size_for_EA (infinint &val) const
 amount of byte used to store the file's EA
 
bool get_storage_size_for_EA (U_64 &val) const
 
std::string get_storage_size_for_EA () const
 
bool get_archive_offset_for_FSA (infinint &val) const
 offset in byte where to find the first byte of Filesystem Specific Attributes More...
 
bool get_archive_offset_for_FSA (U_64 &val) const
 
std::string get_archive_offset_for_FSA () const
 
bool get_storage_size_for_FSA (infinint &val) const
 amount of byte used to store the file's FSA
 
bool get_storage_size_for_FSA (U_64 &val) const
 
std::string get_storage_size_for_FSA () const
 
void get_ea_reset_read () const
 reset the reading of Extended Attributes names More...
 
bool get_ea_read_next (std::string &key) const
 read the next Extended Attribute name More...
 
std::string get_etiquette () const
 
fsa_scope get_fsa_scope () const
 this is the hard-link ID, only valid for hard linked entries
 
std::string get_data_crc () const
 
std::string get_delta_patch_base_crc () const
 
std::string get_delta_patch_result_crc () const
 
void set_name (const std::string &val)
 
void set_type (unsigned char val)
 
void set_removed_type (unsigned char val)
 
void set_hard_link (bool val)
 
void set_uid (const infinint &val)
 
void set_gid (const infinint &val)
 
void set_perm (U_16 val)
 
void set_last_access (const datetime &val)
 
void set_last_modif (const datetime &val)
 
void set_removal_date (const datetime &val)
 
void set_saved_status (saved_status val)
 
void set_ea_status (ea_saved_status val)
 
void set_last_change (const datetime &val)
 
void set_fsa_status (fsa_saved_status val)
 
void set_file_size (const infinint &val)
 
void set_is_sparse_file (bool val)
 
void set_compression_algo (compression val)
 
void set_dirtiness (bool val)
 
void set_link_target (const std::string &val)
 
void set_major (int val)
 
void set_minor (int val)
 
void set_slices (const range &sl)
 
void set_delta_sig (bool val)
 
void set_archive_offset_for_data (const infinint &val)
 
void set_storage_size_for_data (const infinint &val)
 
void set_archive_offset_for_EA (const infinint &val)
 
void set_storage_size_for_EA (const infinint &val)
 
void set_archive_offset_for_FSA (const infinint &val)
 
void set_storage_size_for_FSA (const infinint &val)
 
void set_ea (const ea_attributs &arg)
 
void set_etiquette (const infinint &arg)
 
void set_fsa_scope (const fsa_scope &arg)
 
void set_data_crc (const crc &ptr)
 
void set_delta_patch_base_crc (const crc &ptr)
 
void set_delta_patch_result_crc (const crc &ptr)
 
void set_empty_dir (bool val)
 
void clear ()
 

Static Private Member Functions

static time_t datetime2time_t (const datetime &val)
 

Private Attributes

std::string my_name
 
bool hard_link
 
unsigned char type
 
infinint uid
 
infinint gid
 
U_16 perm
 
datetime last_access
 
datetime last_modif
 also used to store removal_date for removed entries
 
saved_status data_status
 
ea_saved_status ea_status
 
datetime last_change
 
fsa_saved_status fsa_status
 
fsa_scope fsa_sc
 
infinint file_size
 
bool sparse_file
 
compression compression_algo
 
bool dirty
 
std::string target
 target[0] used to store signature of removed entry for removed entries
 
int major
 
int minor
 
range slices
 
bool delta_sig
 
infinint offset_for_data
 
infinint storage_size_for_data
 
infinint offset_for_EA
 
infinint storage_size_for_EA
 
infinint offset_for_FSA
 
infinint storage_size_for_FSA
 
std::deque< std::string > ea
 
std::deque< std::string >::const_iterator it_ea
 
infinint etiquette
 hard link identification
 
std::string data_crc
 
std::string patch_base_crc
 
std::string patch_result_crc
 
bool empty_dir
 

Detailed Description

the list_entry class provides mean to get information about a particular entry in the archive

it provides methods for libdar to fill up such object and methods for API user to read the information. Each information uses its own method, thus it will require several call to different method to get the full description of the object. This has the advantage to let the possiblity to add new fields in the future without breaking anything in API, and in consequences in user programs.

Definition at line 59 of file list_entry.hpp.

Member Function Documentation

◆ get_archive_offset_for_data()

bool libdar::list_entry::get_archive_offset_for_data ( infinint val) const
inline

offset in byte where to find first byte of data

Note
: return false if no data is present, else set the argument
: offset is counted whatever is the number of slice as if there all slice were sticked toghether. But the first bytes of each slice do not count as they hold the slice header. This one is variable but can be known using the archive::get_first_slice_header_size() and archive::get_non_first_slice_header_size() methods from the current archive class. If encryption is used it is not possible to translate precisely from archive offset to slice offset, the encryption layer depending on the algorithm used may introduce an additional shift between clear data offset an corresponding ciphered data offset.
if an U_64 cannot handle such large value, false is returned, you should use the infinint of std::string version of this method

Definition at line 168 of file list_entry.hpp.

References libdar::infinint::is_zero().

◆ get_archive_offset_for_EA()

bool libdar::list_entry::get_archive_offset_for_EA ( infinint val) const
inline

offset in byte whert to find the first byte of Extended Attributes

Note
see note for get_archive_offset_for_data(infinint)
if an U_64 cannot handle such large value, false is returned, you should use the infinint of std::string version of this method

Definition at line 185 of file list_entry.hpp.

References libdar::infinint::is_zero().

◆ get_archive_offset_for_FSA()

bool libdar::list_entry::get_archive_offset_for_FSA ( infinint val) const
inline

offset in byte where to find the first byte of Filesystem Specific Attributes

Note
see note for get_archive_offset_for_data(infinint)
if an U_64 cannot handle such large value, false is returned, you should use the infinint of std::string version of this method

Definition at line 199 of file list_entry.hpp.

References libdar::infinint::is_zero().

◆ get_ea_read_next()

bool libdar::list_entry::get_ea_read_next ( std::string &  key) const

read the next Extended Attribute name

Parameters
[out]keyis set to the EA name
Returns
true if some other attribute can be read, false if this one is the last
Note
to have list_entry objects filled with this information you need to activate it in archive options listing (archive::op_listing) of set fetch_ea to true in archive::get_children_of() and in archive_get_children_in_table()

◆ get_ea_reset_read()

void libdar::list_entry::get_ea_reset_read ( ) const
inline

reset the reading of Extended Attributes names

Note
see get_ea_read_next()

Definition at line 211 of file list_entry.hpp.

◆ get_last_access()

void libdar::list_entry::get_last_access ( datetime::time_unit  tu,
time_t &  second,
time_t &  fraction 
) const
inline

yet an alternative method to get last access time

Parameters
[in]tutime unit to be used to store fraction (libdar::datetime::tu_microsecond, libdar::datetime::tu_nanosecond,...)
[out]secondinteger number of second
[out]fractionremaining part of the time (expressed as tu unit) to be added to "second" to get the exact time

Definition at line 125 of file list_entry.hpp.

References libdar::datetime::get_value().

◆ get_slices()

const range& libdar::list_entry::get_slices ( ) const
inline

provides slice information

Note
you must activate slice lookup from archive options for this field to me set by libdar, this operation has a additional cost in storage and computation

Definition at line 152 of file list_entry.hpp.

◆ get_storage_size_for_data()

bool libdar::list_entry::get_storage_size_for_data ( infinint val) const
inline

amount of byte used to store the file's data

Note
if an U_64 cannot handle such large value, false is returned, you should use the infinint of std::string version of this method

Definition at line 176 of file list_entry.hpp.

References libdar::infinint::is_zero().

◆ is_eod()

bool libdar::list_entry::is_eod ( ) const
inline

method used to know whether the returned entry signals a End of Directory

Note
such entry does not contain any valid information, it signals the next entry will be taken from the parent directory, instead of the current directory. Such entry is necessary for archive::op_listing

Definition at line 74 of file list_entry.hpp.


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