Disk ARchive  2.7.13
Full featured and portable backup and archiving tool
Files | Classes | Macros | Typedefs | Enumerations | Enumerator | Functions | Variables | Friends
API

APlication Interface. More...

+ Collaboration diagram for API:

Files

file  archive.hpp
 the archive class is defined in this module
 
file  archive_aux.hpp
 set of datastructures used to interact with a catalogue object
 
file  archive_listing_callback.hpp
 definition of the user defined callback function used for archive listing
 
file  archive_num.hpp
 class storing the position of an archive inside a database
 
file  archive_options.hpp
 this file contains a set of classes used to transmit options to archive operation
 
file  archive_options_listing_shell.hpp
 this file contains shell_interaction options class for listing
 
file  archive_summary.hpp
 datastructure returned by archive::summary_data
 
file  archive_version.hpp
 class archive_version that rules which archive format to follow
 
file  compile_time_features.hpp
 nested namespace containing routines that give features activated at compile time
 
file  compression.hpp
 compression parameters for API
 
file  crit_action.hpp
 contains classes that let the user define the policy for overwriting files
 
file  criterium.hpp
 contains classes that let the user define the policy for overwriting files
 
file  crypto.hpp
 the crypto algoritm definition
 
file  database.hpp
 this file holds the database class definition
 
file  database_archives.hpp
 this file stores the list of archives a database has been built from. it is part of the database header
 
file  database_aux.hpp
 set of datastructures used to interact with a database object
 
file  database_listing_callback.hpp
 definition of the user defined callback function used for database listing
 
file  database_options.hpp
 this file holds the options for database operations
 
file  datetime.hpp
 this file contains the definition of class datetime that stores unix times in a portable way
 
file  deci.hpp
 manages the decimal representation of infinint
 
file  delta_sig_block_size.hpp
 structure used to define how to select block size for delta signature
 
file  entree_stats.hpp
 datastructure holding the nature of file present in a given archive
 
file  entrepot.hpp
 defines the entrepot interface.
 
file  entrepot_libcurl.hpp
 defines the implementation for remote filesystem entrepot using libcurl
 
file  entrepot_libcurl5.hpp
 defines the implementation for remote filesystem entrepot using libcurl
 
file  erreurs.hpp
 contains all the excetion class thrown by libdar
 
file  fsa_family.hpp
 filesystem specific attributes available families and fsa_scope definition
 
file  get_version.hpp
 routine to initialize libdar and manage its running threads
 
file  infinint.hpp
 switch module to limitint (32 ou 64 bits integers) or infinint
 
file  integers.hpp
 are defined here basic integer types that tend to be portable
 
file  libdar.hpp
 the main file of the libdar API definitions
 
file  libdar_slave.hpp
 API for dar_slave functionnality.
 
file  libdar_xform.hpp
 API for dar_xform functionnality.
 
file  limitint.hpp
 the reviewed implementation of infinint based on system limited integers
 
file  list_entry.hpp
 class of objects describing an entry in the archive, used by archive::get_children_in_table
 
file  mask.hpp
 here lies a collection of mask classes
 
file  mask_list.hpp
 here lies a mask that selects files present in a given list
 
file  mycurl_protocol.hpp
 datastructure defining the network protocols available for entrepot_libcurl class
 
file  path.hpp
 here is the definition of the path class
 
file  range.hpp
 class than provide a way to manipulate and represent range of integer numbers (infinint)
 
file  real_infinint.hpp
 the original infinint class implementation
 
file  secu_string.hpp
 this file contains the definition of secu_string class, a std::string like class but allocated in secure memory
 
file  shell_interaction.hpp
 user_interaction class used by default
 
file  shell_interaction_emulator.hpp
 wrapper class that given a user_interaction send it the shell_interaction formatted output
 
file  statistics.hpp
 class handling access to the data summary of treated files after and during each operation
 
file  thread_cancellation.hpp
 to be able to cancel libdar operation while running in a given thread.
 
file  user_interaction.hpp
 defines the interaction interface between libdar and users.
 
file  user_interaction_blind.hpp
 defines the interaction between libdar and a non communcant "blind" user
 
file  user_interaction_callback.hpp
 defines the interaction between libdar and the user based on callback functions
 

Classes

class  libdar::archive
 the archive class realizes the most general operations on archives More...
 
class  libdar::archive_num
 class archive_num stores the position of an archive inside a dar_manager database More...
 
class  libdar::archive_options_read
 class holding optional parameters used to read an existing archive More...
 
class  libdar::archive_options_create
 class holding optional parameters used to create an archive More...
 
class  libdar::archive_options_isolate
 class holding optional parameters used to isolate an existing archive More...
 
class  libdar::archive_options_merge
 class holding optional parameters used to proceed to the merge operation More...
 
class  libdar::archive_options_extract
 class holding optional parameters used to extract files from an existing archive More...
 
class  libdar::archive_options_listing
 class holding optional parameters used to list the contents of an existing archive More...
 
class  libdar::archive_options_test
 class holding optional parameters used to test the structure coherence of an existing archive More...
 
class  libdar::archive_options_repair
 class holding optional parameters used to create an archive More...
 
class  libdar::archive_options_listing_shell
 class holding optional shell specific parameters used to list the contents of an existing archive More...
 
class  libdar::archive_summary
 the archive_summary class provides information about a given archive More...
 
class  libdar::archive_version
 class archive_version manages the version of the archive format More...
 
class  libdar::archive::i_archive
 the archive::i_archive class implements the most general operations on archives More...
 
class  libdar::Enet_auth
 exception used to report authentication error More...
 
class  libdar::Esystem
 exception used to carry system error More...
 
class  libdar::Ethread_cancel
 exception used when the thread libdar is running in is asked to stop More...
 
class  libdar::Ecompilation
 exception used when a requested fearture has not beed activated at compilation time More...
 
class  libdar::Elibcall
 exception used to signal an error in the argument given to libdar call of the API More...
 
class  libdar::Escript
 exception used when error the inter-slice user command returned an error code More...
 
class  libdar::Edata
 exception used when an error concerning the treated data has been met More...
 
class  libdar::Euser_abort
 exception used to signal that the user has aborted the operation More...
 
class  libdar::Ehardware
 exception used when hardware problem is found More...
 
class  libdar::Efeature
 exception used when a requested feature is not (yet) implemented More...
 
class  libdar::Edeci
 exception used to signal convertion problem between infinint and string (decimal representation) More...
 
class  libdar::Erange
 exception used to signal range error More...
 
class  libdar::Elimitint
 exception used when a limitint overflow is detected, the maximum value of the limitint has been exceeded More...
 
class  libdar::Einfinint
 exception used when arithmetic error is detected when operating on infinint More...
 
class  libdar::Ebug
 exception used to signal a bug. A bug is triggered when reaching some code that should never be reached More...
 
class  libdar::Esecu_memory
 exception used when secure memory has been exhausted More...
 
class  libdar::Ememory
 exception used when memory has been exhausted More...
 
class  libdar::Egeneric
 this is the parent class of all exception classes. More...
 
class  libdar::entrepot_libcurl
 for managing archive into a remote repository More...
 
class  libdar::entrepot
 the Entrepot interface More...
 
struct  libdar::entree_stats
 holds the statistics contents of a catalogue More...
 
class  libdar::deci
 decimal class, convert infinint from and to decimal represention More...
 
class  libdar::datetime
 stores time information More...
 
class  libdar::database_used_options
 options for file "used" in archive More...
 
class  libdar::database_restore_options
 options for restoration from database More...
 
class  libdar::database_change_path_options
 options for changing a given archive's path More...
 
class  libdar::database_change_basename_options
 options for changing a given archive's basename More...
 
class  libdar::database_remove_options
 options to remove an archive from the base More...
 
class  libdar::database_add_options
 options to add an archive to base More...
 
class  libdar::database_dump_options
 options to write a database to file More...
 
class  libdar::database_open_options
 options to open a database More...
 
class  libdar::database_archives
 datastructure managing a member of the list of archives used by a database More...
 
class  libdar::database
 the database class defines the dar_manager database More...
 
struct  libdar::signator
 signator status More...
 
class  libdar::crit_and
 realises the AND operator More...
 
class  libdar::crit_not
 realises the negation of the criterium given in argument to its constructor More...
 
class  libdar::crit_same_type
 returns true if the two entries are of the same type (plain-file/char dev/block dev/named pipe/symlink/directory/unix socket) More...
 
class  libdar::crit_in_place_EA_saved
 returns true if the in place entry has its EA saved (not just marked as saved) in the archve of reference More...
 
class  libdar::crit_in_place_EA_bigger
 returns true if the space used by EA of the first entry is greater or equal to the space used by the EA of the second entry (no EA means 0 byte for EA storage) More...
 
class  libdar::crit_in_place_more_EA
 returns true if the first entry has more or even EA (in number not in size) than the second entry More...
 
class  libdar::crit_in_place_EA_more_recent_or_equal_to
 returns true if the EA of the first entry is more recent or equal to the fixed date given in argument to the constructor More...
 
class  libdar::crit_in_place_EA_more_recent
 returns true if the EA of the first entry is more recent or equal to the one of the second entry More...
 
class  libdar::crit_in_place_EA_present
 
class  libdar::crit_same_inode_data
 returns true if both inputs are inode of the same type (file/pipe/device/...) and share inode information More...
 
class  libdar::crit_in_place_has_delta_sig
 return true if the entry has delta signature More...
 
class  libdar::crit_in_place_data_sparse
 return true if the entry is a sparse file (or hard linked sparse file) More...
 
