Disk ARchive  2.7.15
Full featured and portable backup and archiving tool
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
libdar Namespace Reference

libdar namespace encapsulate all libdar symbols More...

Namespaces

 compile_time
 nested namespace inside libdar
 

Classes

class  archive
 the archive class realizes the most general operations on archives More...
 
class  archive_num
 class archive_num stores the position of an archive inside a dar_manager database More...
 
class  archive_options_read
 class holding optional parameters used to read an existing archive More...
 
class  archive_options_create
 class holding optional parameters used to create an archive More...
 
class  archive_options_isolate
 class holding optional parameters used to isolate an existing archive More...
 
class  archive_options_merge
 class holding optional parameters used to proceed to the merge operation More...
 
class  archive_options_extract
 class holding optional parameters used to extract files from an existing archive More...
 
class  archive_options_listing
 class holding optional parameters used to list the contents of an existing archive More...
 
class  archive_options_test
 class holding optional parameters used to test the structure coherence of an existing archive More...
 
class  archive_options_repair
 class holding optional parameters used to create an archive More...
 
class  archive_options_listing_shell
 class holding optional shell specific parameters used to list the contents of an existing archive More...
 
class  archive_summary
 the archive_summary class provides information about a given archive More...
 
class  archive_version
 class archive_version manages the version of the archive format More...
 
class  cache
 the cache class implements a fixed length read/write caching mechanism More...
 
class  cache_global
 the cache_global cache is an adaptation of the cache class to the fichier_global interface More...
 
class  candidates
 helper class for data_tree More...
 
class  cat_blockdev
 the block device class More...
 
class  cat_chardev
 the char device class More...
 
class  cat_delta_signature
 the cat_delta_signature file class More...
 
class  cat_detruit
 the deleted file entry More...
 
class  cat_device
 the special cat_device root class More...
 
class  cat_directory
 the cat_directory inode class More...
 
class  cat_door
 the class for Door IPC (mainly for Solaris) More...
 
class  cat_entree
 the root class from all other inherite for any entry in the catalogue More...
 
class  cat_eod
 the End of Directory entry class More...
 
class  cat_etoile
 the hard link implementation More...
 
class  cat_file
 the plain file class More...
 
class  cat_ignored
 the present file to ignore (not to be recorded as deleted later) More...
 
class  cat_ignored_dir
 the ignored cat_directory class, to be promoted later as empty cat_directory if needed More...
 
class  cat_inode
 the root class for all cat_inode More...
 
class  cat_lien
 the symbolic link inode class More...
 
class  cat_mirage
 the hard link implementation, cat_mirage is the named entry owned by a directory it points to a common "cat_etoile class" More...
 
class  cat_nomme
 the base class for all entry that have a name More...
 
class  cat_prise
 the Unix socket inode class More...
 
class  cat_signature
 class cat_signature combines the cat_entree::signature() of the object with its saved_status and read and store this combinason More...
 
class  cat_tube
 the named pipe class More...
 
class  catalogue
 the catalogue class which gather all objects contained in a give archive More...
 
struct  compress_block_header
 block header structure used for storing compressed blocks More...
 
class  compressor
 compression class for gzip and bzip2 algorithms More...
 
class  compressor_zstd
 compression class for zstd algorithms More...
 
class  contextual
 the contextual class adds the information of phases in the generic_file More...
 
class  crc
 pure virtual class defining interface of a CRC object More...
 
class  crc_i
 crc implementation based on infinint More...
 
class  crc_n
 crc implementation based on U_I More...
 
class  crit_action
 the global action for overwriting More...
 
class  crit_constant_action
 the basic constant action More...
 
class  testing
 the testing class binds criterium to actions More...
 
class  crit_chain
 the crit_chain class sequences crit_actions up to full definition of the action More...
 
class  criterium
 the generic criterium class, parent of all criterium More...
 
class  crit_in_place_is_inode
 returns true if the first entry is an inode (whatever is the second) More...
 
class  crit_in_place_is_dir
 returns true if the first entry is a cat_directory (whatever is the second) More...
 
class  crit_in_place_is_file
 returns true if the first entry is a plain file (whatever is the second) More...
 
class  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  crit_in_place_is_new_hardlinked_inode
 
class  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  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  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  crit_in_place_data_saved
 if the entry is not an inode the result is also true More...
 
class  crit_in_place_data_dirty
 return true if the entry is a dirty file (or hard linked dirty file) More...
 
class  crit_in_place_data_sparse
 return true if the entry is a sparse file (or hard linked sparse file) More...
 
class  crit_in_place_has_delta_sig
 return true if the entry has delta signature More...
 
class  crit_same_inode_data
 returns true if both inputs are inode of the same type (file/pipe/device/...) and share inode information More...
 
class  crit_in_place_EA_present
 
class  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  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  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  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  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  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  crit_not
 realises the negation of the criterium given in argument to its constructor More...
 
class  crit_and
 realises the AND operator More...
 
struct  signator
 signator status More...
 
class  crypto_asym
 asymetric ciphering More...
 
class  crypto_sym
 symetrical strong encryption, interface to grypt library More...
 
class  data_dir
 the data_dir class inherits from data_tree and holds the directory tree's parent relationship More...
 
class  data_tree
 the data_tree class stores presence of a given file in a set of archives More...
 
class  database
 the database class defines the dar_manager database More...
 
class  database_archives
 datastructure managing a member of the list of archives used by a database More...
 
class  database_open_options
 options to open a database More...
 
class  database_dump_options
 options to write a database to file More...
 
class  database_add_options
 options to add an archive to base More...
 
class  database_remove_options
 options to remove an archive from the base More...
 
class  database_change_basename_options
 options for changing a given archive's basename More...
 
class  database_change_path_options
 options for changing a given archive's path More...
 
class  database_restore_options
 options for restoration from database More...
 
class  database_used_options
 options for file "used" in archive More...
 
class  datetime
 stores time information More...
 
class  deci
 decimal class, convert infinint from and to decimal represention More...
 
class  defile
 the defile class keep trace of the real path of files while the flow in the filter routines More...
 
struct  delta_sig_block_size
 defines how to calculate delta signature block size based of file size to delta sign More...
 
class  ea_attributs
 the class ea_attributs manages the set of EA that can be associated to an inode More...
 
class  elastic
 the elastic buffer class More...
 
struct  entree_stats
 holds the statistics contents of a catalogue More...
 
class  entrepot
 the Entrepot interface More...
 
class  entrepot_libcurl
 for managing archive into a remote repository More...
 
class  entrepot_local
 
