Disk ARchive  2.5.8
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_options_create
 class holding optional parameters used to create an archive More...
 
class  archive_options_extract
 class holding optional parameters used to extract files from an existing archive More...
 
class  archive_options_isolate
 class holding optional parameters used to isolate 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_merge
 class holding optional parameters used to proceed to the merge operation More...
 
class  archive_options_read
 class holding optional parameters used to read 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_version
 
class  bool_mask
 boolean mask, either always true or false More...
 
class  cache
 
class  cat_blockdev
 the block device class More...
 
class  cat_chardev
 the char device 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 (etoile means star in French, seen a star as a point from which are thrown many ray of light) 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_tube
 the named pipe class More...
 
class  catalogue
 the catalogue class which gather all objects contained in a give archive More...
 
class  compressor
 compression class for gzip and bzip2 algorithms More...
 
class  crit_action
 the global action for overwriting More...
 
class  crit_and
 realises the AND operator More...
 
class  crit_chain
 the crit_chain class sequences crit_actions up to full definition of the action More...
 
class  crit_constant_action
 the basic constant action 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_dirty
 return true if the entry is a dirty file (or hard linked dirty file) More...
 
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
 returns true if the data of the first entry is more recent or of the same date as the fixed date given in argument to the constructor More...
 
class  crit_in_place_data_saved
 returns true if the data of the first entry is saved int the archive (not marked as unchanged since the archive of reference) 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_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_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_EA_present
 
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_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_inode
 returns true if the first entry is an inode (whatever is the second) More...
 
class  crit_in_place_is_new_hardlinked_inode
 returns true if the first entry is a inode with several hard links (whatever is the second entry) and also if this first entry is the first we meet that points to this hard linked inode 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_not
 realises the negation of the criterium given in argument to its constructor 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  criterium
 the generic criterium class, parent of all criterium More...
 
class  crypto_sym
 
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_add_options
 options to add an archive to 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_dump_options
 options to write a database to file More...
 
class  database_open_options
 
class  database_remove_options
 options to remove an archive from the base More...
 
class  database_restore_options
 options for restoration from database More...
 
class  database_used_options
 options for file "used" in archive More...
 
class  deci
 
class  defile
 
class  ea_attributs
 
class  Ebug
 exception used to signal a bug. A bug is triggered when reaching some code that should never be reached More...
 
class  Ecompilation
 exception used when a requested fearture has not beed activated at compilation time More...
 
class  Edata
 exception used when an error concerning the treated data has been met 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  Egeneric
 this is the parent class of all exception classes. More...
 
class  Ehardware
 exception used when hardware problem is found More...
 
class  Einfinint
 exception used when arithmetic error is detected when operating on infinint More...
 
class  elastic
 the elastic buffer class More...
 
class  Elibcall
 exception used to signal an error in the argument given to libdar call of the API More...
 
class  Elimitint
 exception used when a limitint overflow is detected, the maximum value of the limitint has been exceeded More...
 
class  Ememory
 exception used when memory has been exhausted More...
 
struct  entree_stats
 holds the statistics contents of a catalogue More...
 
class  entrepot
 the Entrepot interface More...
 
class  entrepot_local
 
class  Erange
 exception used to signal range error More...
 
class  Escript
 exception used when error the inter-slice user command returned an error code More...
 
class  Esecu_memory
 exception used when secure memory has been exhausted More...
 
class  Esystem
 exception used to carry system error More...
 
class  et_mask
 makes an AND operator between two or more masks More...
 
struct  etage
 the etage structure keep trace of directory contents More...
 
class  Ethread_cancel
 exception used when the thread libdar is running in is asked to stop More...
 
class  Ethread_cancel_with_attr
 Ethread_cancel with infinint attribute. More...
 
class  Euser_abort
 exception used to signal that the user has aborted the operation More...
 
class  exclude_dir_mask
 matches if string is the given constructor string or a sub directory of it More...
 
class  fichier_global
 abstraction of filesystem files for entrepot More...
 
class  fichier_local
 filesystem local files More...
 
class  filesystem_backup
 make 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
 