class  libdar::crit_in_place_data_dirty
 return true if the entry is a dirty file (or hard linked dirty file) More...
 
class  libdar::crit_in_place_data_saved
 if the entry is not an inode the result is also true More...
 
class  libdar::crit_in_place_data_bigger
 returns true if the data of the first entry is bigger or equal to the one of the second entry More...
 
class  libdar::crit_in_place_data_more_recent_or_equal_to
 If the in_place entry is not an inode its date is considered equal to zero. Comparison is done on mtime. More...
 
class  libdar::crit_in_place_data_more_recent
 returns true if the data of the first entry is more recent or of the same date of the one of the second entry More...
 
class  libdar::crit_in_place_is_new_hardlinked_inode
 
class  libdar::crit_in_place_is_hardlinked_inode
 returns true if the first entry is a inode with several hard links (whatever is the second entry) More...
 
class  libdar::crit_in_place_is_file
 returns true if the first entry is a plain file (whatever is the second) More...
 
class  libdar::crit_in_place_is_dir
 returns true if the first entry is a cat_directory (whatever is the second) More...
 
class  libdar::crit_in_place_is_inode
 returns true if the first entry is an inode (whatever is the second) More...
 
class  libdar::criterium
 the generic criterium class, parent of all criterium More...
 
class  libdar::crit_chain
 the crit_chain class sequences crit_actions up to full definition of the action More...
 
class  libdar::testing
 the testing class binds criterium to actions More...
 
class  libdar::crit_constant_action
 the basic constant action More...
 
class  libdar::crit_action
 the global action for overwriting More...
 
class  libdar::libdar_slave
 class implementing the dar_slave feature More...
 
class  libdar::libdar_xform
 class implementing the dar_xform feature More...
 
class  libdar::limitint< B >
 
class  libdar::list_entry
 
class  libdar::mask
 the generic class, parent of all masks More...
 
class  libdar::bool_mask
 boolean mask, either always true or false More...
 
class  libdar::simple_mask
 matches as done on shell command lines (see "man 7 glob") More...
 
class  libdar::regular_mask
 matches regular expressions (see "man 7 regex") More...
 
class  libdar::not_mask
 negation of another mask More...
 
class  libdar::et_mask
 makes an AND operator between two or more masks More...
 
class  libdar::ou_mask
 makes the OR operator between two or more masks More...
 
class  libdar::simple_path_mask
 string matches if it is subdir of mask or mask is a subdir of expression More...
 
class  libdar::same_path_mask
 matches if string is exactly the given mask (no wilde card expression) More...
 
class  libdar::exclude_dir_mask
 matches if string is the given constructor string or a sub directory of it More...
 
class  libdar::mask_list
 the mask_list class, matches string that are present in a given file More...
 
class  libdar::path
 the class path is here to manipulate paths in the Unix notation: using'/' More...
 
class  libdar::range
 stores a range of integers or a set of ranges More...
 
class  libdar::infinint
 the arbitrary large positive integer class More...
 
class  libdar::secu_string
 class secu_string More...
 
class  libdar::user_interaction
 This is a pure virtual class that is used by libdar when interaction with the user is required. More...
 
class  libdar::user_interaction_blind
 full implementation class for user_interaction, which shows nothing and assumes answer "no" to any question More...
 
class  libdar::user_interaction_callback
 full implemented class for user_interaction based on callback functions. More...
 

Macros

#define SRC_BUG   Ebug(__FILE__, __LINE__)
 
#define OPERATOR(OP)
 

Typedefs

using libdar::archive_listing_callback = void(*)(const std::string &the_path, const list_entry &entry, void *context)
 callback function type expected for archive::op_listing and archive::get_children_of()
 
using libdar::database_archives_list = std::deque< database_archives >
 list of archives found in a database More...
 
using libdar::database_listing_show_files_callback = void(*)(void *context, const std::string &filename, bool available_data, bool available_ea)
 called by the database::get_files() routine More...
 
using libdar::database_listing_get_version_callback = 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)
 called with the information of presence for an entry in archive number num More...
 
using libdar::database_listing_statistics_callback = void(*)(void *context, U_I number, const infinint &data_count, const infinint &total_data, const infinint &ea_count, const infinint &total_ea)
 called with teh information of statistics for each archive in turn More...
 
using libdar::fsa_scope = std::set< fsa_family >
 set of fsa families
 
using libdar::limitint< B >::group = unsigned char[TG]
 
using libdar::infinint::group = unsigned char[TG]
 

Enumerations

enum class  libdar::modified_data_detection { libdar::any_inode_change , libdar::mtime_size }
 how to detect data has changed when some fields More...
 
enum class  libdar::comparison_fields { libdar::all , libdar::ignore_owner , libdar::mtime , libdar::inode_type }
 how to consider file change during comparison and incremental backup More...
 
enum class  libdar::hash_algo {
  libdar::none , libdar::md5 , libdar::sha1 , libdar::sha512 ,
  libdar::argon2
}
 hashing algorithm available More...
 
enum class  libdar::compression {
  libdar::none = 'n' , libdar::gzip = 'z' , libdar::bzip2 = 'y' , libdar::lzo = 'l' ,
  libdar::xz = 'x' , libdar::lzo1x_1_15 = 'j' , libdar::lzo1x_1 = 'k' , libdar::zstd = 'd' ,
  libdar::lz4 = 'q'
}
 the different compression algorithm available More...
 
enum  libdar::over_action_data {
  libdar::data_preserve , libdar::data_overwrite , libdar::data_preserve_mark_already_saved , libdar::data_overwrite_mark_already_saved ,
  libdar::data_remove , libdar::data_undefined , libdar::data_ask
}
 the possible actions for overwriting data More...
 
enum  libdar::over_action_ea {
  libdar::EA_preserve , libdar::EA_overwrite , libdar::EA_clear , libdar::EA_preserve_mark_already_saved ,
  libdar::EA_overwrite_mark_already_saved , libdar::EA_merge_preserve , libdar::EA_merge_overwrite , libdar::EA_undefined ,
  libdar::EA_ask
}
 the possible action for overwriting EA More...
 
enum class  libdar::crypto_algo {
  libdar::none , libdar::scrambling , libdar::blowfish , libdar::aes256 ,
  libdar::twofish256 , libdar::serpent256 , libdar::camellia256
}
 the different cypher available for encryption (strong or weak) More...
 
enum class  libdar::db_lookup { libdar::found_present , libdar::found_removed , libdar::not_found , libdar::not_restorable }
 the available status of a lookup More...
 
enum class  libdar::db_etat {
  libdar::et_saved , libdar::et_patch , libdar::et_patch_unusable , libdar::et_inode ,
  libdar::et_present , libdar::et_removed , libdar::et_absent
}
 the status for a founded entry More...
 
enum  libdar::fsa_family { fsaf_hfs_plus , fsaf_linux_extX }
 FSA family.
 
enum  libdar::fsa_nature {
  fsan_unset , fsan_creation_date , fsan_append_only , fsan_compressed ,
  fsan_no_dump , fsan_immutable , fsan_data_journaling , fsan_secure_deletion ,
  fsan_no_tail_merging , fsan_undeletable , fsan_noatime_update , fsan_synchronous_directory ,
  fsan_synchronous_update , fsan_top_of_dir_hierarchy
}
 FSA nature.
 
enum  operation { oper_create , oper_isolate , oper_merge , oper_repair }
 
enum  endian { big_endian , little_endian , not_initialized }
 
enum  libdar::mycurl_protocol { libdar::proto_ftp , libdar::proto_sftp }
 libcurl protocols supported by libdar More...
 
enum  endian { big_endian , little_endian , not_initialized }
 

Functions

 libdar::archive::archive (const std::shared_ptr< user_interaction > &dialog, const path &chem, const std::string &basename, const std::string &extension, const archive_options_read &options)
 this constructor opens an already existing archive (for reading) [this is the "read" constructor] More...
 
 libdar::archive::archive (const std::shared_ptr< user_interaction > &dialog, const path &fs_root, const path &sauv_path, const std::string &filename, const std::string &extension, const archive_options_create &options, statistics *progressive_report)
 this constuctor create an archive (full or differential) [this is the "create" constructor] More...
 
 libdar::archive::archive (const std::shared_ptr< user_interaction > &dialog, const path &sauv_path, std::shared_ptr< archive > ref_arch1, const std::string &filename, const std::string &extension, const archive_options_merge &options, statistics *progressive_report)
 this constructor builds an archive from two given archive [this is the "merge" constructor] More...
 
 libdar::archive::archive (const std::shared_ptr< user_interaction > &dialog, const path &chem_src, const std::string &basename_src, const std::string &extension_src, const archive_options_read &options_read, const path &chem_dst, const std::string &basename_dst, const std::string &extension_dst, const archive_options_repair &options_repair)
 this constructor create a new archive from a damaged one [this is the "repair" constructor] More...
 
 libdar::archive::archive (const archive &ref)=delete
 copy constructor (not implemented, throw an exception if called explicitely or implicitely) More...
 
 libdar::archive::archive (archive &&ref)=delete
 
archivelibdar::archive::operator= (const archive &ref)=delete
 
archivelibdar::archive::operator= (archive &&ref)=delete
 
 libdar::archive::~archive ()
 the destructor
 
statistics libdar::archive::op_extract (const path &fs_root, const archive_options_extract &options, statistics *progressive_report)
 extraction of data from an archive More...
 
void libdar::archive::summary ()
 display a summary of the archive More...
 
archive_summary libdar::archive::summary_data ()
 same information as summary() but as broken out data
 