class  Egeneric
 this is the parent class of all exception classes. More...
 
class  Ememory
 exception used when memory has been exhausted More...
 
class  Esecu_memory
 exception used when secure memory has been exhausted More...
 
class  Ebug
 exception used to signal a bug. A bug is triggered when reaching some code that should never be reached More...
 
class  Einfinint
 exception used when arithmetic error is detected when operating on infinint More...
 
class  Elimitint
 exception used when a limitint overflow is detected, the maximum value of the limitint has been exceeded More...
 
class  Erange
 exception used to signal range error More...
 
class  Edeci
 exception used to signal convertion problem between infinint and string (decimal representation) More...
 
class  Efeature
 exception used when a requested feature is not (yet) implemented More...
 
class  Ehardware
 exception used when hardware problem is found More...
 
class  Euser_abort
 exception used to signal that the user has aborted the operation More...
 
class  Edata
 exception used when an error concerning the treated data has been met More...
 
class  Escript
 exception used when error the inter-slice user command returned an error code More...
 
class  Elibcall
 exception used to signal an error in the argument given to libdar call of the API More...
 
class  Ecompilation
 exception used when a requested fearture has not beed activated at compilation time More...
 
class  Ethread_cancel
 exception used when the thread libdar is running in is asked to stop More...
 
class  Esystem
 exception used to carry system error More...
 
class  Enet_auth
 exception used to report authentication error More...
 
class  Ethread_cancel_with_attr
 Ethread_cancel with infinint attribute. More...
 
struct  etage
 the etage structure keep trace of directory contents More...
 
class  fichier_global
 abstraction of filesystem files for entrepot More...
 
class  fichier_local
 filesystem local files More...
 
class  filesystem_backup
 makes a flow sequence of inode to feed the backup filtering routing More...
 
class  filesystem_diff
 make a flow of inode to feed the difference filter routine More...
 
class  filesystem_hard_link_read
 keep trace of hard links when reading the filesystem More...
 
class  filesystem_hard_link_write
 keep trace of already written inodes to restore hard links More...
 
class  filesystem_restore
 receive the flow of inode from the restoration filtering routing and promotes these to real filesystem objects More...
 
class  filesystem_specific_attribute
 Filesystem Specific Attributes (FSA) class. More...
 
class  filesystem_specific_attribute_list
 interface to fileystem for FSA More...
 
class  fsa_infinint
 fsa based on integer More...
 
class  fsa_time
 fsa based on time More...
 
class  generic_file
 this is the interface class from which all other data transfer classes inherit More...
 
class  generic_file_overlay_for_gpgme
 generic_file interface for for gpgme More...
 
class  generic_rsync
 generic_file interface to librsync More...
 
class  generic_to_global_file
 provides a fichier_global interface for any type of generic_file More...
 
class  hash_fichier
 manages the generation of a hash More...
 
class  header
 this class manages the header of each slice More...
 
class  header_flags
 manages the flag field used for now in the archive header More...
 
class  header_version
 manages the archive header and trailer More...
 
class  heap
 the class heap is nothing related to the common heap datastructure this is just a "heap" in the sense of a pool of preallocated objects More...
 
class  label
 manage label data structure used in archive slice headers More...
 
class  libdar_slave
 class implementing the dar_slave feature More...
 
class  libdar_xform
 class implementing the dar_xform feature More...
 
class  limitint
 
class  list_entry
 
class  mask
 the generic class, parent of all masks More...
 
class  bool_mask
 boolean mask, either always true or false More...
 
class  simple_mask
 matches as done on shell command lines (see "man 7 glob") More...
 
class  regular_mask
 matches regular expressions (see "man 7 regex") More...
 
class  not_mask
 negation of another mask More...
 
class  et_mask
 makes an AND operator between two or more masks More...
 
class  ou_mask
 makes the OR operator between two or more masks More...
 
class  simple_path_mask
 string matches if it is subdir of mask or mask is a subdir of expression More...
 
class  same_path_mask
 matches if string is exactly the given mask (no wilde card expression) More...
 
class  exclude_dir_mask
 matches if string is the given constructor string or a sub directory of it More...
 
class  mask_list
 the mask_list class, matches string that are present in a given file More...
 
class  mem_ui
 class mem_ui to keep a copy of a user_interaction object More...
 
class  memory_file
 generic_file stored in memory More...
 
class  mycurl_param_element_generic
 the ancestor class of etherogeneous list/map More...
 
class  mycurl_param_element
 the implemented inherited classes of the abstracted class for etherogeneous list/map More...
 
class  mycurl_param_list
 
class  null_file
 the null_file class implements the /dev/null behavior More...
 
class  parallel_tronconneuse
 this is a partial implementation of the generic_file interface to cypher/decypher data block by block. More...
 
class  path
 the class path is here to manipulate paths in the Unix notation: using'/' More...
 
class  pile
 stores a stack of generic_files writing/reading on each others More...
 
class  proto_generic_file
 ancestor class of generic_file More...
 
class  range
 stores a range of integers or a set of ranges More...
 
class  infinint
 the arbitrary large positive integer class More...
 
class  sar
 Sar class stands for Segmentation And Reassembly class. More...
 
class  scrambler
 scrambler is a very weak encryption scheme More...
 
class  secu_string
 class secu_string More...
 
class  semaphore
 class semaphore More...
 
class  slave_zapette
 this class answers to order given by a zapette object More...
 
class  smart_node
 class which holds the address of the allocated memory for many smart_pointers More...
 
class  smart_pointer
 smart pointer class to be used to automagically manage multiple time pointed to address More...
 
class  statistics
 class used by libdar::archive class to give a summary of treated file during and after an operation More...
 
class  storage
 arbitrary large storage structure More...
 
class  terminateur
 terminateur class indicates the location of the beginning of the catalogue More...
 
class  thread_cancellation
 class to be used as parent to provide checkpoints to inherited classes More...
 
class  tlv
 
class  trivial_sar
 
class  tronc
 makes a segment of a generic_file appear like a real generic_file More...
 
class  tronconneuse
 this is a partial implementation of the generic_file interface to cypher/decypher data block by block. More...
 
class  trontextual
 trontextual class is a contextual class tronc, that's all. More...
 
class  tuyau
 pipe implementation under the generic_file interface. More...
 
class  tuyau_global
 the tuyau_global provides skip()/get_position() features on top of pipe-like object More...
 
class  user_interaction
 This is a pure virtual class that is used by libdar when interaction with the user is required. More...
 
class  user_interaction_blind
 full implementation class for user_interaction, which shows nothing and assumes answer "no" to any question More...
 