class  generic_file
 this is the interface class from which all other data transfer classes inherit More...
 
class  header
 this class manages the header of each slice More...
 
class  header_version
 manages the archive header and trailer More...
 
class  infinint
 the arbitrary large positive integer class More...
 
class  limitint
 
class  list_entry
 
class  mask
 the generic class, parent of all masks More...
 
class  mask_list
 
class  mem_allocator
 generic interface of objects that need to be informed that a memory block they manage has been released More...
 
class  mem_manager
 generic interface of memory managers that create and delete mem_allocator objects depending on requests More...
 
class  mem_ui
 class mem_ui to keep a copy of a user_interaction object More...
 
class  not_mask
 negation of another mask More...
 
class  null_file
 the null_file class implements the /dev/null behavior More...
 
class  on_pool
 
class  ou_mask
 makes the OR operator between two or more masks More...
 
class  path
 the class path is here to manipulate paths in the Unix notation: using'/' More...
 
class  regular_mask
 matches regular expressions (see "man 7 regex") More...
 
class  same_path_mask
 matches if string is exactly the given mask (no wilde card expression) 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  simple_mask
 matches as done on shell command lines (see "man 7 glob") More...
 
class  simple_path_mask
 string matches if it is subdir of mask or mask is a subdir of expression More...
 
class  slave_zapette
 this class answers to order given by a zapette object More...
 
class  smart_node
 
class  smart_pointer
 
class  statistics
 structure returned by libdar call to give a summary of the operation done in term of file treated More...
 
class  storage
 arbitrary large storage structure More...
 
class  terminateur
 terminateur class indicates the location of the beginning of the catalogue More...
 
class  testing
 the testing class binds criterium to actions 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  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

typedef U_16 archive_num
 
typedef std::set< fsa_familyfsa_scope
 
typedef U_32 magic_number
 
typedef unsigned char int_tools_bitfield[8]
 

Enumerations

enum  capa_status { capa_set, capa_clear, capa_unknown }
 
enum  saved_status { s_saved, s_fake, s_not_saved }
 
enum  compression {
  none = 'n', gzip = 'z', bzip2 = 'y', lzo = 'l',
  xz = 'x'
}
 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
 
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
 
enum  crypto_algo {
  crypto_none, crypto_scrambling, crypto_blowfish, crypto_aes256,
  crypto_twofish256, crypto_serpent256, crypto_camellia256
}
 
enum  elastic_direction { elastic_forward, elastic_backward }
 
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  hash_algo { hash_none, hash_md5, hash_sha1, hash_sha512 }
 
enum  flag_type { flag_type_terminal = 'T', flag_type_non_terminal = 'N', flag_type_located_at_end_of_slice = 'E' }
 
enum  msg_type {
  unset, order_read_ahead, order_read_ahead_begin, order_read,
  order_sync_write, answr_sync_write_done, order_skip, order_skip_begin,
  order_skip_to_eof, order_skip_fwd, order_skip_bkd, answr_skip_done,
  order_skippable_fwd, order_skippable_fwd_begin, order_skippable_bkd, order_skippable_bkd_begin,
  answr_skippable, order_get_position, answr_position, answr_position_begin,
  answr_exception, order_end_of_xmit, order_stop_readahead, answr_readahead_stopped,
  order_wakeup, data_partial, data_completed
}
 
enum  wrapperlib_mode { zlib_mode, bzlib_mode, xz_mode }
 

Functions

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)
 
std::string local_perm (const cat_inode &ref, bool hard)
 
std::string local_uid (const cat_inode &ref)
 
std::string local_gid (const cat_inode &ref)
 
std::string local_size (const cat_inode &ref)
 
std::string local_storage_size (const cat_inode &ref)
 
std::string local_date (const cat_inode &ref)
 
std::string local_flag (const cat_inode &ref, bool isolated, bool dirty_seq)
 
void xml_listing_attributes (user_interaction &dialog, const std::string &beginning, const std::string &data, const std::string &metadata, const cat_entree *obj=nullptr, bool list_ea=false)
 
bool extract_base_and_status (unsigned char signature, unsigned char &base, saved_status &saved)
 