void libdar::archive::op_listing (archive_listing_callback callback, void *context, const archive_options_listing &options) const
 listing of the archive contents More...
 
statistics libdar::archive::op_diff (const path &fs_root, const archive_options_diff &options, statistics *progressive_report)
 archive comparison with filesystem More...
 
statistics libdar::archive::op_test (const archive_options_test &options, statistics *progressive_report)
 test the archive integrity More...
 
void libdar::archive::op_isolate (const path &sauv_path, const std::string &filename, const std::string &extension, const archive_options_isolate &options)
 this methodes isolates the catalogue of a the current archive into a separated archive More...
 
bool libdar::archive::get_children_of (archive_listing_callback callback, void *context, const std::string &dir, bool fetch_ea=false)
 getting information about a given directory More...
 
const std::vector< list_entrylibdar::archive::get_children_in_table (const std::string &dir, bool fetch_ea=false) const
 getting information about the given directory (alternative to get_children_of) More...
 
bool libdar::archive::has_subdirectory (const std::string &dir) const
 returns true if the pointed directory has one or more subdirectories
 
const entree_stats libdar::archive::get_stats () const
 retrieving statistics about archive contents
 
const std::list< signator > & libdar::archive::get_signatories () const
 retrieving signature information about the archive
 
void libdar::archive::init_catalogue () const
 
void libdar::archive::drop_all_filedescriptors ()
 closes all filedescriptors and associated even when in sequential read mode More...
 
void libdar::archive::set_to_unsaved_data_and_FSA ()
 change all inode as unsaved (equal to differential backup with no change met)
 
U_64 libdar::archive::get_first_slice_header_size () const
 get the first slice header More...
 
U_64 libdar::archive::get_non_first_slice_header_size () const
 get the non first slice header More...
 
std::string libdar::hash_algo_to_string (hash_algo algo)
 convert hash value to human readable string
 
bool libdar::string_to_hash_algo (const std::string &arg, hash_algo &val)
 convert string to hash algorithm More...
 
U_I libdar::hash_algo_to_gcrypt_hash (hash_algo algo)
 convert hash value to libgcrypt hash value
 
unsigned char libdar::hash_algo_to_char (hash_algo algo)
 convert hash value to char value
 
hash_algo libdar::char_to_hash_algo (unsigned char arg)
 convert char to hash_algo More...
 
 libdar::archive_summary::archive_summary (const archive_summary &ref)=default
 
 libdar::archive_summary::archive_summary (archive_summary &&ref) noexcept=default
 
archive_summarylibdar::archive_summary::operator= (const archive_summary &ref)=default
 
archive_summarylibdar::archive_summary::operator= (archive_summary &&ref) noexcept=default
 
const infinintlibdar::archive_summary::get_slice_size () const
 
const infinintlibdar::archive_summary::get_first_slice_size () const
 
const infinintlibdar::archive_summary::get_last_slice_size () const
 
const infinintlibdar::archive_summary::get_ref_slice_size () const
 
const infinintlibdar::archive_summary::get_ref_first_slice_size () const
 
const infinintlibdar::archive_summary::get_slice_number () const
 
const infinintlibdar::archive_summary::get_archive_size () const
 
const infinintlibdar::archive_summary::get_catalog_size () const
 
const infinintlibdar::archive_summary::get_storage_size () const
 
const infinintlibdar::archive_summary::get_data_size () const
 
const entree_statslibdar::archive_summary::get_contents () const
 
std::string libdar::archive_summary::get_edition () const
 
std::string libdar::archive_summary::get_compression_algo () const
 
std::string libdar::archive_summary::get_user_comment () const
 
std::string libdar::archive_summary::get_cipher () const
 
std::string libdar::archive_summary::get_asym () const
 
bool libdar::archive_summary::get_signed () const
 
bool libdar::archive_summary::get_tape_marks () const
 
std::string libdar::archive_summary::get_in_place () const
 
void libdar::archive_summary::set_slice_size (const infinint &arg)
 
void libdar::archive_summary::set_first_slice_size (const infinint &arg)
 
void libdar::archive_summary::set_last_slice_size (const infinint &arg)
 
void libdar::archive_summary::set_ref_slice_size (const infinint &arg)
 
void libdar::archive_summary::set_ref_first_slice_size (const infinint &arg)
 
void libdar::archive_summary::set_slice_number (const infinint &arg)
 
void libdar::archive_summary::set_archive_size (const infinint &arg)
 
void libdar::archive_summary::set_catalog_size (const infinint &arg)
 
void libdar::archive_summary::set_storage_size (const infinint &arg)
 
void libdar::archive_summary::set_data_size (const infinint &arg)
 
void libdar::archive_summary::set_contents (const entree_stats &arg)
 
void libdar::archive_summary::set_edition (const std::string &arg)
 
void libdar::archive_summary::set_compression_algo (const std::string &arg)
 
void libdar::archive_summary::set_user_comment (const std::string &arg)
 
void libdar::archive_summary::set_cipher (const std::string &arg)
 
void libdar::archive_summary::set_asym (const std::string &arg)
 
void libdar::archive_summary::set_signed (bool arg)
 
void libdar::archive_summary::set_tape_marks (bool arg)
 
void libdar::archive_summary::set_in_place (const std::string &arg)
 
void libdar::archive_summary::clear ()
 
const archive_version libdar::empty_archive_version ()
 
compression libdar::char2compression (char a)
 convert a char as stored in archive to its compression value
 
bool libdar::char2compression_mode (char a)
 
char libdar::compression2char (compression c, bool per_block=false)
 convert a compression value to a char for storing in archive
 
std::string libdar::compression2string (compression c)
 convert a compression to its string representation
 
compression libdar::string2compression (const std::string &a)
 convert a string representing a compression algorithm to its enum compression value
 
std::string libdar::crypto_algo_2_string (crypto_algo algo)
 convert crypto algo to readable std::string
 
char libdar::crypto_algo_2_char (crypto_algo a)
 convert crypto algo to char
 
crypto_algo libdar::char_2_crypto_algo (char a)
 convert char to crypto algo
 
bool libdar::same_signatories (const std::list< signator > &a, const std::list< signator > &b)
 return whether the two signators lists match
 
archive_version libdar::db2archive_version (unsigned char db_version)
 converts dar_manager database version to dar archive version in order to properly read time fields
 
std::ostream & libdar::operator<< (std::ostream &ref, const infinint &arg)
 specific << operator to use infinint in std::ostream More...
 
const char * libdar::dar_gettext (const char *)
 a routine to change NLS domaine forth and back for inline routines
 
std::string libdar::fsa_family_to_string (fsa_family f)
 convert fsa family to readable std::string
 
std::string libdar::fsa_nature_to_string (fsa_nature n)
 convert fsa nature to readable std::string
 
fsa_scope libdar::all_fsa_families ()
 provides a scope containing all FSA families
 
infinint libdar::fsa_scope_to_infinint (const fsa_scope &val)
 convert an fsa scope to infinint
 
fsa_scope libdar::infinint_to_fsa_scope (const infinint &ref)
 convert an infinint to fsa_scape
 
std::string libdar::fsa_scope_to_string (bool saved, const fsa_scope &scope)
 convert an fsa scope to readable string
 
void libdar::get_version (U_I &major, U_I &medium, U_I &minor, bool init_libgcrypt=true)
 return the libdar version, and make libdar initialization (may throw Exceptions) More...
 
void libdar::get_version (U_I &major, U_I &medium, U_I &minor, bool init_libgcrypt, bool init_gpgme)
 returns the libdar version and make libdar initialization (may throw Exceptions) More...
 
void libdar::get_version (bool init_libgcrypt=true)
 this method is to be used when you don't want to bother with major, medium and minor
 
void libdar::close_and_clean ()
 
 libdar::archive::i_archive::i_archive (const std::shared_ptr< user_interaction > &dialog, const path &chem, const std::string &basename, const std::string &extension, const archive_options_read &options)
 this constructor opens an already existing archive (for reading) [this is the "read" constructor]
 
 libdar::archive::i_archive::i_archive (const std::shared_ptr< user_interaction > &dialog, const path &fs_root, const path &sauv_path, const std::string &filename, const std::string &extension, const archive_options_create &options, statistics *progressive_report)
 this constuctor create an archive (full or differential) [this is the "create" constructor]
 
 libdar::archive::i_archive::i_archive (const std::shared_ptr< user_interaction > &dialog, const path &sauv_path, std::shared_ptr< archive > ref_arch1, const std::string &filename, const std::string &extension, const archive_options_merge &options, statistics *progressive_report)
 this constructor builds an archive from two given archive [this is the "merge" constructor]
 
 libdar::archive::i_archive::i_archive (const std::shared_ptr< user_interaction > &dialog, const path &chem_src, const std::string &basename_src, const std::string &extension_src, const archive_options_read &options_read, const path &chem_dst, const std::string &basename_dst, const std::string &extension_dst, const archive_options_repair &options_repair)
 this constructor create a new archive from a damaged one [this is the "repair" constructor]
 
 libdar::archive::i_archive::i_archive (const i_archive &ref)=delete
 copy constructor (not implemented, throw an exception if called explicitely or implicitely)
 
 libdar::archive::i_archive::i_archive (i_archive &&ref)=delete
 
i_archivelibdar::archive::i_archive::operator= (const i_archive &ref)=delete
 
i_archivelibdar::archive::i_archive::operator= (i_archive &&ref)=delete
 
 libdar::archive::i_archive::~i_archive ()
 the destructor
 
