| Disk ARchive 2.6.11 Full featured and portable backup and archiving tool

Files | Namespaces | Classes | Macros | Typedefs | Enumerations | Enumerator | Functions | Variables | Friends
API

APlication Interface. More...

## 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. Entrepot interface defines a generic way to interact with files (slices) on a filesystem. It is used to instanciate file-like objects (from class inherited from class fichier_global, in order to read or write data to such file. The entrepot_local and fichier_local classes are the only one classes available from libdar to implement the entrepot and fichier classes interfaces respectively. External applications like webdar can implement entrepot_ftp and fichier_ftp classes to provide transparent access to dar backup localted on a remote ftp server. More can follow in the future.
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 | 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

## Namespaces
| libdar::compile_time
| nested namespace inside libdar
| libdar
| libdar namespace encapsulate all libdar symbols

## Classes
class | libdar::archive::i_archive
| the archive::i_archive class implements the most general operations on archives More...
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::crit_action
| the global action for overwriting More...
class | libdar::crit_constant_action
| the basic constant action More...
class | libdar::testing
| the testing class binds criterium to actions More...
class | libdar::crit_chain
| the crit_chain class sequences crit_actions up to full definition of the action More...
class | libdar::criterium
| the generic criterium class, parent of all criterium More...
class | libdar::crit_in_place_is_inode
| returns true if the first entry is an inode (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_file
| returns true if the first entry is a plain file (whatever is the second) More...
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_new_hardlinked_inode
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_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_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_saved
| if the entry is not an inode the result is also true 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_sparse
| return true if the entry is a sparse file (or hard linked sparse file) More...
class | libdar::crit_in_place_has_delta_sig
| return true if the entry has delta signatur More...
class | libdar::crit_in_place_EA_present
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_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_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_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_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_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_not
| realises the negation of the criterium given in argument to its constructor More...
class | libdar::crit_and
| realises the AND operator More...
struct | libdar::signator
| signator status More...
class | libdar::database
| the database class defines the dar_manager database More...
class | libdar::database_archives
| datastructure managing a member of the list of archives used by a database More...
class | libdar::database_open_options
| options to open a database More...
class | libdar::database_dump_options
| options to write a database to file More...
class | libdar::database_add_options
| options to add an archive to base More...
class | libdar::database_remove_options
| options to remove an archive from the base More...
class | libdar::database_change_basename_options
| options for changing a given archive's basename More...
class | libdar::database_change_path_options
| options for changing a given archive's path More...
class | libdar::database_restore_options
| options for restoration from database More...
class | libdar::database_used_options
| options for file "used" in archive More...
class | libdar::datetime
| stores time information More...
class | libdar::deci
| decimal class, convert infinint from and to decimal represention More...
struct | libdar::entree_stats
| holds the statistics contents of a catalogue More...
class | libdar::entrepot
| the Entrepot interface More...
class | libdar::entrepot_libcurl
| for managing archive into a remote repository More...
class | libdar::Egeneric
| this is the parent class of all exception classes. More...
class | libdar::Ememory
| exception used when memory has been exhausted More...
class | libdar::Esecu_memory
| exception used when secure memory has been exhausted 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::Einfinint
| exception used when arithmetic error is detected when operating on infinint More...
class | libdar::Elimitint
| exception used when a limitint overflow is detected, the maximum value of the limitint has been exceeded More...
class | libdar::Erange
| exception used to signal range error More...
class | libdar::Edeci
| exception used to signal convertion problem between infinint and string (decimal representation) More...
class | libdar::Efeature
| exception used when a requested feature is not (yet) implemented More...
class | libdar::Ehardware
| exception used when hardware problem is found More...
class | libdar::Euser_abort
| exception used to signal that the user has aborted the operation More...
class | libdar::Edata
| exception used when an error concerning the treated data has been met More...
class | libdar::Escript
| exception used when error the inter-slice user command returned an error code More...
class | libdar::Elibcall
| exception used to signal an error in the argument given to libdar call of the API More...
class | libdar::Ecompilation
| exception used when a requested fearture has not beed activated at compilation time More...
class | libdar::Ethread_cancel
| exception used when the thread libdar is running in is asked to stop More...
class | libdar::Esystem
| exception used to carry system error More...
class | libdar::Enet_auth
| exception used to report authentication error 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 | libdar::modified_data_detection { libdar::modified_data_detection::any_inode_change, libdar::modified_data_detection::mtime_size }
| how to detect data has changed when some fields More...
enum | libdar::comparison_fields { libdar::comparison_fields::all, libdar::comparison_fields::ignore_owner, libdar::comparison_fields::mtime, libdar::comparison_fields::inode_type }
| how to consider file change during comparison and incremental backup More...
enum | libdar::hash_algo { libdar::hash_algo::none, libdar::hash_algo::md5, libdar::hash_algo::sha1, libdar::hash_algo::sha512 }
| hashing algorithm available More...
enum | libdar::compression { libdar::compression::none = 'n', libdar::compression::gzip = 'z', libdar::compression::bzip2 = 'y', libdar::compression::lzo = 'l', libdar::compression::xz = 'x', libdar::compression::lzo1x_1_15 = 'j', libdar::compression::lzo1x_1 = 'k' }
| 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 | libdar::crypto_algo { libdar::crypto_algo::none, libdar::crypto_algo::scrambling, libdar::crypto_algo::blowfish, libdar::crypto_algo::aes256, libdar::crypto_algo::twofish256, libdar::crypto_algo::serpent256, libdar::crypto_algo::camellia256 }
| the different cypher available for encryption (strong or weak) More...
enum | libdar::db_lookup { libdar::db_lookup::found_present, libdar::db_lookup::found_removed, libdar::db_lookup::not_found, libdar::db_lookup::not_restorable }
| the available status of a lookup More...
enum | libdar::db_etat { libdar::db_etat::et_saved, libdar::db_etat::et_patch, libdar::db_etat::et_patch_unusable, libdar::db_etat::et_inode, libdar::db_etat::et_present, libdar::db_etat::et_removed, libdar::db_etat::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
archive & | libdar::archive::operator= (const archive &ref)=delete
archive & | libdar::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_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) 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_summary & | libdar::archive_summary::operator= (const archive_summary &ref)=default
archive_summary & | libdar::archive_summary::operator= (archive_summary &&ref) noexcept=default
const infinint & | libdar::archive_summary::get_slice_size () const
const infinint & | libdar::archive_summary::get_first_slice_size () const
const infinint & | libdar::archive_summary::get_last_slice_size () const
const infinint & | libdar::archive_summary::get_slice_number () const
const infinint & | libdar::archive_summary::get_archive_size () const
const infinint & | libdar::archive_summary::get_catalog_size () const
const infinint & | libdar::archive_summary::get_storage_size () const
const infinint & | libdar::archive_summary::get_data_size () const
const entree_stats & | libdar::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
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_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::clear ()
const archive_version | libdar::empty_archive_version ()
compression | libdar::char2compression (char a)
| convert a char as stored in archive to its compression value
char | libdar::compression2char (compression c)
| 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_archive & | libdar::archive::i_archive::operator= (const i_archive &ref)=delete
i_archive & | libdar::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_entry > | libdar::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 catalogue & | libdar::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 catalogue & | libdar::archive::i_archive::get_cat () const
const header_version & | libdar::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< entrepot > | libdar::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, 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, bool 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, bool multi_threaded, 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, 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, bool 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, bool multi_threaded, 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 label & | libdar::archive::i_archive::get_layer1_data_name () const
const label & | libdar::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_directory * | libdar::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
limitint & | libdar::limitint< B >::operator= (const limitint &ref)=default
limitint & | libdar::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)
limitint & | libdar::limitint< B >::operator+= (const limitint &ref)
limitint & | libdar::limitint< B >::operator-= (const limitint &ref)
limitint & | libdar::limitint< B >::operator*= (const limitint &ref)
template<class T >
limitint | libdar::limitint< B >::power (const T &exponent) const
limitint & | libdar::limitint< B >::operator/= (const limitint &ref)
limitint & | libdar::limitint< B >::operator%= (const limitint &ref)
limitint & | libdar::limitint< B >::operator&= (const limitint &ref)
limitint & | libdar::limitint< B >::operator|= (const limitint &ref)
limitint & | libdar::limitint< B >::operator^= (const limitint &ref)
limitint & | libdar::limitint< B >::operator>>= (U_32 bit)
limitint & | libdar::limitint< B >::operator>>= (limitint bit)
limitint & | libdar::limitint< B >::operator<<= (U_32 bit)
limitint & | libdar::limitint< B >::operator<<= (limitint bit)
limitint | libdar::limitint< B >::operator++ (int a)
limitint | libdar::limitint< B >::operator-- (int a)
limitint & | libdar::limitint< B >::operator++ ()
limitint & | libdar::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 ()
B | libdar::limitint< B >::debug_get_max () const
B | libdar::limitint< B >::debug_get_bytesize () const
B | 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 >
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
infinint & | libdar::infinint::operator= (const infinint &ref)
infinint & | libdar::infinint::operator= (infinint &&ref) noexcept
void | libdar::infinint::dump (proto_generic_file &x) const
void | libdar::infinint::read (proto_generic_file &f)
infinint & | libdar::infinint::operator+= (const infinint &ref)
infinint & | libdar::infinint::operator-= (const infinint &ref)
infinint & | libdar::infinint::operator*= (unsigned char arg)
infinint & | libdar::infinint::operator*= (const infinint &ref)
template<class T >
infinint | libdar::infinint::power (const T &exponent) const
infinint & | libdar::infinint::operator/= (const infinint &ref)
infinint & | libdar::infinint::operator%= (const infinint &ref)
infinint & | libdar::infinint::operator&= (const infinint &ref)
infinint & | libdar::infinint::operator|= (const infinint &ref)
infinint & | libdar::infinint::operator^= (const infinint &ref)
infinint & | libdar::infinint::operator>>= (U_32 bit)
infinint & | libdar::infinint::operator>>= (infinint bit)
infinint & | libdar::infinint::operator<<= (U_32 bit)
infinint & | libdar::infinint::operator<<= (infinint bit)
infinint | libdar::infinint::operator++ (int a)
infinint | libdar::infinint::operator-- (int a)
infinint & | libdar::infinint::operator++ ()
infinint & | libdar::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 >
T | libdar::infinint::max_val_of (T x)
template<class T >
void | libdar::infinint::infinint_unstack_to (T &a)
template<class T >
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_archive > | libdar::archive::pimpl
infinint | libdar::archive_summary::slice_size
| slice of the first slice or zero if not applicable
infinint | libdar::archive_summary::first_slice_size
| slice of the middle 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::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)
constexpr U_I | libdar::LIBDAR_COMPILE_TIME_MAJOR = 6
| libdar Major version defined at compilation time
constexpr U_I | libdar::LIBDAR_COMPILE_TIME_MEDIUM = 2
| libdar Medium version defined at compilation time
constexpr U_I | libdar::LIBDAR_COMPILE_TIME_MINOR = 5
| 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
catalogue * | libdar::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< signator > | libdar::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 is set to zero (in practice both are set to zero, but one being set is enought to determine the archive is not sliced)
B | 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
storage * | libdar::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:

- class libdar::archive you can create and manipulate dar archive like the dar command-line tool does
- class libdar::database you can create and manupulate dar_manager database, like the dar_manager CLI tool does
- class libdar::libdar_xform you have guessed, this is the API for dar_xform
- class libdar::libdar_slave still logicial, this is the API for dar_slave all the CLI command mentionned above do rely on these classes so it might help having a look at the CMDLINE namespace for illustration on how to use this classes.

## 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 177 of file real_infinint.hpp.

## Typedef Documentation

## ◆ database_archives_list

using libdar::database_archives_list = typedef std::deque<database_archives>

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] | tag | is passed as is from the callback caller (database::get_version)
  [in] | num | number of the archive the information is taken from
  [in] | data_presence | status of the data for the requested file in that archive "num"
  [in] | has_data_date | when false the following argument (data) is meaningless
  [in] | data | modification date of the archive of the requested file in the archive "num"
  [in] | ea_presence | status of the EA for the requested file in the archive "num"
  [in] | has_ea_date | when false the following argument (ea) is meaningless
  [in] | ea | change 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] | tag | is passed as is from the callback caller (database::get_files)
  [in] | filename | the name of the new entry
  [in] | available_data | whether this entry has data saved in the requested archive
  [in] | available_ea | whether 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] | context | is passed as is from the callback caller (database::show_most_recent_stats)
  [in] | number | the archive number in the database
  [in] | data_count | amount of file which last version is located in this archive
  [in] | total_data | total number of file covered in this database
  [in] | ea_count | amount of EA which last version is located in this archive
  [in] | total_ea | total 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