void local_display_ea (user_interaction &dialog, const cat_inode *ino, const std::string &prefix, const std::string &suffix, bool xml_output=false)
 
unsigned char mk_signature (unsigned char base, saved_status state)
 
void unmk_signature (unsigned char sig, unsigned char &base, saved_status &state, bool isolated)
 
bool compatible_signature (unsigned char a, unsigned char b)
 
unsigned char get_base_signature (unsigned char a)
 
std::string entree_to_string (const cat_entree *obj)
 
compression char2compression (char a)
 
char compression2char (compression c)
 
std::string compression2string (compression c)
 
compression string2compression (const std::string &a)
 
crc * create_crc_from_file (generic_file &f, memory_pool *pool, bool old=false)
 
crc * create_crc_from_size (infinint width, memory_pool *pool)
 
over_action_ea 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 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 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 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...
 
std::string crypto_algo_2_string (crypto_algo algo)
 
char crypto_algo_2_char (crypto_algo a)
 
crypto_algo char_2_crypto_algo (char a)
 
bool same_signatories (const std::list< signator > &a, const std::list< signator > &b)
 
bool crypto_min_ver_libgcrypt_no_bug ()
 
data_dirdata_tree_read (generic_file &f, unsigned char db_version, memory_pool *pool)
 
bool data_tree_find (path chemin, const data_dir &racine, const data_tree *&ptr)
 lookup routine to find a pointer to the dat_dir object corresponding to the given path More...
 
void data_tree_update_with (const cat_directory *dir, archive_num archive, data_dir *racine)
 
archive_num data_tree_permutation (archive_num src, archive_num dst, archive_num x)
 
generic_filedatabase_header_create (user_interaction &dialog, memory_pool *pool, const std::string &filename, bool overwrite)
 
generic_filedatabase_header_open (user_interaction &dialog, memory_pool *pool, const std::string &filename, unsigned char &db_version)
 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, memory_pool *p)
 
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, memory_pool *p)
 remove all EA of a given file that match a given mask More...
 
bool ea_filesystem_has_ea (const std::string &name, memory_pool *p)
 test the presence of EA for a given file More...
 
bool ea_filesystem_has_ea (const std::string &name, const mask &filter, memory_pool *p)
 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, memory_pool *p)
 
void filtre_restore (user_interaction &dialog, memory_pool *pool, 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, cat_inode::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)
 
void filtre_sauvegarde (user_interaction &dialog, memory_pool *pool, 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, bool same_fs, cat_inode::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)
 
void filtre_difference (user_interaction &dialog, memory_pool *pool, 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, cat_inode::comparison_fields what_to_check, const infinint &hourshift, bool compare_symlink_date, const fsa_scope &scope, bool isolated_mode)
 