statistics libdar::archive::i_archive::op_extract (const path &fs_root, const archive_options_extract &options, statistics *progressive_report)
 extraction of data from an archive
 
void libdar::archive::i_archive::summary ()
 display a summary of the archive
 
archive_summary libdar::archive::i_archive::summary_data ()
 same information as summary() but as broken out data
 
void libdar::archive::i_archive::op_listing (archive_listing_callback callback, void *context, const archive_options_listing &options) const
 listing of the archive contents
 
statistics libdar::archive::i_archive::op_diff (const path &fs_root, const archive_options_diff &options, statistics *progressive_report)
 archive comparison with filesystem
 
statistics libdar::archive::i_archive::op_test (const archive_options_test &options, statistics *progressive_report)
 test the archive integrity
 
void libdar::archive::i_archive::op_isolate (const path &sauv_path, const std::string &filename, const std::string &extension, const archive_options_isolate &options)
 this methodes isolates the catalogue of a the current archive into a separated archive
 
bool libdar::archive::i_archive::get_children_of (archive_listing_callback callback, void *context, const std::string &dir, bool fetch_ea=false)
 getting information about a given directory
 
const std::vector< list_entrylibdar::archive::i_archive::get_children_in_table (const std::string &dir, bool fetch_ea=false) const
 getting information about the given directory (alternative to get_children_of)
 
bool libdar::archive::i_archive::has_subdirectory (const std::string &dir) const
 returns true if the pointed directory has one or more subdirectories
 
const entree_stats libdar::archive::i_archive::get_stats () const
 retrieving statistics about archive contents
 
const std::list< signator > & libdar::archive::i_archive::get_signatories () const
 retrieving signature information about the archive
 
void libdar::archive::i_archive::init_catalogue () const
 
const cataloguelibdar::archive::i_archive::get_catalogue () const
 gives access to internal catalogue (not to be used from the API)
 
void libdar::archive::i_archive::drop_all_filedescriptors ()
 closes all filedescriptors and associated even when in sequential read mode
 
void libdar::archive::i_archive::set_to_unsaved_data_and_FSA ()
 change all inode as unsaved (equal to differential backup with no change met)
 
bool libdar::archive::i_archive::get_catalogue_slice_layout (slice_layout &slicing) const
 returns the slice layout of the archive, or of the archive of reference in case of isolated catalogue
 
U_64 libdar::archive::i_archive::get_first_slice_header_size () const
 get the first slice header
 
U_64 libdar::archive::i_archive::get_non_first_slice_header_size () const
 get the non first slice header
 
void libdar::archive::i_archive::free_mem ()
 
void libdar::archive::i_archive::check_gnupg_signed () const
 
const cataloguelibdar::archive::i_archive::get_cat () const
 
const header_versionlibdar::archive::i_archive::get_header () const
 
bool libdar::archive::i_archive::get_sar_param (infinint &sub_file_size, infinint &first_file_size, infinint &last_file_size, infinint &total_file_number)
 
std::shared_ptr< entrepotlibdar::archive::i_archive::get_entrepot ()
 this method may return nullptr if no entrepot is used (pipes used for archive building, etc.)
 
infinint libdar::archive::i_archive::get_level2_size ()
 
infinint libdar::archive::i_archive::get_cat_size () const
 
statistics libdar::archive::i_archive::op_create_in (operation op, const path &fs_root, const std::shared_ptr< entrepot > &sauv_path_t, archive *ref_arch, const mask &selection, const mask &subtree, const std::string &filename, const std::string &extension, bool allow_over, bool warn_over, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, bool display_finished, const infinint &pause, bool empty_dir, compression algo, U_I compression_level, U_I compression_block_size, const infinint &file_size, const infinint &first_file_size, const mask &ea_mask, const std::string &execute, crypto_algo crypto, const secu_string &pass, U_32 crypto_size, const std::vector< std::string > &gnupg_recipients, const std::vector< std::string > &gnupg_signatories, const mask &compr_mask, const infinint &min_compr_size, bool nodump, const std::string &exclude_by_ea, const infinint &hourshift, bool empty, bool alter_atime, bool furtive_read_mode, const filesystem_ids &same_fs, comparison_fields what_to_check, bool snapshot, bool cache_directory_tagging, const infinint &fixed_date, const std::string &slice_permission, const infinint &repeat_count, const infinint &repeat_byte, bool add_marks_for_sequential_reading, bool security_check, const infinint &sparse_file_min_size, const std::string &user_comment, hash_algo hash, const infinint &slice_min_digits, const std::string &backup_hook_file_execute, const mask &backup_hook_file_mask, bool ignore_unknown, const fsa_scope &scope, U_I multi_threaded_crypto, U_I multi_threaded_compress, bool delta_signature, bool build_delta_sig, const mask &delta_mask, const infinint &delta_sig_min_size, bool delta_diff, bool zeroing_neg_date, const std::set< std::string > &ignored_symlinks, modified_data_detection mod_data_detect, const infinint &iteration_count, hash_algo kdf_hash, const delta_sig_block_size &sig_block_len, statistics *progressive_report)
 
void libdar::archive::i_archive::op_create_in_sub (operation op, const path &fs_root, const std::shared_ptr< entrepot > &sauv_path_t, catalogue *ref_cat1, const catalogue *ref_cat2, bool initial_pause, const mask &selection, const mask &subtree, const std::string &filename, const std::string &extension, bool allow_over, const crit_action &overwrite, bool warn_over, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, bool display_finished, const infinint &pause, bool empty_dir, compression algo, U_I compression_level, U_I compression_block_size, const infinint &file_size, const infinint &first_file_size, const mask &ea_mask, const std::string &execute, crypto_algo crypto, const secu_string &pass, U_32 crypto_size, const std::vector< std::string > &gnupg_recipients, const std::vector< std::string > &gnupg_signatories, const mask &compr_mask, const infinint &min_compr_size, bool nodump, const std::string &exclude_by_ea, const infinint &hourshift, bool empty, bool alter_atime, bool furtive_read_mode, const filesystem_ids &same_fs, comparison_fields what_to_check, bool snapshot, bool cache_directory_tagging, bool keep_compressed, const infinint &fixed_date, const std::string &slice_permission, const infinint &repeat_count, const infinint &repeat_byte, bool decremental, bool add_marks_for_sequential_reading, bool security_check, const infinint &sparse_file_min_size, const std::string &user_comment, hash_algo hash, const infinint &slice_min_digits, const std::string &backup_hook_file_execute, const mask &backup_hook_file_mask, bool ignore_unknown, const fsa_scope &scope, U_I multi_threaded_crypto, U_I multi_threaded_compress, bool delta_signature, bool build_delta_sig, const mask &delta_mask, const infinint &delta_sig_min_size, bool delta_diff, bool zeroing_neg_date, const std::set< std::string > &ignored_symlinks, modified_data_detection mod_data_detect, const infinint &iteration_count, hash_algo kdf_hash, const delta_sig_block_size &sign_block_len, statistics *st_ptr)
 
void libdar::archive::i_archive::disable_natural_destruction ()
 
void libdar::archive::i_archive::enable_natural_destruction ()
 
const labellibdar::archive::i_archive::get_layer1_data_name () const
 
const labellibdar::archive::i_archive::get_catalogue_data_name () const
 
bool libdar::archive::i_archive::only_contains_an_isolated_catalogue () const
 true if the current archive only contains an isolated catalogue
 
void libdar::archive::i_archive::check_against_isolation (bool lax) const
 throw Erange exception if the archive only contains an isolated catalogue
 
const cat_directorylibdar::archive::i_archive::get_dir_object (const std::string &dir) const
 
void libdar::archive::i_archive::load_catalogue ()
 
 libdar::limitint< B >::limitint (size_t a=0)
 
 libdar::limitint< B >::limitint (proto_generic_file &x)
 
 libdar::limitint< B >::limitint (const limitint &ref)=default
 
 libdar::limitint< B >::limitint (limitint &&ref) noexcept=default
 
limitintlibdar::limitint< B >::operator= (const limitint &ref)=default
 
limitintlibdar::limitint< B >::operator= (limitint &&ref) noexcept=default
 
void libdar::limitint< B >::dump (proto_generic_file &x) const
 
void libdar::limitint< B >::read (proto_generic_file &f)
 
limitintlibdar::limitint< B >::operator+= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator-= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator*= (const limitint &ref)
 
template<class T >
limitint libdar::limitint< B >::power (const T &exponent) const
 
limitintlibdar::limitint< B >::operator/= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator%= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator&= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator|= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator^= (const limitint &ref)
 
limitintlibdar::limitint< B >::operator>>= (U_32 bit)
 
limitintlibdar::limitint< B >::operator>>= (limitint bit)
 
limitintlibdar::limitint< B >::operator<<= (U_32 bit)
 
limitintlibdar::limitint< B >::operator<<= (limitint bit)
 
limitint libdar::limitint< B >::operator++ (int a)
 
limitint libdar::limitint< B >::operator-- (int a)
 
limitintlibdar::limitint< B >::operator++ ()
 
limitintlibdar::limitint< B >::operator-- ()
 
U_32 libdar::limitint< B >::operator% (U_32 arg) const
 
template<class T >
void libdar::limitint< B >::unstack (T &v)
 
limitint libdar::limitint< B >::get_storage_size () const
 
unsigned char libdar::limitint< B >::operator[] (const limitint &position) const
 
bool libdar::limitint< B >::is_zero () const
 
bool libdar::limitint< B >::operator< (const limitint &x) const
 
bool libdar::limitint< B >::operator== (const limitint &x) const
 