class  user_interaction_callback
 full implemented class for user_interaction based on callback functions. More...
 
class  wrapperlib
 this class encapsulates calls to libz or libbz2 More...
 
class  zapette
 zapette emulate a file that is remotely controlled by slave_zapette More...
 

Typedefs

using 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 database_archives_list = std::deque< database_archives >
 list of archives found in a database More...
 
using 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 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 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 fsa_scope = std::set< fsa_family >
 set of fsa families
 
using magic_number = U_32
 
using int_tools_bitfield = unsigned char[8]
 
typedef infinint(* trailing_clear_data_callback) (generic_file &below, const archive_version &reading_ver)
 the trailing_clear_data_callback call back is a mean by which the upper layer cat tell when encrypted data ends More...
 

Enumerations

enum class  modified_data_detection { any_inode_change , mtime_size }
 how to detect data has changed when some fields More...
 
enum class  comparison_fields { all , ignore_owner , mtime , inode_type }
 how to consider file change during comparison and incremental backup More...
 
enum class  hash_algo {
  none , md5 , sha1 , sha512 ,
  argon2
}
 hashing algorithm available More...
 
enum  capa_status { capa_set , capa_clear , capa_unknown }
 the EFFECTIVE set the value of the associated capability for the calling thread More...
 
enum class  saved_status {
  saved , inode_only , fake , not_saved ,
  delta
}
 data saved status for an entry More...
 
enum class  ea_saved_status {
  none , partial , fake , full ,
  removed
}
 EA saved status for an entry. More...
 
enum class  fsa_saved_status { none , partial , full }
 FSA saved status for an entry. More...
 
enum class  compression {
  none = 'n' , gzip = 'z' , bzip2 = 'y' , lzo = 'l' ,
  xz = 'x' , lzo1x_1_15 = 'j' , lzo1x_1 = 'k' , zstd = 'd' ,
  lz4 = 'q'
}
 the different compression algorithm available More...
 
enum  over_action_data {
  data_preserve , data_overwrite , data_preserve_mark_already_saved , data_overwrite_mark_already_saved ,
  data_remove , data_undefined , data_ask
}
 the possible actions for overwriting data More...
 
enum  over_action_ea {
  EA_preserve , EA_overwrite , EA_clear , EA_preserve_mark_already_saved ,
  EA_overwrite_mark_already_saved , EA_merge_preserve , EA_merge_overwrite , EA_undefined ,
  EA_ask
}
 the possible action for overwriting EA More...
 
enum class  crypto_algo {
  none , scrambling , blowfish , aes256 ,
  twofish256 , serpent256 , camellia256
}
 the different cypher available for encryption (strong or weak) More...
 
enum class  db_lookup { found_present , found_removed , not_found , not_restorable }
 the available status of a lookup More...
 
enum class  db_etat {
  et_saved , et_patch , et_patch_unusable , et_inode ,
  et_present , et_removed , et_absent
}
 the status for a founded entry More...
 
enum  elastic_direction { elastic_forward , elastic_backward }
 reading direction of an elastic buffer
 
enum  fsa_family { fsaf_hfs_plus , fsaf_linux_extX }
 FSA family.
 
enum  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  gf_mode { gf_read_only , gf_write_only , gf_read_write }
 generic_file openning modes More...
 
enum  flag_type { flag_type_terminal = 'T' , flag_type_non_terminal = 'N' , flag_type_located_at_end_of_slice = 'E' }
 
enum  mycurl_protocol { proto_ftp , proto_sftp }
 libcurl protocols supported by libdar More...
 
enum class  compressor_block_flags { data = 0 , eof_die = 1 , error = 2 , worker_error = 3 }
 the different flags used to communicate between threads hold by parallel_block_compressor class
 
enum class  tronco_flags {
  normal = 0 , stop = 1 , eof = 2 , die = 3 ,
  data_error = 4 , exception_below = 5 , exception_worker = 6 , exception_error = 7
}
 status flags used between parallel_tronconneuse and its sub-threads
 
enum  wrapperlib_mode { zlib_mode , bzlib_mode , xz_mode }
 

Functions

std::string hash_algo_to_string (hash_algo algo)
 convert hash value to human readable string
 
bool string_to_hash_algo (const std::string &arg, hash_algo &val)
 convert string to hash algorithm More...
 
U_I hash_algo_to_gcrypt_hash (hash_algo algo)
 convert hash value to libgcrypt hash value
 
unsigned char hash_algo_to_char (hash_algo algo)
 convert hash value to char value
 
hash_algo char_to_hash_algo (unsigned char arg)
 convert char to hash_algo More...
 
const archive_version empty_archive_version ()
 
capa_status capability_LINUX_IMMUTABLE (user_interaction &ui, bool verbose)
 
capa_status capability_SYS_RESOURCE (user_interaction &ui, bool verbose)
 
capa_status capability_FOWNER (user_interaction &ui, bool verbose)
 
capa_status capability_CHOWN (user_interaction &ui, bool verbose)
 
const char * cat_entree_signature2string (unsigned char sign)
 convert a signature char to a human readable string
 
compression char2compression (char a)
 convert a char as stored in archive to its compression value
 
bool char2compression_mode (char a)
 
char compression2char (compression c, bool per_block=false)
 convert a compression value to a char for storing in archive
 
std::string compression2string (compression c)
 convert a compression to its string representation
 
compression string2compression (const std::string &a)
 convert a string representing a compression algorithm to its enum compression value
 
crccreate_crc_from_file (proto_generic_file &f, bool old=false)
 generate a CRC object reading it from file
 
crccreate_crc_from_size (infinint width)
 generate a CRC object with adhoc width based on a file size
 
std::string crypto_algo_2_string (crypto_algo algo)
 convert crypto algo to readable std::string
 
char crypto_algo_2_char (crypto_algo a)
 convert crypto algo to char
 
crypto_algo char_2_crypto_algo (char a)
 convert char to crypto algo
 
bool same_signatories (const std::list< signator > &a, const std::list< signator > &b)
 return whether the two signators lists match
 
bool crypto_min_ver_libgcrypt_no_bug ()
 
generic_filedatabase_header_create (const std::shared_ptr< user_interaction > &dialog, const std::string &filename, bool overwrite, compression algozip, U_I compr_level)
 create the header for a dar_manager database More...
 
generic_filedatabase_header_open (const std::shared_ptr< user_interaction > &dialog, const std::string &filename, unsigned char &db_version, compression &algozip, U_I &compr_level)
 read the header of a dar_manager database More...
 
const unsigned char database_header_get_supported_version ()
 