void filtre_test (user_interaction &dialog, memory_pool *pool, 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 (user_interaction &dialog, memory_pool *pool, 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)
 
void filtre_sequentially_read_all_catalogue (catalogue &cat, user_interaction &dialog, bool lax_read_mode)
 
std::string fsa_family_to_string (fsa_family f)
 
std::string fsa_nature_to_string (fsa_nature n)
 
fsa_scope all_fsa_families ()
 provides a scope containing all FSA families
 
infinint fsa_scope_to_infinint (const fsa_scope &val)
 
fsa_scope infinint_to_fsa_scope (const infinint &ref)
 
std::string fsa_scope_to_string (bool saved, const fsa_scope &scope)
 
const char * generic_file_get_name (gf_mode mode)
 provides a human readable string defining the gf_mode given in argument
 
std::string hash_algo_to_string (hash_algo algo)
 
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_agregate (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...
 
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_noexcept (U_I &major, U_I &medium, U_I &minor, U_16 &exception, std::string &except_msg, bool init_libgcrypt=true)
 return the libdar version, and make libdar initialization (does not throw exceptions) More...
 
void close_and_clean ()
 
archiveopen_archive_noexcept (user_interaction &dialog, const path &chem, const std::string &basename, const std::string &extension, const archive_options_read &options, U_16 &exception, std::string &except_msg)
 this is a wrapper around the archive constructor known as the "read" constructor More...
 
archivecreate_archive_noexcept (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, U_16 &exception, std::string &except_msg)
 this is a wrapper around the archive constructor known as the "create" constructor More...
 
archiveisolate_archive_noexcept (user_interaction &dialog, archive *ptr, const path &sauv_path, const std::string &filename, const std::string &extension, const archive_options_isolate &options, U_16 &exception, std::string &except_msg)
 this is a wrapper around the archive constructor known as the "isolate" constructor More...
 
archivemerge_archive_noexcept (user_interaction &dialog, const path &sauv_path, archive *ref_arch1, const std::string &filename, const std::string &extension, const archive_options_merge &options, statistics *progressive_report, U_16 &exception, std::string &except_msg)
 this is a wrapper around the archive constructor known as the "merging" constructor More...
 
void close_archive_noexcept (archive *ptr, U_16 &exception, std::string &except_msg)
 this is wrapper around the archive destructor More...
 
statistics op_extract_noexcept (user_interaction &dialog, archive *ptr, const path &fs_root, const archive_options_extract &options, statistics *progressive_report, U_16 &exception, std::string &except_msg)
 this is wrapper around the op_extract method More...
 
void op_listing_noexcept (user_interaction &dialog, archive *ptr, const archive_options_listing &options, U_16 &exception, std::string &except_msg)
 this is wrapper around the op_listing method More...
 
statistics op_diff_noexcept (user_interaction &dialog, archive *ptr, const path &fs_root, const archive_options_diff &options, statistics *progressive_report, U_16 &exception, std::string &except_msg)
 this is wrapper around the op_diff method More...
 
statistics op_test_noexcept (user_interaction &dialog, archive *ptr, const archive_options_test &options, statistics *progressive_report, U_16 &exception, std::string &except_msg)
 this is wrapper around the op_test method More...
 
bool get_children_of_noexcept (user_interaction &dialog, archive *ptr, const std::string &dir, U_16 &exception, std::string &except_msg)
 this is wrapper around the get_children_of method More...
 
char * libdar_str2charptr_noexcept (const std::string &x, U_16 &exception, std::string &except_msg)
 routine provided to convert std::string to char * 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)
 
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)
 
