![]()  | 
  
    Disk ARchive 2.8.1
    
   Full featured and portable backup and archiving tool 
   | 
 
a set of general purpose routines More...
#include "../my_config.h"#include <string>#include <vector>#include <deque>#include <map>#include <set>#include <cstdarg>#include "path.hpp"#include "infinint.hpp"#include "generic_file.hpp"#include "integers.hpp"#include "tlv_list.hpp"#include "datetime.hpp"#include "entrepot.hpp"
 Include dependency graph for tools.hpp:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Namespaces | |
| namespace | libdar | 
| libdar namespace encapsulate all libdar symbols  | |
Functions | |
| void | libdar::tools_init () | 
| libdar internal use only: it is launched from get_version() and initializes tools internal variables  | |
| void | libdar::tools_end () | 
| libdar internal use only: it is launched from close_and_clean() and releases tools internal variables  | |
| void | libdar::tools_write_string (generic_file &f, const std::string &s) | 
| write a string to a file with a '\0' at then end  More... | |
| void | libdar::tools_read_string (generic_file &f, std::string &s) | 
| read a string from a file expecting it to terminate by '\0'  More... | |
| void | libdar::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 | libdar::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 | libdar::tools_get_filesize (const path &p) | 
| retrieve the size in byte of a file  More... | |
| std::string | libdar::tools_display_integer_in_metric_system (infinint number, const std::string &unit, bool binary) | 
| std::string::iterator | libdar::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 | libdar::tools_blocking_read (int fd, bool mode) | 
| set blocking/not blocking mode for reading on a file descriptor  More... | |
| std::string | libdar::tools_name_of_uid (const infinint &uid) | 
| convert uid to name in regards to the current system's configuration  More... | |
| std::string | libdar::tools_name_of_gid (const infinint &gid) | 
| convert gid to name in regards of the current system's configuration  More... | |
| std::string | libdar::tools_uword2str (U_16 x) | 
| convert unsigned word to string  More... | |
| std::string | libdar::tools_int2str (S_I x) | 
| convert integer to string  More... | |
| std::string | libdar::tools_uint2str (U_I x) | 
| std::string | libdar::tools_addspacebefore (std::string s, U_I expected_size) | 
| prepend spaces before the given string  More... | |
| std::string | libdar::tools_display_date (const datetime &date, bool fully_detailed=false) | 
| convert a date in second to its human readable representation  More... | |
| char * | libdar::tools_str2charptr (const std::string &x) | 
| convert a string to a char *  More... | |
| U_I | libdar::tools_str2int (const std::string &x) | 
| convert an integer written in decimal notation to the corresponding value  More... | |
| void | libdar::tools_system (user_interaction &dialog, const std::vector< std::string > &argvector) | 
| wrapper to the "system" system call.  More... | |
| void | libdar::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 | libdar::tools_write_vector (generic_file &f, const std::vector< std::string > &x) | 
| write a list of string to file  More... | |
| void | libdar::tools_read_vector (generic_file &f, std::vector< std::string > &x) | 
| read a list of string from a file  More... | |
| std::string | libdar::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 > | libdar::operator+ (std::vector< std::string > a, std::vector< std::string > b) | 
| concatenate two vectors  More... | |
| bool | libdar::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 > | libdar::operator+= (std::vector< T > &a, const std::vector< T > &b) | 
| template function to add two vectors  More... | |
| std::string | libdar::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 | libdar::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 | libdar::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 | libdar::tools_is_case_insensitive_equal (const std::string &a, const std::string &b) | 
| compare two string in case insensitive manner  More... | |
| void | libdar::tools_to_upper (const std::string &r, std::string &uppered) | 
| convert a string to upper case  More... | |
| std::string | libdar::tools_printf (const char *format,...) | 
| make printf-like formating to a std::string  More... | |
| std::string | libdar::tools_vprintf (const char *format, va_list ap) | 
| make printf-like formating to a std::string  More... | |
| bool | libdar::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 | libdar::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 | libdar::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 | libdar::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 | libdar::tools_relative2absolute_path (const path &src, const path &cwd) | 
| transform a relative path to an absolute one given the current directory value  More... | |
| void | libdar::tools_block_all_signals (sigset_t &old_mask) | 
| block all signals (based on POSIX sigprocmask)  More... | |
| void | libdar::tools_block_all_signals_except (const std::deque< int > &non_blocked, sigset_t &old_mask) | 
| block all signals except those given in first argument  More... | |
| void | libdar::tools_set_back_blocked_signals (sigset_t old_mask) | 
| unblock signals according to given mask  More... | |
| U_I | libdar::tools_count_in_string (const std::string &s, const char a) | 
| counts the number of a given char in a given string  More... | |
| datetime | libdar::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 | libdar::tools_get_size (const std::string &s) | 
| returns the size of the given plain file  More... | |
| infinint | libdar::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 | libdar::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 | libdar::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 | libdar::tools_hook_execute (user_interaction &ui, const std::string &cmd_line) | 
| execute and retries at user will a given command line  More... | |
| void | libdar::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 | libdar::tools_output2xml (const std::string &src) | 
| convert string for xml output  More... | |
| U_I | libdar::tools_octal2int (const std::string &perm) | 
| convert octal string to integer  More... | |
| std::string | libdar::tools_int2octal (const U_I &perm) | 
| convert a number to a string corresponding to its octal representation  More... | |
| char | libdar::tools_cast_type_to_unix_type (char type) | 
| change the libdar internal type representation to the usual unix char type  | |
| std::string | libdar::tools_get_permission_string (char type, U_32 perm, bool hard) | 
| convert a permission number into its string representation (rwxrwxrwx)  | |
| void | libdar::tools_set_permission (S_I fd, U_I perm) | 
| change the permission of the file which descriptor is given  More... | |
| U_I | libdar::tools_get_permission (S_I fd) | 
| obtain the permission of the file which descriptor is given  More... | |
| uid_t | libdar::tools_ownership2uid (const std::string &user) | 
| change ownership of the file which descriptor is given  More... | |
| uid_t | libdar::tools_ownership2gid (const std::string &group) | 
| convert string group name or gid to numeric gid value  More... | |
| void | libdar::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 | libdar::tools_memxor (void *dest, const void *src, U_I n) | 
| Produces in "dest" the XORed value of "dest" and "src".  More... | |
| tlv_list | libdar::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 | libdar::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 > | libdar::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 | libdar::tools_unsigned_char_to_hexa (unsigned char x) | 
| convert a unsigned char into its hexa decima representation  More... | |
| std::string | libdar::tools_string_to_hexa (const std::string &input) | 
| convert a string into its hexadecima representation (string containing an integer not its decimal representation!)  More... | |
| std::string | libdar::tools_U_I_to_hexa (U_I x) | 
| convert a unsigned integer to its hexadecimal representation  | |
| infinint | libdar::tools_file_size_to_crc_size (const infinint &size) | 
| Defines the CRC size to use for a given filesize.  More... | |
| std::string | libdar::tools_getcwd () | 
| get current working directory  | |
| std::string | libdar::tools_get_compression_ratio (const infinint &storage_size, const infinint &file_size, bool compressed) | 
| return the string about compression ratio  | |
| std::string | libdar::tools_strerror_r (int errnum) | 
| wrapper routine to strerror_r  | |
| void | libdar::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 > | |
| T | libdar::tools_max (T a, T b) | 
| template<class T > | |
| T | libdar::tools_min (T a, T b) | 
| void | libdar::tools_unlink (const std::string &filename) | 
| remove from filesystem the file which path is given  | |
| std::string | libdar::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 | libdar::tools_infinint2U_64 (infinint val, U_64 &res) | 
| convert an infinint to U_64 (aka "uint64_t" or yet "unsigned long long")  More... | |
| bool | libdar::tools_my_atoi (const char *a, U_I &val) | 
| ascii to integer conversion  More... | |
| infinint | libdar::tools_double2infinint (double arg) | 
| convert a double (float) to infinint (integer) taking care of rounding it to the closest value  | |
| template<class T > | |
| void | libdar::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 | libdar::tools_upper_rounded_log2 (const infinint &ref) | 
| compute an approximate log2 of the argument  | |
| infinint | libdar::tools_lower_rounded_exp2 (const infinint &ref) | 
| compute an approximate exp2 of the argument  | |
| infinint | libdar::tools_rounded_square_root (const infinint &ref) | 
| compute an approximate square root of the argument  | |
| infinint | libdar::tools_rounded_cube_root (const infinint &ref) | 
| compute an approximate cube root of the argument  | |
| std::string | libdar::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... | |
a set of general purpose routines
Definition in file tools.hpp.