archive_version db2archive_version (unsigned char db_version)
 converts dar_manager database version to dar archive version in order to properly read time fields
 
std::ostream & operator<< (std::ostream &ref, const infinint &arg)
 specific << operator to use infinint in std::ostream More...
 
ea_attributsea_filesystem_read_ea (const std::string &chemin, const mask &filter)
 read EA associated to a given file More...
 
bool ea_filesystem_write_ea (const std::string &chemin, const ea_attributs &val, const mask &filter)
 overwrite some attribute to a given file's attribute list More...
 
void ea_filesystem_clear_ea (const std::string &name, const mask &filter)
 remove all EA of a given file that match a given mask More...
 
bool ea_filesystem_has_ea (const std::string &name)
 test the presence of EA for a given file More...
 
bool ea_filesystem_has_ea (const std::string &name, const mask &filter)
 test the presence of EA for a given file More...
 
const char * dar_gettext (const char *)
 a routine to change NLS domaine forth and back for inline routines
 
template<class T >
T * cloner (const T *x)
 
bool filesystem_tools_has_immutable (const cat_inode &arg)
 
void filesystem_tools_set_immutable (const std::string &target, bool val, user_interaction &ui)
 
void filesystem_tools_supprime (user_interaction &ui, const std::string &ref)
 
void filesystem_tools_widen_perm (user_interaction &dialog, const cat_inode &ref, const std::string &chem, comparison_fields what_to_check)
 
void filesystem_tools_make_owner_perm (user_interaction &dialog, const cat_inode &ref, const std::string &chem, comparison_fields what_to_check, const fsa_scope &scope)
 
void filesystem_tools_make_date (const cat_inode &ref, const std::string &chem, comparison_fields what_to_check, const fsa_scope &scope)
 
void filesystem_tools_attach_ea (const std::string &chemin, cat_inode *ino, const mask &ea_mask)
 
bool filesystem_tools_is_nodump_flag_set (user_interaction &dialog, const path &chem, const std::string &filename, bool info)
 
pathfilesystem_tools_get_root_with_symlink (user_interaction &dialog, const path &root, bool info_details)
 
mode_t filesystem_tools_get_file_permission (const std::string &path)
 
void filesystem_tools_make_delta_patch (const std::shared_ptr< user_interaction > &dialog, const cat_file &existing, const std::string &existing_pathname, const cat_file &patcher, const path &directory)
 
fichier_localfilesystem_tools_create_non_existing_file_based_on (const std::shared_ptr< user_interaction > &dialog, std::string filename, path where, std::string &new_filename)
 create in dirname a brand-new filename which name derives from filename More...
 
void filesystem_tools_copy_content_from_to (const std::shared_ptr< user_interaction > &dialog, const std::string &source_path, const std::string &destination_path, const crc *expected_crc)
 
bool filesystem_tools_read_linux_birthtime (const std::string &target, datetime &val)
 read the birthtime of target inode More...
 
void filtre_restore (const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, const catalogue &cat, const path &fs_racine, bool fs_warn_overwrite, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, statistics &st, const mask &ea_mask, bool flat, comparison_fields what_to_check, bool warn_remove_no_match, bool empty, bool empty_dir, const crit_action &x_overwrite, archive_options_extract::t_dirty dirty, bool only_deleted, bool not_deleted, const fsa_scope &scope, bool ignore_unix_sockets)
 
void filtre_sauvegarde (const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, const pile_descriptor &pdesc, catalogue &cat, const catalogue &ref, const path &fs_racine, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, bool display_finished, statistics &st, bool make_empty_dir, const mask &ea_mask, const mask &compr_mask, const infinint &min_compr_size, bool nodump, const infinint &hourshift, bool alter_time, bool furtive_read_mode, const filesystem_ids &same_fs, comparison_fields what_to_check, bool snapshot, bool cache_directory_tagging, bool security_check, const infinint &repeat_count, const infinint &repeat_byte, const infinint &fixed_date, const infinint &sparse_file_min_size, const std::string &backup_hook_file_execute, const mask &backup_hook_file_mask, bool ignore_unknown, const fsa_scope &scope, const std::string &exclude_by_ea, bool delta_signature, const infinint &delta_sig_min_size, const mask &delta_mask, bool delta_diff, bool auto_zeroing_neg_dates, const std::set< std::string > &ignored_symlinks, modified_data_detection mod_data_detect, const delta_sig_block_size &delta_sig_block_len)
 
void filtre_difference (const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, const catalogue &cat, const path &fs_racine, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, statistics &st, const mask &ea_mask, bool alter_time, bool furtive_read_mode, comparison_fields what_to_check, const infinint &hourshift, bool compare_symlink_date, const fsa_scope &scope, bool isolated_mode)
 
void filtre_test (const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, const catalogue &cat, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, bool empty, statistics &st)
 
void filtre_merge (const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, const pile_descriptor &pdesc, catalogue &cat, const catalogue *ref1, const catalogue *ref2, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, statistics &st, bool make_empty_dir, const mask &ea_mask, const mask &compr_mask, const infinint &min_compr_size, bool keep_compressed, const crit_action &overwrite, bool warn_overwrite, bool decremental_mode, const infinint &sparse_file_min_size, const fsa_scope &scope, bool delta_signature, bool build_delta_sig, const infinint &delta_sig_min_size, const mask &delta_mask, const delta_sig_block_size &signature_block_size)
 
void filtre_merge_step0 (const std::shared_ptr< user_interaction > &dialog, const catalogue *ref1, const catalogue *ref2, statistics &st, bool decremental_mode, crit_action *&decr, const crit_action *&overwrite, bool &abort, thread_cancellation &thr_cancel)
 initialize variables used for merging in step1 and step2 More...
 
void filtre_merge_step1 (const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, catalogue &cat, const catalogue *ref1, const catalogue *ref2, bool info_details, bool display_treated, bool display_skipped, statistics &st, bool make_empty_dir, bool warn_overwrite, bool decremental_mode, crit_action *&decr, const crit_action *&overwrite, bool &abort, thread_cancellation &thr_cancel)
 builds a catalogue from two refs with the given policy and filters
 
void filtre_merge_step2 (const std::shared_ptr< user_interaction > &dialog, const pile_descriptor &pdesc, catalogue &cat, bool info_details, bool display_treated, bool display_treated_only_dir, const mask &compr_mask, const infinint &min_compr_size, bool keep_compressed, const infinint &sparse_file_min_size, bool delta_signature, bool build_delta_sig, const infinint &delta_sig_min_size, const mask &delta_mask, bool &abort, thread_cancellation &thr_cancel, bool repair_mode, const delta_sig_block_size &signature_block_size)
 copies data of "cat" catalogue to the pdesc of a brand new archive More...
 