trivial_sarmacro_tools_open_archive_tuyau (user_interaction &dialog, memory_pool *pool, 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 (user_interaction &dialog, memory_pool *pool, const 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, bool multi_threaded)
 
cataloguemacro_tools_get_derivated_catalogue_from (user_interaction &dialog, memory_pool *pool, 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 (user_interaction &dialog, memory_pool *pool, 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 (user_interaction &dialog, memory_pool *pool, 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 (user_interaction &dialog, memory_pool *pool, 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 (user_interaction &dialog, pile &layers, header_version &ver, slice_layout &slicing, const slice_layout *ref_slicing, memory_pool *pool, const 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, 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, bool multi_threaded)
 
void macro_tools_close_layers (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)
 
range macro_tools_get_slices (const cat_nomme *obj, slice_layout sl)
 
bool msg_equivalent (msg_type arg1, msg_type arg2)
 
bool msg_continues (msg_type msg)
 
char msg_type2char (msg_type x)
 
msg_type char2msg_type (char x)
 
msg_type msg_continuation_of (msg_type x)
 
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 (entrepot &entr, const std::string &base_name, const infinint &min_digits, const std::string &ext, infinint &ret)
 
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
 
char * tools_str2charptr (const std::string &x)
 convert a string to a char * More...
 
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...
 
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_display_integer_in_metric_system (infinint number, const std::string &unit, bool binary)
 
void tools_extract_basename (const char *command_name, std::string &basename)
 extracts the basename of a file (removing path part) More...
 
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...
 
std::string::iterator tools_find_first_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_split_path_basename (const char *all, path *&chemin, std::string &base, memory_pool *pool=nullptr)
 split a given full path in path part and basename part More...
 
void tools_split_path_basename (const std::string &all, std::string &chemin, std::string &base, memory_pool *pool=nullptr)
 split a given full path in path part and basename part More...
 
void tools_open_pipes (user_interaction &dialog, const std::string &input, const std::string &output, tuyau *&in, tuyau *&out, memory_pool *pool=nullptr)
 open a pair of tuyau objects encapsulating two named pipes. 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)
 
U_I tools_str2int (const std::string &x)
 convert an integer written in decimal notation to the corresponding value More...
 
S_I tools_str2signed_int (const std::string &x)
 convert a signed integer written in decimal notation to the corresponding value More...
 
bool tools_my_atoi (const char *a, U_I &val)
 ascii to integer conversion More...
 
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...
 
infinint tools_convert_date (const std::string &repres)
 convert a human readable date representation in number of second since the system reference date 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 (user_interaction &dialog, const std::string &dar_cmd, const std::vector< std::string > &argvpipe, memory_pool *pool=nullptr)
 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...
 
void tools_display_features (user_interaction &dialog)
 display the compilation time features of libdar 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
 
const char * tools_get_from_env (const char **env, const char *clef)
 isolate the value of a given variable from the environment vector More...
 
void tools_check_basename (user_interaction &dialog, const path &loc, std::string &base, const std::string &extension, memory_pool *pool=nullptr)
 does sanity checks on a slice name, check presence and detect whether the given basename is not rather a filename More...
 
std::string tools_getcwd ()
 get current working directory
 
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...
 
bool tools_look_for (const char *argument, S_I argc, char *const argv[])
 test the presence of an argument 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...
 
void tools_remove_last_char_if_equal_to (char c, std::string &s)
 remove last character of a string is it equal to a given value More...
 
void tools_read_range (const std::string &s, S_I &min, U_I &max)
 from a string with a range notation (min-max) extract the range values 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 (user_interaction &ui, const std::string &c_chemin, 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 std::string &c_chemin, 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 path &chemin, 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...
 
void tools_add_elastic_buffer (generic_file &f, U_32 max_size, U_32 modulo, U_32 offset)
 append an elastic buffer of given size to the file More...
 
bool tools_are_on_same_filesystem (const std::string &file1, const std::string &file2)
 
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 (const std::string &s)
 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...
 
datetime tools_get_ctime (const std::string &s)
 returns the last change date of the given file More...
 
std::vector< std::string > tools_split_in_words (generic_file &f)
 read a file and split its contents into words More...
 
std::vector< std::string > tools_split_in_words (const std::string &arg)
 read a std::string and split its contents into words More...
 
bool tools_find_next_char_out_of_parenthesis (const std::string &data, const char what, U_32 start, U_32 &found)
 look next char in string out of parenthesis 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)
 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)
 subsititue and execute command line More...
 
std::string tools_build_regex_for_exclude_mask (const std::string &prefix, const std::string &relative_part)
 builds a regex from root directory and user provided regex to be applied to the relative path 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...
 
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...
 
void tools_read_from_pipe (user_interaction &dialog, S_I fd, tlv_list &result)
 Extract from anonymous pipe a tlv_list. 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::vector< 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_get_euid ()
 return a string containing the Effective UID
 
std::string tools_get_egid ()
 return a string containing the Effective UID
 
std::string tools_get_hostname ()
 return a string containing the hostname of the current host
 
std::string tools_get_date_utc ()
 return a string containing the current time (UTC)
 
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_merge_to_vector (std::vector< std::string > &a, const std::vector< std::string > &b)
 add in 'a', element of 'b' not already found in 'a'
 
std::vector< std::string > tools_substract_from_vector (const std::vector< std::string > &a, const std::vector< std::string > &b)
 remove from 'a' elements found in 'b' and return the resulting vector
 
struct dirent * tools_allocate_struct_dirent (const std::string &path_name, U_64 &max_name_length, memory_pool *pool=nullptr)
 
void tools_release_struct_dirent (struct dirent *ptr)
 
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)
 
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)
 
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

const U_32 SAUV_MAGIC_NUMBER = 123
 
const label label_zero
 
const U_I LIBDAR_COMPILE_TIME_MAJOR = 5
 libdar Major version defined at compilation time
 
const U_I LIBDAR_COMPILE_TIME_MEDIUM = 8
 libdar Medium version defined at compilation time
 
const U_I LIBDAR_COMPILE_TIME_MINOR = 4
 libdar Minor version defined at compilation time
 
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 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
 

Detailed Description

libdar namespace encapsulate all libdar symbols

Function Documentation

◆ data_tree_find()

bool libdar::data_tree_find ( path  chemin,
const data_dir racine,
const data_tree *&  ptr 
)

lookup routine to find a pointer to the dat_dir object corresponding to the given path

Parameters
[in]cheminis the path to look for
[in]racineis the database to look into
[out]ptris a pointer to the looked node if found
Returns
true if a node could be found in the database

◆ database_header_open()

generic_file* libdar::database_header_open ( user_interaction dialog,
memory_pool *  pool,
const std::string &  filename,
unsigned char &  db_version 
)

read the header of a dar_manager database

Parameters
[in]dialogfor user interaction
[in]poolmemory pool to use or nullptr for default memory allocation
[in]filenameis the filename to read from
[out]db_versionversion of the database
Returns
the generic_file where the database header has been put

◆ ea_filesystem_clear_ea()

void libdar::ea_filesystem_clear_ea ( const std::string &  name,
const mask filter,
memory_pool *  p 
)

remove all EA of a given file that match a given mask

Parameters
[in]nameis the filename which EA must be altered
[in]filteris a mask that defines which EA names have to be removed
[in]ppoints to the memory pool to use or is to be set to nullptr for no pool utilisation
Note
unless the given mask is logically equivalent to bool_mask(true) some EA may remain associated to the file after the operation.

◆ ea_filesystem_has_ea() [1/2]

bool libdar::ea_filesystem_has_ea ( const std::string &  name,
memory_pool *  p 
)

test the presence of EA for a given file

Parameters
[in]nameis the filename which EA presence must be check against
[in]ppoints to the memory pool to use or is to be set to nullptr for no pool utilisation
Returns
true if at least one EA has been found

◆ ea_filesystem_has_ea() [2/2]

bool libdar::ea_filesystem_has_ea ( const std::string &  name,
const mask filter,
memory_pool *  p 
)

test the presence of EA for a given file

Parameters
[in]nameis the filename which EA presence must be check against
[in]filteris a mask that defines which attributes names to only consider
[in]ppoints to the memory pool to use or is to be set to nullptr for no pool utilisation
Returns
true if at least one EA has been found

◆ ea_filesystem_write_ea()

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

Parameters
[in]cheminis the path of the file to write attribute to
[in]valis a list of attribute amoung which a subset will be added to file's attribute list
[in]filtera mask that define which attribute's names will be written and which will be ignored from the given list
Returns
true if some attribute could be set
Note
if an EA is already present, it is not modified unless the mask covers its name and a value is available for that attribute name in the given list.

◆ 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

◆ macro_tools_close_layers()

void libdar::macro_tools_close_layers ( 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

Parameters
[in]dialogfor user interaction
[in]layersthe archive layers to close
[in]verthe archive "header" to be dropped at end of archive
[in]catthe catalogue to dump in the layer before closing the archive
[in]info_detailswhether to display detailed information
[in]cryptocipher algorithm used in "layers"
[in]gnupg_recipientsused sign the catalog, use an empty vector if there is no signatories (no nedd to sign the hash of the catalogue)
[in]gnupg_signatoriesused to sign the catalog, use an empty vector to disable signning
[in]algocompression algorithm used
[in]emptydry-run execution (null_file at bottom of the stack)

◆ macro_tools_create_layers()

void libdar::macro_tools_create_layers ( user_interaction dialog,
pile &  layers,
header_version ver,
slice_layout &  slicing,
const slice_layout *  ref_slicing,
memory_pool *  pool,
const 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,
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,
bool  multi_threaded 
)

build layers for a new archive

Parameters
[in]dialogfor user interaction
[out]layersthe resulting stack of generic_file layers ready for use
[out]verthe archive "header" to be dropped at end of archive
[out]slicingslicing layout of the archive
[in]ref_slicingif not nullptr the pointed to slicing_layout will be stored in the header/trailer version of the archive
[in]poolmemory pool to use for memory allocation (nullptr for no pool usage)
[in]sauv_path_twhere to create the archive
[in]filenamearchive base name
[in]extensionarchive extension
[in]allow_overwhether to allow slice overwriting
[in]warn_overwhether to warn before overwriting
[in]info_detailswhether to display detailed information
[in]pausehow many slices to wait before pausing (0 to never wait)
[in]algocompression algorithm
[in]compression_levelcompression level
[in]file_sizesize of the slices
[in]first_file_sizesize of the first slice
[in]executecommand to execute after each slice creation
[in]cryptocipher algorithm to use
[in]passpassword/passphrase to use for encryption
[in]crypto_sizesize of crypto blocks
[in]gnupg_recipientslist of email recipients'public keys to encrypt a randomly chosen key with
[in]gnupg_signatorieslist of email which associated signature has to be used to sign the archive
[in]emptydry-run execution (null_file at bottom of the stack)
[in]slice_permissionpermission to set the slices to
[in]add_marks_for_sequential_readingwhether to add an escape layer in the stack
[in]user_commentuser comment to add into the slice header/trailer
[in]hashalgorithm to use for slices hashing
[in]slice_min_digitsminimum number of digits slice number must have
[in]internal_namecommon label to all slices
[in]data_nameto use in slice header
[in]multi_threadedtrue if libdar can spawn several thread to work
Note
the stack has the following contents depending on given options

+-top LIBDAR_STACK_LABEL_ +-------------------------------------------—+------------------—+ | [ generic_thread ] | | | compressor | | +-------------------------------------------—+------------------—+ | [ generic_thread ] | | | [ escape ] | | +– - - - - - - - - - - - - - - - - - - - - - -+------------------—+ | [ generic_thread (if crypt or scam is used) ]| | | cache | crypto_sym | scrambler | | | [ cache ] |_CACHE_PIPE | | trivial_sar | null_file | sar | | +-------------------------------------------—+------------------—+ +-bottom

Note
the bottom cache layer is only present when trivial_sar is used to write on a pipe. trivial_sar used to write a non sliced archive does not use a cache layer above it
the top cache is only used in place of crypto_sym or scrambler when no encryption is required and the cache layer labelled _CACHE_PIPE is absent.
escape layer is present by default unless tape marks have been disabled
the generic_thread are inserted in the stack if multi-threading is possible and allowed

◆ macro_tools_get_slices()

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

Parameters
[in]obja pointer to the object which data & EFSA is to be located
[in]slslice layout of the archive
Returns
a set of slices which will be required to restore that particular file (over the slice(s) containing the catalogue of course).

◆ macro_tools_open_archive()

void libdar::macro_tools_open_archive ( user_interaction dialog,
memory_pool *  pool,
const 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,
bool  multi_threaded 
)

setup the given pile object to contain a stack of generic_files suitable to read an archive

Note
the stack has the following contents depending on given options

+-top LIBDAR_STACK_LABEL_ +-------------------------------------------—+------------------—+ | [ generic_thread ] |_UNCOMPRESSED | | compressor |v v v | +-------------------------------------------—+------------------—+ | [ generic_thread ] |_CLEAR | | [ escape ] |v v v | +-------------------------------------------—+v—v—v---------—+ | [ generic_thread ] |_UNCYPHERED | | [ cache ] | crypto_sym | scrambler |v v v | | [ tronc ] |LEVEL 1 | | trivial_sar | zapette | sar |v v v | +-------------------------------------------—+------------------—+ +-bottom

Note
generic_thread objects are only present in the stack if multi-thread is active
escape is present unless tape mark have been disabled at archive creation time
tronc is not present in sequential read mode
cache layer is present only in absence of encryption and when no escape layer is above
_UNCOMPRESSED label is associated to the top of the stack
_CLEAR is associated to the generic_thread below compressor else escape else the cache or crypto_sym or scrambler which then has two Labels (_CLEAR and _UNCYPHERED)