enum libdar::comparison_fields
| strong

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
bzip2 | bzip2 compression
lzo | lzo compression
xz | lzma compression
lzo1x_1_15 | lzo degraded algo corresponding to lzop -1
lzo1x_1 | lzo degraded algo corresponding to lzo -2 to lzo -6

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.

Definition at line 62 of file archive_aux.hpp.

## ◆ modified_data_detection

enum libdar::modified_data_detection
| strong

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

enum libdar::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

enum libdar::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

enum libdar::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] | dialog | for user- interaction
  [in] | chem | the path where to look for slices
  [in] | basename | the slices basename of the archive to read ("-" means standard input, and activates the output_pipe and input_pipe arguments)
  [in] | extension | the slice extension (should always be "dar")
  [in] | options | A 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] | dialog | for user interaction
  [in] | chem_src | the path where to look for slices of the archive to repair
  [in] | basename_src | the slices basename of the archive to repair
  [in] | extension_src | the slices extension of the archive to repair
  [in] | options_read | the set of option to use to read the archive repair
  [in] | chem_dst | the path where to write the repaired archive
  [in] | basename_dst | the slices basename of the repaired archive
  [in] | extension_dst | the slices extension of the repaired archive
  [in] | options_repair | the 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] | dialog | for user interaction
  [in] | fs_root | the filesystem to take as root for the backup
  [in] | sauv_path | the path where to create slices
  [in] | filename | base name of the slices. If "-" is given the archive will be produced in standard output
  [in] | extension | slices extension ("dar")
  [in] | options | optional parameters to use for the operation
  [out] | progressive_report | statistics 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] | dialog | for user interaction
  [in] | sauv_path | the path where to create slices
  [in] | ref_arch1 | the first mandatory input archive (the second is optional and provided within the 'option' argument
  [in] | filename | base name of the slices. If "-" is given the archive will be produced in standard output
  [in] | extension | slices extension ("dar")
  [in] | options | optional parameters to be used for the operation
  [out] | progressive_report | statistics 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

## ◆ 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] | dir | relative path the directory to get information about, use empty string for root directory
  [in] | fetch_ea | whether 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] | callback | callback function used to provide data in splitted field
  [in] | context | will be passed as first argument of the callback as is provided here
  [in] | dir | relative path the directory to get information about
  [in] | fetch_ea | whether 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] | major | the major number of the version
  [out] | medium | the medium number of the version
  [out] | minor | the minor number of the version
  [in] | init_libgcrypt | whether to initialize libgcrypt if not already done (not used if libcrypt is not linked with libdar)
  [in] | init_gpgme | whether 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] | major | the major number of the version
  [out] | medium | the medium number of the version
  [out] | minor | the minor number of the version
  [in] | init_libgcrypt | whether 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