void filtre_sequentially_read_all_catalogue (catalogue &cat, const std::shared_ptr< user_interaction > &dialog, bool lax_read_mode)
 
std::string fsa_family_to_string (fsa_family f)
 convert fsa family to readable std::string
 
std::string fsa_nature_to_string (fsa_nature n)
 convert fsa nature to readable std::string
 
fsa_scope all_fsa_families ()
 provides a scope containing all FSA families
 
infinint fsa_scope_to_infinint (const fsa_scope &val)
 convert an fsa scope to infinint
 
fsa_scope infinint_to_fsa_scope (const infinint &ref)
 convert an infinint to fsa_scape
 
std::string fsa_scope_to_string (bool saved, const fsa_scope &scope)
 convert an fsa scope to readable string
 
void 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 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 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 close_and_clean ()
 
const char * generic_file_get_name (gf_mode mode)
 provides a human readable string defining the gf_mode given in argument
 
void int_tools_swap_bytes (unsigned char &a, unsigned char &b)
 
void int_tools_swap_bytes (unsigned char *a, U_I size)
 
void int_tools_expand_byte (unsigned char a, int_tools_bitfield &bit)
 
void int_tools_contract_byte (const int_tools_bitfield &b, unsigned char &a)
 
template<class T >
int_tools_rotate_right_one_bit (T v)
 
template<class T >
int_tools_maxof_aggregate (T unused)
 
void integer_check ()
 checks sign and width of integer types More...
 
bool integers_system_is_big_endian ()
 returns true if the system is big endian, false else More...
 