bool libdar::limitint< B >::operator> (const limitint &x) const
 
bool libdar::limitint< B >::operator<= (const limitint &x) const
 
bool libdar::limitint< B >::operator!= (const limitint &x) const
 
bool libdar::limitint< B >::operator>= (const limitint &x) const
 
static bool libdar::limitint< B >::is_system_big_endian ()
 
libdar::limitint< B >::debug_get_max () const
 
libdar::limitint< B >::debug_get_bytesize () const
 
libdar::limitint< B >::debug_get_field () const
 
void libdar::limitint< B >::build_from_file (proto_generic_file &x)
 
template<class T >
void libdar::limitint< B >::limitint_from (T a)
 
template<class T >
libdar::limitint< B >::max_val_of (T x)
 
template<class T >
void libdar::limitint< B >::limitint_unstack_to (T &a)
 
static void libdar::limitint< B >::setup_endian ()
 
template<class B >
limitint< B > libdar::operator+ (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > libdar::operator+ (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > libdar::operator- (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > libdar::operator- (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > libdar::operator* (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > libdar::operator* (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > libdar::operator/ (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > libdar::operator/ (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > libdar::operator% (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > libdar::operator>> (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > libdar::operator>> (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > libdar::operator<< (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > libdar::operator<< (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > libdar::operator& (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > libdar::operator& (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > libdar::operator| (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > libdar::operator| (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > libdar::operator^ (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > libdar::operator^ (const limitint< B > &a, const limitint< B > &bit)
 
template<class T >
void libdar::euclide (T a, T b, T &q, T &r)
 
template<class B >
void libdar::euclide (limitint< B > a, U_I b, limitint< B > &q, limitint< B > &r)
 
mycurl_protocol libdar::string_to_mycurl_protocol (const std::string &arg)
 extract mycurl_protocol from a given URL
 
 libdar::infinint::infinint (size_t a=0)
 
 libdar::infinint::infinint (proto_generic_file &x)
 read an infinint from a file
 
 libdar::infinint::infinint (const infinint &ref)
 
 libdar::infinint::infinint (infinint &&ref) noexcept
 
infinintlibdar::infinint::operator= (const infinint &ref)
 
infinintlibdar::infinint::operator= (infinint &&ref) noexcept
 
void libdar::infinint::dump (proto_generic_file &x) const
 
void libdar::infinint::read (proto_generic_file &f)
 
infinintlibdar::infinint::operator+= (const infinint &ref)
 
infinintlibdar::infinint::operator-= (const infinint &ref)
 
infinintlibdar::infinint::operator*= (unsigned char arg)
 
infinintlibdar::infinint::operator*= (const infinint &ref)
 
template<class T >
infinint libdar::infinint::power (const T &exponent) const
 
infinintlibdar::infinint::operator/= (const infinint &ref)
 
infinintlibdar::infinint::operator%= (const infinint &ref)
 
infinintlibdar::infinint::operator&= (const infinint &ref)
 
infinintlibdar::infinint::operator|= (const infinint &ref)
 
infinintlibdar::infinint::operator^= (const infinint &ref)
 
infinintlibdar::infinint::operator>>= (U_32 bit)
 
infinintlibdar::infinint::operator>>= (infinint bit)
 
infinintlibdar::infinint::operator<<= (U_32 bit)
 
infinintlibdar::infinint::operator<<= (infinint bit)
 
infinint libdar::infinint::operator++ (int a)
 
infinint libdar::infinint::operator-- (int a)
 
infinintlibdar::infinint::operator++ ()
 
infinintlibdar::infinint::operator-- ()
 
U_32 libdar::infinint::operator% (U_32 arg) const
 
template<class T >
void libdar::infinint::unstack (T &v)
 convert infinint to standard interger types More...
 
infinint libdar::infinint::get_storage_size () const noexcept
 it returns number of byte of information necessary to store the integer
 
unsigned char libdar::infinint::operator[] (const infinint &position) const
 return in little endian order the information byte storing the integer
 
bool libdar::infinint::is_zero () const
 
static bool libdar::infinint::is_system_big_endian ()
 
bool libdar::infinint::is_valid () const noexcept
 
void libdar::infinint::build_from_file (proto_generic_file &x)
 
void libdar::infinint::reduce ()
 
void libdar::infinint::copy_from (const infinint &ref)
 
void libdar::infinint::move_from (infinint &&ref) noexcept
 
void libdar::infinint::detruit ()
 
void libdar::infinint::make_at_least_as_wider_as (const infinint &ref)
 
template<class T >
void libdar::infinint::infinint_from (T a)
 
template<class T >
libdar::infinint::max_val_of (T x)
 
template<class T >
void libdar::infinint::infinint_unstack_to (T &a)
 
template<class T >
libdar::infinint::modulo (T arg) const
 
signed int libdar::infinint::difference (const infinint &b) const
 
static void libdar::infinint::setup_endian ()
 
infinint libdar::operator+ (const infinint &, const infinint &)
 
infinint libdar::operator- (const infinint &, const infinint &)
 
infinint libdar::operator* (const infinint &, const infinint &)
 
infinint libdar::operator* (const infinint &, const unsigned char)
 
infinint libdar::operator* (const unsigned char, const infinint &)
 
infinint libdar::operator/ (const infinint &, const infinint &)
 
infinint libdar::operator% (const infinint &, const infinint &)
 
infinint libdar::operator& (const infinint &a, const infinint &bit)
 
infinint libdar::operator| (const infinint &a, const infinint &bit)
 
infinint libdar::operator^ (const infinint &a, const infinint &bit)
 
infinint libdar::operator>> (const infinint &a, U_32 bit)
 
infinint libdar::operator>> (const infinint &a, const infinint &bit)
 
infinint libdar::operator<< (const infinint &a, U_32 bit)
 
infinint libdar::operator<< (const infinint &a, const infinint &bit)
 
void libdar::euclide (infinint a, const infinint &b, infinint &q, infinint &r)
 

Variables

std::shared_ptr< i_archivelibdar::archive::pimpl
 
infinint libdar::archive_summary::slice_size
 slice of the middle slice or zero if not applicable
 
infinint libdar::archive_summary::first_slice_size
 slice of the first slices or zero if not applicable
 
infinint libdar::archive_summary::last_slice_size
 slice of the last slice or zero if not applicable
 
infinint libdar::archive_summary::ref_slice_size
 slice of the slice of the archive of reference
 
infinint libdar::archive_summary::ref_first_slice_size
 slice of the first slice of the archive of reference
 
infinint libdar::archive_summary::slice_number
 number of slices composing the archive of zero if unknown
 
infinint libdar::archive_summary::archive_size
 total size of the archive
 
infinint libdar::archive_summary::catalog_size
 catalogue size if known, zero if not
 
infinint libdar::archive_summary::storage_size
 amount of byte used to store (compressed/encrypted) data
 
infinint libdar::archive_summary::data_size
 amount of data saved (once uncompressed/unciphered)
 
entree_stats libdar::archive_summary::contents
 nature of saved files
 
std::string libdar::archive_summary::edition
 archive format
 
std::string libdar::archive_summary::algo_zip
 compression algorithm
 
std::string libdar::archive_summary::user_comment
 user comment
 
std::string libdar::archive_summary::cipher
 encryption algorithm
 
std::string libdar::archive_summary::asym
 asymetrical encryption
 
bool libdar::archive_summary::is_signed
 whether the archive is signed
 
bool libdar::archive_summary::tape_marks
 whether the archive has tape marks (for sequential reading)
 
std::string libdar::archive_summary::in_place
 in_place path empty string if absent
 
constexpr U_I libdar::LIBDAR_COMPILE_TIME_MAJOR = 6
 libdar Major version defined at compilation time
 
constexpr U_I libdar::LIBDAR_COMPILE_TIME_MEDIUM = 7
 libdar Medium version defined at compilation time
 
constexpr U_I libdar::LIBDAR_COMPILE_TIME_MINOR = 1
 libdar Minor version defined at compilation time
 
pile libdar::archive::i_archive::stack
 the different layer through which the archive contents is read or wrote
 
header_version libdar::archive::i_archive::ver
 information for the archive header
 
cataloguelibdar::archive::i_archive::cat
 archive contents
 
infinint libdar::archive::i_archive::local_cat_size
 size of the catalogue on disk
 
bool libdar::archive::i_archive::exploitable
 is false if only the catalogue is available (for reference backup or isolation).
 
bool libdar::archive::i_archive::lax_read_mode
 whether the archive has been openned in lax mode (unused for creation/merging/isolation)
 
bool libdar::archive::i_archive::sequential_read
 whether the archive is read in sequential mode
 
std::list< signatorlibdar::archive::i_archive::gnupg_signed
 list of signature found in the archive (reading an existing archive)
 
slice_layout libdar::archive::i_archive::slices
 slice layout, archive is not sliced <=> first_size or other_size fields are set to zero (in practice both are set to zero, but one being set is enought to determine the archive is not sliced)
 
libdar::limitint< B >::field
 
static const int libdar::limitint< B >::TG = 4
 
static const U_32 libdar::limitint< B >::sizeof_field = sizeof(B)
 
static endian libdar::limitint< B >::used_endian = not_initialized
 
static const U_I libdar::limitint< B >::bytesize = sizeof(B)
 
static const B libdar::limitint< B >::max_value = ~B(0) > 0 ? ~B(0) : ~(B(1) << (bytesize*8 - 1))
 
static U_8 libdar::limitint< B >::zeroed_field [ZEROED_SIZE]
 
const std::string libdar::PSEUDO_ROOT
 root name to use when archive operation does not use filesystem (archive testing for example)
 
const path libdar::FAKE_ROOT
 root path object based on PSEUDO_ROOT
 
static constexpr int libdar::infinint::TG = 4
 
storagelibdar::infinint::field
 
static endian libdar::infinint::used_endian
 
static U_8 libdar::infinint::zeroed_field [ZEROED_SIZE]
 

Friends

class libdar::archive::database
 
bool libdar::infinint::operator< (const infinint &, const infinint &)
 
bool libdar::infinint::operator== (const infinint &, const infinint &)
 
bool libdar::infinint::operator> (const infinint &, const infinint &)
 
bool libdar::infinint::operator<= (const infinint &, const infinint &)
 
bool libdar::infinint::operator!= (const infinint &, const infinint &)
 
bool libdar::infinint::operator>= (const infinint &, const infinint &)
 
void libdar::infinint::euclide (infinint a, const infinint &b, infinint &q, infinint &r)
 

Detailed Description

APlication Interface.

This namespace gathers all symbols that may be accessed from an external program. Other symbols are not as much documented, and may change or be removed without any warning or backward compatibility support. So only use the function, macro, types, classes... defined as member of the API module in you external programs.

Please not that an API tutorial is also available and should be a starting point for using libdar, nevertheless, if you want to start from here, there is four main classes consider and several datastructures aside that they depend on:

Macro Definition Documentation

◆ OPERATOR

#define OPERATOR (   OP)
Value:
inline bool operator OP (const infinint &a, const infinint &b) \
{ \
return a.difference(b) OP 0; \
}

Definition at line 176 of file real_infinint.hpp.

Typedef Documentation

◆ database_archives_list

list of archives found in a database

Note
index 0 is not used, list starts at index 1

Definition at line 75 of file database_archives.hpp.

◆ database_listing_get_version_callback

using libdar::database_listing_get_version_callback = typedef 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)

called with the information of presence for an entry in archive number num

Parameters
[in]tagis passed as is from the callback caller (database::get_version)
[in]numnumber of the archive the information is taken from
[in]data_presencestatus of the data for the requested file in that archive "num"
[in]has_data_datewhen false the following argument (data) is meaningless
[in]datamodification date of the archive of the requested file in the archive "num"
[in]ea_presencestatus of the EA for the requested file in the archive "num"
[in]has_ea_datewhen false the following argument (ea) is meaningless
[in]eachange date of the EA for the requested file in the archive "num"

Definition at line 63 of file database_listing_callback.hpp.

◆ database_listing_show_files_callback

using libdar::database_listing_show_files_callback = typedef void (*) (void *context, const std::string & filename, bool available_data, bool available_ea)

called by the database::get_files() routine

Parameters
[in]tagis passed as is from the callback caller (database::get_files)
[in]filenamethe name of the new entry
[in]available_datawhether this entry has data saved in the requested archive
[in]available_eawhether this entry has ea saved in the requested archive

Definition at line 48 of file database_listing_callback.hpp.

◆ database_listing_statistics_callback

using libdar::database_listing_statistics_callback = typedef void (*) (void *context, U_I number, const infinint & data_count, const infinint & total_data, const infinint & ea_count, const infinint & total_ea)

called with teh information of statistics for each archive in turn

Parameters
[in]contextis passed as is from the callback caller (database::show_most_recent_stats)
[in]numberthe archive number in the database
[in]data_countamount of file which last version is located in this archive
[in]total_datatotal number of file covered in this database
[in]ea_countamount of EA which last version is located in this archive
[in]total_eatotal number of file that have EA covered by this database

Definition at line 81 of file database_listing_callback.hpp.

Enumeration Type Documentation

◆ comparison_fields

how to consider file change during comparison and incremental backup

Enumerator
all 

consider any available field for comparing inodes

ignore_owner 

consider any available field except ownership fields

mtime 

consider any available field except ownership and permission fields

inode_type 

only consider the file type

Definition at line 52 of file archive_aux.hpp.

◆ compression

enum libdar::compression
strong

the different compression algorithm available

values to be used as argument of libdar API calls

Note
lzo1x_1_15 and lzo1x_1 should never be found in archive but instead lzo should be put in place. In consequence, the two letters 'j' and 'k' reserved here, shall well be modified to other value if necessary in the future, thus would not break any backward compatibility.
Enumerator
none 

no compression

gzip 

gzip compression (streamed)

bzip2 

bzip2 compression (streamed)

lzo 

lzo compression (streamed)

xz 

lzma compression (streamed)

lzo1x_1_15 

lzo degraded algo corresponding to lzop -1

lzo1x_1 

lzo degraded algo corresponding to lzo -2 to lzo -6

zstd 

zstd compression

lz4 

lz4 (streamed)

Definition at line 45 of file compression.hpp.

◆ crypto_algo

enum libdar::crypto_algo
strong

the different cypher available for encryption (strong or weak)

Enumerator
none 

no encryption

scrambling 

scrambling weak encryption

blowfish 

blowfish strong encryption

aes256 

AES 256 strong encryption.

twofish256 

twofish 256 strong encryption

serpent256 

serpent 256 strong encryption

camellia256 

camellia 256 strong encryption

Definition at line 49 of file crypto.hpp.

◆ db_etat

enum libdar::db_etat
strong

the status for a founded entry

Note
when restoring an et_patch entry, it is required to also restore all to all intermediate et_patch since the last et_saved status. While restoring et_inode only need to restore the previous et_saved and the latest et_inode available. Intermediate et_inode have not to be restored.
Enumerator
et_saved 

data/EA present in the archive

et_patch 

data present as patch since the previous version

et_patch_unusable 

data present as patch but base version not found in archive set

et_inode 

only inode metadata has been modified since previous version

et_present 

file/EA present in the archive but data not saved (differential backup)

et_removed 

file/EA stored as deleted since archive of reference or file/EA not present in the archive

et_absent 

file not even mentionned in the archive, This entry is equivalent to et_removed, but is required to be able to properly re-order the archive when user asks to do so. The dates associated to this state are computed from neighbor archives in the database

Definition at line 54 of file database_aux.hpp.

◆ db_lookup

enum libdar::db_lookup
strong

the available status of a lookup

Enumerator
found_present 

file data/EA has been found completely usable

found_removed 

file data/EA has been found as removed at that date

not_found 

no such file has been found in any archive of the base

not_restorable 

file data/EA has been found existing at that date but not possible to restore (lack of data, missing archive in base, etc.)

Definition at line 40 of file database_aux.hpp.

◆ hash_algo

enum libdar::hash_algo
strong

hashing algorithm available

Enumerator
none 

no hashing algorithm

md5 

MD5 algorithm.

sha1 

SHA1 algorithm.

sha512 

SHA-512 algorithm.

argon2 

argon2 hash algo

Definition at line 62 of file archive_aux.hpp.

◆ modified_data_detection

how to detect data has changed when some fields

Enumerator
any_inode_change 

historical behavior, resave an inode on any metadata change

mtime_size 

default behavior since release 2.6.0 resave only if file size of mtime changed

Definition at line 43 of file archive_aux.hpp.

◆ mycurl_protocol

libcurl protocols supported by libdar

Note
dar needs to list a directory content to find the last slice available in a directory, which feature is not always available with http and https protocols and never available with scp protocol Thus dar only supports ftp and sftp
Enumerator
proto_ftp 

FTP file transfer protocol.

proto_sftp 

SFTP Secure FTP (over ssh)

Definition at line 48 of file mycurl_protocol.hpp.

◆ over_action_data

the possible actions for overwriting data

Enumerator
data_preserve 

do not overwrite (keep the 'in place' entry)

data_overwrite 

overwirte the 'in place' entry by the 'to be added' one

data_preserve_mark_already_saved 

keep the 'in place' but mark it as already saved in the archive of reference

data_overwrite_mark_already_saved 

overwrite the 'in place' but mark the 'to be added' as already saved in the archive of reference

data_remove 

remove the original data/EA (file is completely deleted)

data_undefined 

action still undefined at this step of the evaluation

data_ask 

ask for user decision about file's data

Definition at line 46 of file crit_action.hpp.

◆ over_action_ea

the possible action for overwriting EA

define the action to apply to each EA entry (not to the EA set of a particular inode)

Enumerator
EA_preserve 

keep the EA of the 'in place' entry

EA_overwrite 

keep the EA of the 'to be added' entry

EA_clear 

drop the EA for the elected entry

EA_preserve_mark_already_saved 

drop any EA but mark them as already saved in the archive of reference (ctime is the one of the 'in place' inode)

EA_overwrite_mark_already_saved 

drop any EA but mark them as already saved in the archive of reference (ctime is the one of the 'to be added' inode)

EA_merge_preserve 

merge EA but do not overwrite existing EA of 'in place' by one of the same name of 'to be added' inode

EA_merge_overwrite 

merge EA but if both inode share an EA with the same name, take keep the one of the 'to be added' inode

EA_undefined 

action still undefined at this step of the evaluation

EA_ask 

ask for user decision about EA

Definition at line 61 of file crit_action.hpp.

Function Documentation

◆ archive() [1/5]

libdar::archive::archive ( const archive ref)
delete

copy constructor (not implemented, throw an exception if called explicitely or implicitely)

Note
this lack of implementation is intentionnal, Archive should rather be manipulated using pointers, or passed as constant reference (const &) in arguments or returned values. Moreover, having two objets one copy of the other may lead to unexpected behaviors while merging or creating, isolating or merging archives.

◆ archive() [2/5]

libdar::archive::archive ( const std::shared_ptr< user_interaction > &  dialog,
const path chem,
const std::string &  basename,
const std::string &  extension,
const archive_options_read options 
)

this constructor opens an already existing archive (for reading) [this is the "read" constructor]

Parameters
[in,out]dialogfor user- interaction
[in]chemthe path where to look for slices
[in]basenamethe slices basename of the archive to read ("-" means standard input, and activates the output_pipe and input_pipe arguments)
[in]extensionthe slice extension (should always be "dar")
[in]optionsA set of option to use to read the archive

◆ archive() [3/5]

libdar::archive::archive ( const std::shared_ptr< user_interaction > &  dialog,
const path chem_src,
const std::string &  basename_src,
const std::string &  extension_src,
const archive_options_read options_read,
const path chem_dst,
const std::string &  basename_dst,
const std::string &  extension_dst,
const archive_options_repair options_repair 
)

this constructor create a new archive from a damaged one [this is the "repair" constructor]

Parameters
[in,out]dialogfor user interaction
[in]chem_srcthe path where to look for slices of the archive to repair
[in]basename_srcthe slices basename of the archive to repair
[in]extension_srcthe slices extension of the archive to repair
[in]options_readthe set of option to use to read the archive repair
[in]chem_dstthe path where to write the repaired archive
[in]basename_dstthe slices basename of the repaired archive
[in]extension_dstthe slices extension of the repaired archive
[in]options_repairthe set of option to use to write the repaired archive

◆ archive() [4/5]

libdar::archive::archive ( const std::shared_ptr< user_interaction > &  dialog,
const path fs_root,
const path sauv_path,
const std::string &  filename,
const std::string &  extension,
const archive_options_create options,
statistics progressive_report 
)

this constuctor create an archive (full or differential) [this is the "create" constructor]

Parameters
[in,out]dialogfor user interaction
[in]fs_rootthe filesystem to take as root for the backup
[in]sauv_paththe path where to create slices
[in]filenamebase name of the slices. If "-" is given the archive will be produced in standard output
[in]extensionslices extension ("dar")
[in]optionsoptional parameters to use for the operation
[out]progressive_reportstatistics about the operation, considering the treated files (nullptr can be given if you don't want to use this feature)
Note
the statistics fields used are:
  • .treated: the total number of files seen
  • .hard_link: the number of hard linked inodes
  • .tooold: the number of files that changed at the time they were saved and that could not be resaved (due to repeat limit or byte limit)
  • .skipped: number of files not changed (differential backup)
  • .errored: number of files concerned by filesystem error
  • .ignored: number of files excluded by filters
  • .deleted: number of files recorded as deleted
  • .ea_treated: number of entry having some EA
  • .byte_amount : number of wasted bytes due to repeat on change feature

◆ archive() [5/5]

libdar::archive::archive ( const std::shared_ptr< user_interaction > &  dialog,
const path sauv_path,
std::shared_ptr< archive ref_arch1,
const std::string &  filename,
const std::string &  extension,
const archive_options_merge options,
statistics progressive_report 
)

this constructor builds an archive from two given archive [this is the "merge" constructor]

Parameters
[in,out]dialogfor user interaction
[in]sauv_paththe path where to create slices
[in]ref_arch1the first mandatory input archive (the second is optional and provided within the 'option' argument
[in]filenamebase name of the slices. If "-" is given the archive will be produced in standard output
[in]extensionslices extension ("dar")
[in]optionsoptional parameters to be used for the operation
[out]progressive_reportstatistics about the operation, considering the treated files (nullptr can be given if you don't want to use this feature)
Note
the statistics fields used are:
  • .treated: the total number of files seen
  • .hard_link: the number of hard linked inodes
  • .ignored: number of files excluded by filters
  • .deleted: number of files recorded as deleted
  • .ea_treated: number of entry with EA

◆ char2compression_mode()

bool libdar::char2compression_mode ( char  a)

return true if compression mode is per_block or false if this is a streamed compression

◆ char_to_hash_algo()

hash_algo libdar::char_to_hash_algo ( unsigned char  arg)

convert char to hash_algo

Note
throw Erange exception if provided char is invalid

◆ drop_all_filedescriptors()

void libdar::archive::drop_all_filedescriptors ( )

closes all filedescriptors and associated even when in sequential read mode

Note
once this method has been called, the archive object can only be used as reference for a differential archive.

◆ get_children_in_table()

const std::vector<list_entry> libdar::archive::get_children_in_table ( const std::string &  dir,
bool  fetch_ea = false 
) const

getting information about the given directory (alternative to get_children_of)

Parameters
[in]dirrelative path the directory to get information about, use empty string for root directory
[in]fetch_eawhether to fetch Extended Attributes relative information in each returned list_entry (not possible in sequential read mode)
Returns
a table information about all subdir and subfile for the given directory
Note
at the difference of get_children_of, this call does not rely on a user_interaction class to provide the information, but rather returns a table of children. To allow new fields to be added to the future the table contains an object that provide a method per field.
before calling this method on this object, a single call to init_catalogue() is mandatory

◆ get_children_of()

bool libdar::archive::get_children_of ( archive_listing_callback  callback,
void *  context,
const std::string &  dir,
bool  fetch_ea = false 
)

getting information about a given directory

Parameters
[in]callbackcallback function used to provide data in splitted field
[in]contextwill be passed as first argument of the callback as is provided here
[in]dirrelative path the directory to get information about
[in]fetch_eawhether to look for EA (not possible in sequential read mode)
Returns
true if some children have been found and the callback has been run at least once

◆ get_first_slice_header_size()

U_64 libdar::archive::get_first_slice_header_size ( ) const

get the first slice header

get_first_slice_header_size() and get_non_first_slice_header_size() can be used to translate from archive offset as reported by the list_entry::get_archive_offset_*() methods to file offset. This can be done by adding the first_slice_header_size to the archive offset, if the resulting number is larger than the first slice size, substract the it and add the non_first_slice header_size, and so on. This way you can determin the slice number to look into and the file offset in that file. Unit for all value is the byte (= octet).

Note
may return 0 if the slice header is not known

◆ get_non_first_slice_header_size()

U_64 libdar::archive::get_non_first_slice_header_size ( ) const

get the non first slice header

Note
may return 0 if the slice header is not known

◆ get_version() [1/2]

void libdar::get_version ( U_I &  major,
U_I &  medium,
U_I &  minor,
bool  init_libgcrypt,
bool  init_gpgme 
)

returns the libdar version and make libdar initialization (may throw Exceptions)

Parameters
[out]majorthe major number of the version
[out]mediumthe medium number of the version
[out]minorthe minor number of the version
[in]init_libgcryptwhether to initialize libgcrypt if not already done (not used if libcrypt is not linked with libdar)
[in]init_gpgmewhether to initialize gpgme (not used if gpgme is not linked with libdar)
Note
at the difference of the previous version this one allow the caller to avoid initializing gpgme.

◆ get_version() [2/2]

void libdar::get_version ( U_I &  major,
U_I &  medium,
U_I &  minor,
bool  init_libgcrypt = true 
)

return the libdar version, and make libdar initialization (may throw Exceptions)

It is mandatory to call this function (or another one of the get_version* family)

Parameters
[out]majorthe major number of the version
[out]mediumthe medium number of the version
[out]minorthe minor number of the version
[in]init_libgcryptwhether to initialize libgcrypt if not already done (not used if libcrypt is not linked with libdar)
Note
the calling application should check that the major function is the same as the libdar used at compilation time. See API tutorial for a sample code.

◆ init_catalogue() [1/2]

void libdar::archive::init_catalogue ( ) const

necessary to get the catalogue fully loaded in memory in any situation in particular in sequential reading mode

◆ init_catalogue() [2/2]

void libdar::archive::i_archive::init_catalogue ( ) const

necessary to get the catalogue fully loaded in memory in any situation in particular in sequential reading mode

◆ is_zero()

bool libdar::infinint::is_zero ( ) const

◆ op_create_in_sub()

void libdar::archive::i_archive::op_create_in_sub ( operation  op,
const path fs_root,
const std::shared_ptr< entrepot > &  sauv_path_t,
catalogue ref_cat1,
const catalogue ref_cat2,
bool  initial_pause,
const mask selection,
const mask subtree,
const std::string &  filename,
const std::string &  extension,
bool  allow_over,
const crit_action overwrite,
bool  warn_over,
bool  info_details,
bool  display_treated,
bool  display_treated_only_dir,
bool  display_skipped,
bool  display_finished,
const infinint pause,
bool  empty_dir,
compression  algo,
U_I  compression_level,
U_I  compression_block_size,
const infinint file_size,
const infinint first_file_size,
const mask ea_mask,
const std::string &  execute,
crypto_algo  crypto,
const secu_string pass,
U_32  crypto_size,
const std::vector< std::string > &  gnupg_recipients,
const std::vector< std::string > &  gnupg_signatories,
const mask compr_mask,
const infinint min_compr_size,
bool  nodump,
const std::string &  exclude_by_ea,
const infinint hourshift,
bool  empty,
bool  alter_atime,
bool  furtive_read_mode,
const filesystem_ids &  same_fs,
comparison_fields  what_to_check,
bool  snapshot,
bool  cache_directory_tagging,
bool  keep_compressed,
const infinint fixed_date,
const std::string &  slice_permission,
const infinint repeat_count,
const infinint repeat_byte,
bool  decremental,
bool  add_marks_for_sequential_reading,
bool  security_check,
const infinint sparse_file_min_size,
const std::string &  user_comment,
hash_algo  hash,
const infinint slice_min_digits,
const std::string &  backup_hook_file_execute,
const mask backup_hook_file_mask,
bool  ignore_unknown,
const fsa_scope scope,
U_I  multi_threaded_crypto,
U_I  multi_threaded_compress,
bool  delta_signature,
bool  build_delta_sig,
const mask delta_mask,
const infinint delta_sig_min_size,
bool  delta_diff,
bool  zeroing_neg_date,
const std::set< std::string > &  ignored_symlinks,
modified_data_detection  mod_data_detect,
const infinint iteration_count,
hash_algo  kdf_hash,
const delta_sig_block_size sign_block_len,
statistics st_ptr 
)
private
Parameters
opthe filter operation to bind to
fs_rootroot of the filesystem to act on
sauv_path_twhere to create the archive
ref_cat1catalogue of the archive of reference, (cannot be nullptr if ref_cat2 is not nullptr)
ref_cat2secondary catalogue used for merging, can be nullptr if not used
initial_pausewhether we shall pause before starting the archive creation
selectionfilter on filenames
subtreefilter on directory tree and filenames
filenamebasename of the archive to create
extensionextension of the archives
allow_overwhether to allow overwriting (of slices)
overwritewhether and how to allow overwriting (for files inside the archive)
warn_overwhether to warn before overwriting
info_detailswhether to display detailed informations
display_treatedwhether to display treated files
display_treated_only_dirwhether to only display current directory of treated files
display_skippeddisplay skipped files for the operation
display_finisheddisplay space and compression ratio summary for each completed directory
pausewhether to pause between slices
empty_dirwhether to store excluded dir as empty directories
algocompression algorithm
compression_levelcompression level (range 1 to 9)
compression_block_sizecompression block size (0 for normal/legacy compression mode)
file_sizeslice size
first_file_sizefirst slice size
ea_maskExtended Attribute to consider
executeCommand line to execute between slices
cryptocrypt algorithm
passpassword ("" for onfly request of password)
crypto_sizesize of crypto blocks
gnupg_recipientslist of email recipients to encrypted a randomly chosen key inside the archive
gnupg_signatorieslist of email recipients to use for signature
compr_maskfiles to compress
min_compr_sizefile size under which to not compress files
nodumpwhether to consider the "nodump" filesystem flag
exclude_by_eaif not empty the ea to use for inode exclusion from backup operation
hourshifthourshift (see man page -H option)
emptywhether to make an "dry-run" execution
alter_atimewhether to alter atime date (by opposition to ctime) when reading files
furtive_read_modewhether to neither alter atime nor ctome (if true alter_atime is ignored)
same_fsconfin the files consideration to the given set of filesystem
what_to_checkfields to consider wien comparing inodes (see comparison_fields enumeration)
snapshotmake as if all file had not changed
cache_directory_taggingavoid saving directory which follow the cache directory tagging
keep_compressedkeep file compressed when merging
fixed_datewhether to ignore any archive of reference and only save file which modification is more recent that the given "fixed_date" date
slice_permissionpermissions of slices that will be created
repeat_countmax number of retry to save a file that have changed while it was read for backup
repeat_bytemax amount of wasted data used to save a file that have changed while it was read for backup
decrementalin the merging context only, whether to build a decremental backup from the two archives of reference
add_marks_for_sequential_readingwhether to add marks for sequential reading
security_checkwhether to check for ctime change with no reason (rootkit ?)
sparse_file_min_sizestarting which size to consider looking for holes in sparse files (0 for no detection)
user_commentuser comment to put in the archive
hashwhether to produce hash file, and which algo to use
slice_min_digitsminimum digit for slice number
backup_hook_file_executecommand to execute before and after files to backup
backup_hook_file_maskfiles elected to have a command executed before and after their backup
ignore_unknownwhether to warn when an unknown inode type is met
scopeFSA scope for the operation
multi_threaded_cryptowhether libdar is allowed to spawn several thread to possibily work faster on multicore CPU
multi_threaded_compressneeed compression_block_size > 0 to use several threads for compression/decompression
delta_signaturewhether to calculate and store binary delta signature for each saved file
build_delta_sigwhether to rebuild delta sig accordingly to delta_mask
delta_maskwhich files to consider delta signature for
delta_sig_min_sizeminimum file size for which to calculate delta signature
delta_diffwhether to allow delta diff backup when delta sig is present
zeroing_neg_dateif true just warn before zeroing neg date, dont ask user
ignored_symlinkslist of symlink pointed to directory to recurse into
mod_data_detecthow to verify data has not changed upon inode metadata change
iteration_countfor key derivation
kdf_hashhash used for key derivation
sign_block_lenblock len for signature
st_ptrstatistics must not be nullptr !

◆ op_diff()

statistics libdar::archive::op_diff ( const path fs_root,
const archive_options_diff &  options,
statistics progressive_report 
)

archive comparison with filesystem

Parameters
[in]fs_rootthe filesystem to take as root for the comparison
[in]optionsoptional parameters to be used with the operation
[in,out]progressive_reportpoints to an already existing statistics object that can be consulted at any time during the call (see the returned value to know the useful fields and their meining), nullptr can be given in argument if you only need the result at the end of the operation through the returned value of this call this should speed up the operation by a little amount.
Returns
the statistics about the operation, considering the treated files
Note
the statistics fields used are:
  • .treated: the total number of files seen
  • .errored: number of files that do not match or could not be read
  • .ignored: number of files excluded by filters

◆ op_extract()

statistics libdar::archive::op_extract ( const path fs_root,
const archive_options_extract options,
statistics progressive_report 
)

extraction of data from an archive

Parameters
[in]fs_rootthe filesystem to take as root for the restoration
[in]optionsoptional parameter to be used for the operation
[in,out]progressive_reportpoints to an already existing statistics object that can be consulted at any time during the call (see the returned value to know the useful fields and their meining), nullptr can be given in argument if you only need the result at the end of the operation through the returned value of this call this should speed up the operation by a little amount.
Returns
the statistics about the operation, considering the treated files
Note
the statistics fields used are:
  • .treated: the total number of files restored
  • .skipped: number of files not saved in the archive
  • .tooold: number of file not restored due to overwriting policy decision
  • .errored: number of files concerned by filesystem error
  • .ignored: number of files excluded by filters
  • .deleted: number of files deleted
  • .hard_links: number of hard link restored
  • .ea_treated: number of entry having some EA

◆ op_isolate()

void libdar::archive::op_isolate ( const path sauv_path,
const std::string &  filename,
const std::string &  extension,
const archive_options_isolate options 
)

this methodes isolates the catalogue of a the current archive into a separated archive

Parameters
[in]sauv_paththe path where to create slices
[in]filenamebase name of the slices ("-" for standard output)
[in]extensionslices extension ("dar")
[in]optionsoptional parameters to use for the operation
Note
that if the archive contains delta sig and isolation options, specifying not to keep them in the resulting isolated catalogue leads the current archive object (but not the corresponding archive stored on filesystem) to be modified (delta signature are removed) — this is not a const method.

◆ op_listing()

void libdar::archive::op_listing ( archive_listing_callback  callback,
void *  context,
const archive_options_listing options 
) const

listing of the archive contents

Parameters
[in]callbackcallback function used to provide data in splitted field (not used if null is given)
[in]contextwill be passed as is to the last argument of the provided callback
[in]optionslist of optional parameters to use for the operation
Note
if callback is nullptr (or NULL), the output is done using user_interaction provided with archive constructor
alternative way to get archive contents: . archive::get_children_of() method . archive::init_catalogue()+get_children_in_table()

◆ op_test()

statistics libdar::archive::op_test ( const archive_options_test options,
statistics progressive_report 
)

test the archive integrity

Parameters
[in]optionsoptional parameter to use for the operation
[in,out]progressive_reportpoints to an already existing statistics object that can be consulted at any time during the call (see the returned value to know the useful fields and their meining), nullptr can be given in argument if you only need the result at the end of the operation through the returned value of this call this should speed up the operation by a little amount.
Note
op_test will generate an error message if used on an archive that has been created by the isolate or creation constructor this is not only an implementation limitation but also a choice. testing an file archive using the C++ object used to create the file is not a good idea. You need to first destroy this C++ object then create a new one with the reading constructor this way only you can be sure your archive is properly tested.
Returns
the statistics about the operation, considering the treated files
Note
the statistics fields used are:
  • .treated: the total number of files seen
  • .skipped: number of file older than the one on filesystem
  • .errored: number of files with error

◆ operator<<()

std::ostream& libdar::operator<< ( std::ostream &  ref,
const infinint arg 
)

specific << operator to use infinint in std::ostream

including "deci.hpp" let this operator available so you can display infinint with the << std::ostream operator as you can do for standard types.

◆ string_to_hash_algo()

bool libdar::string_to_hash_algo ( const std::string &  arg,
hash_algo val 
)

convert string to hash algorithm

Parameters
[in]argstring to cast to a hash algorithm name
[out]valis set to the corresponding hash algorithm if the function returns true
Returns
true if provided string matches a valid hash algoritm name and give the hash_algo in argument

◆ summary()

void libdar::archive::summary ( )

display a summary of the archive

Note
see also get_stats() method

◆ unstack()

template<class T >
void libdar::infinint::unstack ( T &  v)
inline

convert infinint to standard interger types

Note
increment the argument up to a legal value for its storage type and decrement the object in consequence note that the initial value of the argument is not ignored! when the object is null the value of the argument is unchanged

Definition at line 124 of file real_infinint.hpp.