Returns
  true when the object is zero (more efficient than integer comparison)

Referenced by libdar::cat_delta_signature::can_obtain_sig(), libdar::list_entry::get_archive_offset_for_data(), libdar::list_entry::get_archive_offset_for_EA(), libdar::list_entry::get_archive_offset_for_FSA(), libdar::list_entry::get_storage_size_for_data(), libdar::list_entry::get_storage_size_for_EA(), libdar::list_entry::get_storage_size_for_FSA(), and libdar::datetime::is_null().

## ◆ 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,
|  | 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,
|  | bool | 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,
|  | bool | multi_threaded,
|  | 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

  op | the filter operation to bind to
  fs_root | root of the filesystem to act on
  sauv_path_t | where to create the archive
  ref_cat1 | catalogue of the archive of reference, (cannot be nullptr if ref_cat2 is not nullptr)
  ref_cat2 | secondary catalogue used for merging, can be nullptr if not used
  initial_pause | whether we shall pause before starting the archive creation
  selection | filter on filenames
  subtree | filter on directory tree and filenames
  filename | basename of the archive to create
  extension | extension of the archives
  allow_over | whether to allow overwriting (of slices)
  overwrite | whether and how to allow overwriting (for files inside the archive)
  warn_over | whether to warn before overwriting
  info_details | whether to display detailed informations
  display_treated | whether to display treated files
  display_treated_only_dir | whether to only display current directory of treated files
  display_skipped | display skipped files for the operation
  display_finished | display space and compression ratio summary for each completed directory
  pause | whether to pause between slices
  empty_dir | whether to store excluded dir as empty directories
  algo | compression algorithm
  compression_level | compression level (range 1 to 9)
  file_size | slice size
  first_file_size | first slice size
  ea_mask | Extended Attribute to consider
  execute | Command line to execute between slices
  crypto | crypt algorithm
  pass | password ("" for onfly request of password)
  crypto_size | size of crypto blocks
  gnupg_recipients | list of email recipients to encrypted a randomly chosen key inside the archive
  gnupg_signatories | list of email recipients to use for signature
  compr_mask | files to compress
  min_compr_size | file size under which to not compress files
  nodump | whether to consider the "nodump" filesystem flag
  exclude_by_ea | if not empty the ea to use for inode exclusion from backup operation
  hourshift | hourshift (see man page -H option)
  empty | whether to make an "dry-run" execution
  alter_atime | whether to alter atime date (by opposition to ctime) when reading files
  furtive_read_mode | whether to neither alter atime nor ctome (if true alter_atime is ignored)
  same_fs | confin the files consideration to a single filesystem
  what_to_check | fields to consider wien comparing inodes (see comparison_fields enumeration)
  snapshot | make as if all file had not changed
  cache_directory_tagging | avoid saving directory which follow the cache directory tagging
  keep_compressed | keep file compressed when merging
  fixed_date | whether to ignore any archive of reference and only save file which modification is more recent that the given "fixed_date" date
  slice_permission | permissions of slices that will be created
  repeat_count | max number of retry to save a file that have changed while it was read for backup
  repeat_byte | max amount of wasted data used to save a file that have changed while it was read for backup
  decremental | in the merging context only, whether to build a decremental backup from the two archives of reference
  add_marks_for_sequential_reading | whether to add marks for sequential reading
  security_check | whether to check for ctime change with no reason (rootkit ?)
  sparse_file_min_size | starting which size to consider looking for holes in sparse files (0 for no detection)
  user_comment | user comment to put in the archive
  hash | whether to produce hash file, and which algo to use
  slice_min_digits | minimum digit for slice number
  backup_hook_file_execute | command to execute before and after files to backup
  backup_hook_file_mask | files elected to have a command executed before and after their backup
  ignore_unknown | whether to warn when an unknown inode type is met
  scope | FSA scope for the operation
  multi_threaded | whether libdar is allowed to spawn several thread to possibily work faster on multicore CPU
  delta_signature | whether to calculate and store binary delta signature for each saved file
  build_delta_sig | whether to rebuild delta sig accordingly to delta_mask
  delta_mask | which files to consider delta signature for
  delta_sig_min_size | minimum file size for which to calculate delta signature
  delta_diff | whether to allow delta diff backup when delta sig is present
  zeroing_neg_date | if true just warn before zeroing neg date, dont ask user
  ignored_symlinks | list of symlink pointed to directory to recurse into
  mod_data_detect | how to verify data has not changed upon inode metadata change
  iteration_count | for key derivation
  kdf_hash | hash used for key derivation
  sign_block_len | block len for signature
  st_ptr | statistics 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_root | the filesystem to take as root for the comparison
  [in] | options | optional parameters to be used with the operation
  [in,out] | progressive_report | points 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_root | the filesystem to take as root for the restoration
  [in] | options | optional parameter to be used for the operation
  [in,out] | progressive_report | points 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_path | the path where to create slices
  [in] | filename | base name of the slices ("-" for standard output)
  [in] | extension | slices extension ("dar")
  [in] | options | optional 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] | callback | callback function used to provide data in splitted field (not used if null is given)
  [in] | context | will be passed as is to the last argument of the provided callback
  [in] | options | list 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] | options | optional parameter to use for the operation
  [in,out] | progressive_report | points 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] | arg | string to cast to a hash algorithm name
  [out] | val | is 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.