template<class B >
limitint< B > operator+ (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > operator+ (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > operator- (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > operator- (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > operator* (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > operator* (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > operator/ (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > operator/ (const limitint< B > &a, U_I b)
 
template<class B >
limitint< B > operator% (const limitint< B > &, const limitint< B > &)
 
template<class B >
limitint< B > operator>> (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > operator>> (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > operator<< (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > operator<< (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > operator& (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > operator& (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > operator| (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > operator| (const limitint< B > &a, const limitint< B > &bit)
 
template<class B >
limitint< B > operator^ (const limitint< B > &a, U_32 bit)
 
template<class B >
limitint< B > operator^ (const limitint< B > &a, const limitint< B > &bit)
 
template<class T >
void euclide (T a, T b, T &q, T &r)
 
template<class B >
void euclide (limitint< B > a, U_I b, limitint< B > &q, limitint< B > &r)
 
trivial_sarmacro_tools_open_archive_tuyau (const std::shared_ptr< user_interaction > &dialog, S_I fd, gf_mode mode, const label &internal_name, const label &data_name, bool slice_header_format_07, const std::string &execute)
 create an container to write an archive to a pipe
 
void macro_tools_open_archive (const std::shared_ptr< user_interaction > &dialog, const std::shared_ptr< entrepot > &where, const std::string &basename, const infinint &min_digits, const std::string &extension, crypto_algo crypto, const secu_string &pass, U_32 crypto_size, pile &stack, header_version &ver, const std::string &input_pipe, const std::string &output_pipe, const std::string &execute, infinint &second_terminateur_offset, bool lax, bool has_external_cat, bool sequential_read, bool info_details, std::list< signator > &gnupg_signed, slice_layout &sl, U_I multi_threaded_crypto, U_I multi_threaded_compress, bool header_only)
 setup the given pile object to contain a stack of generic_files suitable to read an archive More...
 
cataloguemacro_tools_get_derivated_catalogue_from (const std::shared_ptr< user_interaction > &dialog, pile &data_stack, pile &cata_stack, const header_version &ver, bool info_details, infinint &cat_size, const infinint &second_terminateur_offset, std::list< signator > &signatories, bool lax_mode)
 uses terminator to skip to the position where to find the catalogue and read it, taking care of having this catalogue pointing to the real data (context of isolated catalogue — cata_stack — used to rescue an internal archive — data_stack)
 
cataloguemacro_tools_get_catalogue_from (const std::shared_ptr< user_interaction > &dialog, pile &stack, const header_version &ver, bool info_details, infinint &cat_size, const infinint &second_terminateur_offset, std::list< signator > &signatories, bool lax_mode)
 uses terminator to skip to the position where to find the catalogue and read it
 
cataloguemacro_tools_read_catalogue (const std::shared_ptr< user_interaction > &dialog, const header_version &ver, const pile_descriptor &cata_pdesc, const infinint &cat_size, std::list< signator > &signatories, bool lax_mode, const label &lax_layer1_data_name, bool only_detruits)
 read the catalogue from cata_stack assuming the cata_stack is positionned at the beginning of the area containing archive's dumped data
 
cataloguemacro_tools_lax_search_catalogue (const std::shared_ptr< user_interaction > &dialog, pile &stack, const archive_version &edition, compression compr_algo, bool info_details, bool even_partial_catalogues, const label &layer1_data_name)
 
infinint macro_tools_get_terminator_start (generic_file &f, const archive_version &reading_ver)
 
void macro_tools_create_layers (const std::shared_ptr< user_interaction > &dialog, pile &layers, header_version &ver, slice_layout &slicing, const slice_layout *ref_slicing, const std::shared_ptr< entrepot > &sauv_path_t, const std::string &filename, const std::string &extension, bool allow_over, bool warn_over, bool info_details, const infinint &pause, compression algo, U_I compression_level, U_I compression_block_size, const infinint &file_size, const infinint &first_file_size, 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, bool empty, const std::string &slice_permission, bool add_marks_for_sequential_reading, const std::string &user_comment, hash_algo hash, const infinint &slice_min_digits, const label &internal_name, const label &data_name, const infinint &iteration_count, hash_algo kdf_hash, U_I multi_threaded_crypto, U_I multi_threaded_compress)
 build layers for a new archive More...
 
void macro_tools_close_layers (const std::shared_ptr< user_interaction > &dialog, pile &layers, const header_version &ver, const catalogue &cat, bool info_details, crypto_algo crypto, compression algo, const std::vector< std::string > &gnupg_recipients, const std::vector< std::string > &gnupg_signatories, bool empty)
 dumps the catalogue and close all the archive layers to terminate the archive More...
 
range macro_tools_get_slices (const cat_nomme *obj, slice_layout sl)
 gives the location of data EA and FSA (when they are saved) of the object given in argument More...
 
void macro_tools_open_pipes (const std::shared_ptr< user_interaction > &dialog, const std::string &input, const std::string &output, tuyau *&in, tuyau *&out)
 open a pair of tuyau objects encapsulating two named pipes. More...
 
proto_compressor * macro_tools_build_streaming_compressor (compression algo, generic_file &base, U_I compression_level, U_I num_workers)
 return a proto_compressor object realizing the desired (de)compression level/aglo on top of "base" in streaming mode More...
 
proto_compressor * macro_tools_build_block_compressor (compression algo, generic_file &base, U_I compression_level, U_I num_workers, U_I block_size)
 return a proto_compressor object realizing the desired (de)compression level/algo on to of "base" in block mode More...
 
mycurl_protocol string_to_mycurl_protocol (const std::string &arg)
 extract mycurl_protocol from a given URL
 
over_action_ea op_tools_crit_ask_user_for_EA_action (user_interaction &dialog, const std::string &full_name, const cat_entree *already_here, const cat_entree *dolly)
 ask user for EA action More...
 
over_action_ea op_tools_crit_ask_user_for_FSA_action (user_interaction &dialog, const std::string &full_name, const cat_entree *already_here, const cat_entree *dolly)
 ask user for FSA action More...
 
over_action_data op_tools_crit_ask_user_for_data_action (user_interaction &dialog, const std::string &full_name, const cat_entree *already_here, const cat_entree *dolly)
 ask user for Data action More...
 
void op_tools_crit_show_entry_info (user_interaction &dialog, const std::string &full_name, const cat_entree *already_here, const cat_entree *dolly)
 show information suited for user comparison and decision for entry in conflict More...
 
infinint operator+ (const infinint &, const infinint &)
 
infinint operator- (const infinint &, const infinint &)
 
infinint operator* (const infinint &, const infinint &)
 
infinint operator* (const infinint &, const unsigned char)
 
infinint operator* (const unsigned char, const infinint &)
 
infinint operator/ (const infinint &, const infinint &)
 
infinint operator% (const infinint &, const infinint &)
 
infinint operator& (const infinint &a, const infinint &bit)
 
infinint operator| (const infinint &a, const infinint &bit)
 
infinint operator^ (const infinint &a, const infinint &bit)
 
infinint operator>> (const infinint &a, U_32 bit)
 
infinint operator>> (const infinint &a, const infinint &bit)
 
infinint operator<< (const infinint &a, U_32 bit)
 
infinint operator<< (const infinint &a, const infinint &bit)
 
void euclide (infinint a, const infinint &b, infinint &q, infinint &r)
 
std::string sar_tools_make_filename (const std::string &base_name, const infinint &num, const infinint &min_digits, const std::string &ext)
 
bool sar_tools_extract_num (const std::string &filename, const std::string &base_name, const infinint &min_digits, const std::string &ext, infinint &ret)
 
bool sar_tools_get_higher_number_in_dir (user_interaction &ui, entrepot &entr, const std::string &base_name, const infinint &min_digits, const std::string &ext, infinint &ret)
 
void sar_tools_remove_higher_slices_than (entrepot &entr, const std::string &base_name, const infinint &min_digits, const std::string &ext, const infinint &higher_slice_num_to_keep, user_interaction &ui)
 
std::string sar_tools_make_padded_number (const std::string &num, const infinint &min_digits)
 
void tools_init ()
 libdar internal use only: it is launched from get_version() and initializes tools internal variables
 
void tools_end ()
 libdar internal use only: it is launched from close_and_clean() and releases tools internal variables
 
void tools_write_string (generic_file &f, const std::string &s)
 write a string to a file with a '\0' at then end More...
 
void tools_read_string (generic_file &f, std::string &s)
 read a string from a file expecting it to terminate by '\0' More...
 
void tools_write_string_all (generic_file &f, const std::string &s)
 write a string to a file, '\0' has no special meaning nor is added at the end More...
 
void tools_read_string_size (generic_file &f, std::string &s, infinint taille)
 read a string if given size from a file '\0' has no special meaning More...
 
infinint tools_get_filesize (const path &p)
 retrieve the size in byte of a file More...
 
std::string tools_display_integer_in_metric_system (infinint number, const std::string &unit, bool binary)
 
std::string::iterator tools_find_last_char_of (std::string &s, unsigned char v)
 give a pointer to the last character of the given value in the given string More...
 
void tools_blocking_read (int fd, bool mode)
 set blocking/not blocking mode for reading on a file descriptor More...
 
std::string tools_name_of_uid (const infinint &uid)
 convert uid to name in regards to the current system's configuration More...
 
std::string tools_name_of_gid (const infinint &gid)
 convert gid to name in regards of the current system's configuration More...
 
std::string tools_uword2str (U_16 x)
 convert unsigned word to string More...
 
std::string tools_int2str (S_I x)
 convert integer to string More...
 
std::string tools_uint2str (U_I x)
 
std::string tools_addspacebefore (std::string s, U_I expected_size)
 prepend spaces before the given string More...
 
std::string tools_display_date (const datetime &date)
 convert a date in second to its human readable representation More...
 
char * tools_str2charptr (const std::string &x)
 convert a string to a char * More...
 
U_I tools_str2int (const std::string &x)
 convert an integer written in decimal notation to the corresponding value More...
 
void tools_system (user_interaction &dialog, const std::vector< std::string > &argvector)
 wrapper to the "system" system call. More...
 
void tools_system_with_pipe (const std::shared_ptr< user_interaction > &dialog, const std::string &dar_cmd, const std::vector< std::string > &argvpipe)
 wrapper to the "system" system call using anonymous pipe to tranmit arguments to the child process More...
 
void tools_write_vector (generic_file &f, const std::vector< std::string > &x)
 write a list of string to file More...
 
void tools_read_vector (generic_file &f, std::vector< std::string > &x)
 read a list of string from a file More...
 
std::string tools_concat_vector (const std::string &separator, const std::vector< std::string > &x)
 concatenate a vectors of strings in a single string More...
 
std::vector< std::string > operator+ (std::vector< std::string > a, std::vector< std::string > b)
 concatenate two vectors More...
 
bool tools_is_equal_with_hourshift (const infinint &hourshift, const datetime &date1, const datetime &date2)
 test if two dates are equal taking care of a integer hour of difference More...
 
template<class T >
std::vector< T > operator+= (std::vector< T > &a, const std::vector< T > &b)
 template function to add two vectors
 
std::string tools_readlink (const char *root)
 returns the file pointed to by a symbolic link (or transparent if the file is not a symlink). More...
 
void tools_noexcept_make_date (const std::string &chem, bool symlink, const datetime &last_acc, const datetime &last_mod, const datetime &birth)
 set dates of a given file, no exception thrown More...
 
void tools_make_date (const std::string &chemin, bool symlink, const datetime &access, const datetime &modif, const datetime &birth)
 set dates of a given file, may throw exception More...
 
bool tools_is_case_insensitive_equal (const std::string &a, const std::string &b)
 compare two string in case insensitive manner More...
 
void tools_to_upper (const std::string &r, std::string &uppered)
 convert a string to upper case More...
 
std::string tools_printf (const char *format,...)
 make printf-like formating to a std::string More...
 
std::string tools_vprintf (const char *format, va_list ap)
 make printf-like formating to a std::string More...
 
bool tools_do_some_files_match_mask_regex (const entrepot &ent, const std::string &file_mask)
 test the presence of files corresponding to a given mask in a directory (regex mask) More...
 
void tools_unlink_file_mask_regex (user_interaction &dialog, const entrepot &ent, const std::string &file_mask, bool info_details)
 remove files from a given directory More...
 
void tools_avoid_slice_overwriting_regex (user_interaction &dialog, const entrepot &ent, const std::string &basename, const std::string &extension, bool info_details, bool allow_overwriting, bool warn_overwriting, bool dry_run)
 prevents slice overwriting: check the presence of slice and if necessary ask the user if they can be removed More...
 
bool tools_are_on_same_filesystem (const std::string &file1, const std::string &file2)
 tells whether two files are on the same mounted filesystem More...
 
path tools_relative2absolute_path (const path &src, const path &cwd)
 transform a relative path to an absolute one given the current directory value More...
 
void tools_block_all_signals (sigset_t &old_mask)
 block all signals (based on POSIX sigprocmask) More...
 
void tools_set_back_blocked_signals (sigset_t old_mask)
 unblock signals according to given mask More...
 
U_I tools_count_in_string (const std::string &s, const char a)
 counts the number of a given char in a given string More...
 
datetime tools_get_mtime (user_interaction &dialog, const std::string &s, bool auto_zeroing, bool silent, const std::set< std::string > &ignored_as_symlink=std::set< std::string >())
 returns the last modification date of the given file More...
 
infinint tools_get_size (const std::string &s)
 returns the size of the given plain file More...
 
infinint tools_get_extended_size (std::string s, U_I base)
 convert the given string to infinint taking care of multiplication suffixes like k, M, T, etc. More...
 
std::string tools_substitute (const std::string &hook, const std::map< char, std::string > &corres)
 produce the string resulting from the substition of % macro defined in the map More...
 
std::string tools_hook_substitute (const std::string &hook, const std::string &path, const std::string &basename, const std::string &num, const std::string &padded_num, const std::string &ext, const std::string &context, const std::string &base_url)
 produces the string resulting from the substitution of %... macro More...
 
void tools_hook_execute (user_interaction &ui, const std::string &cmd_line)
 execute and retries at user will a given command line More...
 
void tools_hook_substitute_and_execute (user_interaction &ui, const std::string &hook, const std::string &path, const std::string &basename, const std::string &num, const std::string &padded_num, const std::string &ext, const std::string &context, const std::string &base_url)
 subsititue and execute command line More...
 
std::string tools_output2xml (const std::string &src)
 convert string for xml output More...
 
U_I tools_octal2int (const std::string &perm)
 convert octal string to integer More...
 
std::string tools_int2octal (const U_I &perm)
 convert a number to a string corresponding to its octal representation More...
 
char tools_cast_type_to_unix_type (char type)
 change the libdar internal type representation to the usual unix char type
 
std::string tools_get_permission_string (char type, U_32 perm, bool hard)
 convert a permission number into its string representation (rwxrwxrwx)
 
void tools_set_permission (S_I fd, U_I perm)
 change the permission of the file which descriptor is given More...
 
U_I tools_get_permission (S_I fd)
 obtain the permission of the file which descriptor is given More...
 
uid_t tools_ownership2uid (const std::string &user)
 change ownership of the file which descriptor is given More...
 
uid_t tools_ownership2gid (const std::string &group)
 convert string group name or gid to numeric gid value More...
 
void tools_set_ownership (S_I filedesc, const std::string &slice_user, const std::string &slice_group)
 change ownership of the file which descriptor is given More...
 
void tools_memxor (void *dest, const void *src, U_I n)
 Produces in "dest" the XORed value of "dest" and "src". More...
 
tlv_list tools_string2tlv_list (user_interaction &dialog, const U_16 &type, const std::vector< std::string > &data)
 Produces a list of TLV from a constant type and a list of string. More...
 
U_I tools_pseudo_random (U_I max)
 Produces a pseudo random number x, where 0 <= x < max. More...
 
template<class N , class B >
std::deque< B > tools_number_base_decomposition_in_big_endian (N number, const B &base)
 Template for the decomposition of any number in any base (decimal, octal, hexa, etc.) More...
 
std::string tools_unsigned_char_to_hexa (unsigned char x)
 convert a unsigned char into its hexa decima representation More...
 
std::string tools_string_to_hexa (const std::string &input)
 convert a string into its hexadecima representation More...
 
infinint tools_file_size_to_crc_size (const infinint &size)
 Defines the CRC size to use for a given filesize. More...
 
std::string tools_getcwd ()
 get current working directory
 
std::string tools_get_compression_ratio (const infinint &storage_size, const infinint &file_size, bool compressed)
 return the string about compression ratio
 
std::string tools_strerror_r (int errnum)
 wrapper routine to strerror_r
 
void tools_secu_string_show (user_interaction &dialog, const std::string &msg, const secu_string &key)
 display the content of a secu_string, this function is only for trouble shooting!
 
template<class T >
tools_max (T a, T b)
 
template<class T >
tools_min (T a, T b)
 
void tools_unlink (const std::string &filename)
 remove from filesystem the file which path is given
 
std::string tools_escape_chars_in_string (const std::string &val, const char *to_escape)
 escape with a anti-slash character a set of chars found in the given string
 
bool tools_infinint2U_64 (infinint val, U_64 &res)
 convert an infinint to U_64 (aka "uint64_t" or yet "unsigned long long") More...
 
bool tools_my_atoi (const char *a, U_I &val)
 ascii to integer conversion More...
 
infinint tools_double2infinint (double arg)
 convert a double (float) to infinint (integer) taking care of rounding it to the closest value
 
template<class T >
void tools_check_negative_date (T &val, user_interaction &ui, const char *inode_path, const char *nature, bool ask_before, bool silent)
 check the value is not negative, and if asked set it to zero More...
 
infinint tools_upper_rounded_log2 (const infinint &ref)
 compute an approximate log2 of the argument
 
infinint tools_lower_rounded_exp2 (const infinint &ref)
 compute an approximate exp2 of the argument
 
infinint tools_rounded_square_root (const infinint &ref)
 compute an approximate square root of the argument
 
infinint tools_rounded_cube_root (const infinint &ref)
 compute an approximate cube root of the argument
 
std::string sar_make_filename (const std::string &base_name, const infinint &num, const infinint &min_digits, const std::string &ext)
 return the name of a slice given the base_name, slice number and extension
 

Variables

constexpr U_I LIBDAR_COMPILE_TIME_MAJOR = 6
 libdar Major version defined at compilation time
 
constexpr U_I LIBDAR_COMPILE_TIME_MEDIUM = 7
 libdar Medium version defined at compilation time
 
constexpr U_I LIBDAR_COMPILE_TIME_MINOR = 3
 libdar Minor version defined at compilation time
 
const U_32 SAUV_MAGIC_NUMBER = 123
 
const label label_zero
 
constexpr U_I GLOBAL_ELASTIC_BUFFER_SIZE = 51200
 
const archive_version macro_tools_supported_version
 
const std::string LIBDAR_STACK_LABEL_UNCOMPRESSED
 
const std::string LIBDAR_STACK_LABEL_CLEAR
 
const std::string LIBDAR_STACK_LABEL_UNCYPHERED
 
const std::string LIBDAR_STACK_LABEL_LEVEL1
 
const std::string PSEUDO_ROOT
 root name to use when archive operation does not use filesystem (archive testing for example)
 
const path FAKE_ROOT
 root path object based on PSEUDO_ROOT
 
constexpr const U_I default_uncompressed_block_size = 102400
 
constexpr const U_I min_uncompressed_block_size = 100
 
const int WR_OK = 0
 
const int WR_MEM_ERROR = 1
 
const int WR_VERSION_ERROR = 2
 
const int WR_STREAM_ERROR = 3
 
const int WR_DATA_ERROR = 4
 
const int WR_NO_FLUSH = 5
 
const int WR_BUF_ERROR = 6
 
const int WR_STREAM_END = 7
 
const int WR_FINISH = 8
 
constexpr unsigned char ANSWER_TYPE_DATA = 'D'
 
constexpr unsigned char ANSWER_TYPE_INFININT = 'I'
 
constexpr U_I REQUEST_SIZE_SPECIAL_ORDER = 0
 
constexpr U_I REQUEST_OFFSET_END_TRANSMIT = 0
 
constexpr U_I REQUEST_OFFSET_GET_FILESIZE = 1
 
constexpr U_I REQUEST_OFFSET_CHANGE_CONTEXT_STATUS = 2
 
constexpr U_I REQUEST_IS_OLD_START_END_ARCHIVE = 3
 
constexpr U_I REQUEST_GET_DATA_NAME = 4
 
constexpr U_I REQUEST_FIRST_SLICE_HEADER_SIZE = 5
 
constexpr U_I REQUEST_OTHER_SLICE_HEADER_SIZE = 6
 

Detailed Description

libdar namespace encapsulate all libdar symbols

. class database_open_options . class database_dump_options . class database_add_options . class database_remove_options . class database_change_basename_options . class database_change_path_options . class database_restore_options . class database_used_options

Several classes are defined here:

the compressed block structure is a sequence of 2 types of data

COMPRESSION PROCESS

*** in the archive:

the block stream is an arbitrary length sequence of data blocks followed by an eof. Each data block consists of an infinint determining the length of following field that stores the compressed data of variable length the compressed data comes from block of uncompressed data of constant size (except the last one that is smaller. THis information is needed to prepare memory allocation and is stored in the archive header (archive reading) or provided by the user (archive creation). Providing 0 for the block size leads to the classical/historical but impossible to parallelize compression algorithm (gzip, bzip2, etc.)

*** between threads:

when compressing, the inherited_write call produces a set of data block to the ratelier_scatter treated by a set of zip_workers which in turn passe the resulting compressed data blocks to the zip_below_write thread.

last when eof is reached or during terminate() method, N eof blocks are sent where N is the number of zip_workers, either with flag eof, or die (termination). the eof flag is just passed by the workers but the zip_below_write thread collects them and awakes the main thread once all are collected and thus all data written. the die flag drives the thread termination, worker first pass them to the zip_below_thread which collect them and terminates too.

blocks used are of type crypto_segment the clear_data containes the uncompressed data, the crypted_data block contains the compressed data. The block_index is not used.

upon receiption of data blocks, each zip_workers read the clear_data and produce the compressed data to the crypted_data mem_block and pushes that to the ratelier_gather which passed to and write down by the zip_below_write.

UNCOMPRESSON PROCESS

the zip_below_read expectes to find the clear_block size at construction time and provides a method to read it by the parallel_block_compressor thread which allocate the mem_blocks accordingly in a pool (same as parallel_tronconneuse). The zip_below thread once started reading the blocks and push them into the ratelier_scatter (without the initial U_32 telling the size of the compressed data that follows). Upon error (incoherent strucuture ....) the thread pushes N error block in the ratelier_scatter and terminates

the zip_workers fetch a block and put the corresponding uncompressed data to the clear_data mem_block then push the crypto_segment to the ratelier_gather. Upon uncompression error, the error flag is set with the crypto_segment, the zip_worker continues to work anyway until it reads a crypto_segment with the eof_die flag from the ratelier_scatter. Upon reception of the error flag from the ratelier_gather the parallel_compression thread invoke a method of the zip_below_read that triggers the thread to terminate after having pushed N error blocks to the ratelier_scatter which in turns triggers the termination of the zip_workers. The parallel_block_compressor thread can then gather the N error block from the ratelier_gather, join() the threads and report the compression error

Several classes are defined here:

the class thread_cancellation implemented in this module permits both the definition of checkpoints where is looked whether the current thread has been marked as to be canceled by the user and the interface that let the user request a thread to be cancelled The advantage of this class is that it then throws a Euser_abort exception which properly terminates the libdar operation in the thread freeing allocated memory and release mutex properly. Note that the thread is not cancelled but the libdar call in this thread returns as soon as a checkpoint is met during the execution.

Function Documentation

◆ integer_check()

void libdar::integer_check ( )

checks sign and width of integer types

Note
this call may throws an Ehardware exception

◆ integers_system_is_big_endian()

bool libdar::integers_system_is_big_endian ( )

returns true if the system is big endian, false else

Note
this call may throw an Ehardware() exception if the system is not coherent for all integer types