 |
Disk ARchive
2.6.8
Full featured and portable backup and archiving tool
|
Go to the documentation of this file.
30 #include "../my_config.h"
146 extern std::string tools_uint2str(U_I x);
179 extern void tools_system(user_interaction & dialog,
const std::vector<std::string> & argvector);
189 const std::string & dar_cmd,
190 const std::vector<std::string> & argvpipe);
210 const std::vector<std::string> & x);
217 std::vector<std::string> operator + (std::vector<std::string> a, std::vector<std::string> b);
230 template <
class T> std::vector<T>
operator +=(std::vector<T> & a,
const std::vector<T> & b)
252 extern void tools_noexcept_make_date(
const std::string & chem,
bool symlink,
const datetime & last_acc,
const datetime & last_mod,
const datetime & birth);
262 extern void tools_make_date(
const std::string & chemin,
bool symlink,
const datetime & access,
const datetime & modif,
const datetime & birth);
277 extern void tools_to_upper(
const std::string & r, std::string & uppered);
280 extern void tools_to_wupper(std::wstring & r);
300 extern std::string
tools_printf(
const char *format, ...);
312 extern std::string
tools_vprintf(
const char *format, va_list ap);
320 const std::string & file_mask);
331 const entrepot & ent,
332 const std::string & file_mask,
348 const entrepot & ent,
349 const std::string & basename,
350 const std::string & extension,
352 bool allow_overwriting,
353 bool warn_overwriting,
402 const std::string & s,
405 const std::set<std::string> & ignored_as_symlink = std::set<std::string>());
426 const std::map<char, std::string> & corres);
442 const std::string & path,
443 const std::string & basename,
444 const std::string & num,
445 const std::string & padded_num,
446 const std::string & ext,
447 const std::string & context,
448 const std::string & base_url);
456 const std::string & cmd_line);
471 const std::string & hook,
472 const std::string & path,
473 const std::string & basename,
474 const std::string & num,
475 const std::string & padded_num,
476 const std::string & ext,
477 const std::string & context,
478 const std::string & base_url);
541 extern void tools_set_ownership(S_I filedesc,
const std::string & slice_user,
const std::string & slice_group);
549 extern void tools_memxor(
void *dest,
const void *src, U_I n);
557 extern tlv_list
tools_string2tlv_list(user_interaction & dialog,
const U_16 & type,
const std::vector<std::string> & data);
582 throw Erange(
"tools_number_decoupe_in_big_endian",
"base must be strictly positive");
586 ret.push_back(number % base);
622 extern std::string tools_gpgme_strerror_r(gpgme_error_t err);
627 extern std::wstring tools_string_to_wstring(
const std::string & val);
631 extern std::string tools_wstring_to_string(
const std::wstring & val);
650 extern void tools_secu_string_show(user_interaction & dialog,
const std::string & msg,
const secu_string & key);
652 template <
class T> T tools_max(T a, T b) {
return a > b ? a : b; }
653 template <
class T> T tools_min(T a, T b) {
return a > b ? b : a; }
688 const char *inode_path,
697 std::string msg =
tools_printf(gettext(
"Found negative date (%s) for inode %s ."),
701 ui.pause(
tools_printf(gettext(
"%S Can we read it as if it was zero (1st January 1970 at 00:00:00 UTC)?"),
704 ui.message(msg + gettext(
"Considering date as if it was zero (Jan 1970)"));
std::string tools_getcwd()
get current working directory
infinint tools_double2infinint(double arg)
convert a double (float) to infinint (integer) taking care of rounding it to the closest value
uid_t tools_ownership2uid(const std::string &user)
change ownership of the file which descriptor is given
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.
void tools_block_all_signals(sigset_t &old_mask)
block all signals (based on POSIX sigprocmask)
This is a pure virtual class that is used by libdar when interaction with the user is required.
void tools_end()
libdar internal use only: it is launched from close_and_clean() and releases tools internal variables
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
void tools_hook_execute(user_interaction &ui, const std::string &cmd_line)
execute and retries at user will a given command line
void tools_system(user_interaction &dialog, const std::vector< std::string > &argvector)
wrapper to the "system" system call.
infinint tools_get_filesize(const path &p)
retrieve the size in byte of a file
std::string tools_concat_vector(const std::string &separator, const std::vector< std::string > &x)
concatenate a vectors of strings in a single string
are defined here basic integer types that tend to be portable
void tools_read_vector(generic_file &f, std::vector< std::string > &x)
read a list of string from a file
void tools_init()
libdar internal use only: it is launched from get_version() and initializes tools internal variables
bool tools_is_case_insensitive_equal(const std::string &a, const std::string &b)
compare two string in case insensitive manner
infinint tools_rounded_cube_root(const infinint &ref)
compute an approximate cube root of the argument
switch module to limitint (32 ou 64 bits integers) or infinint
std::string tools_output2xml(const std::string &src)
convert string for xml output
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
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
this file contains the definition of class datetime that stores unix times in a portable way
infinint tools_rounded_square_root(const infinint &ref)
compute an approximate square root of the argument
void tools_set_back_blocked_signals(sigset_t old_mask)
unblock signals according to given mask
infinint tools_get_extended_size(std::string s, U_I base)
convert the given string to infinint taking care of multiplication suffixes like k,...
bool tools_are_on_same_filesystem(const std::string &file1, const std::string &file2)
tells whether two files are on the same mounted filesystem
infinint tools_file_size_to_crc_size(const infinint &size)
Defines the CRC size to use for a given filesize.
std::string tools_printf(const char *format,...)
make printf-like formating to a std::string
std::string tools_uword2str(U_16 x)
convert unsigned word to string
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
std::string tools_name_of_gid(const infinint &gid)
convert gid to name in regards of the current system's configuration
U_I tools_get_permission(S_I fd)
obtain the permission of the file which descriptor is given
char tools_cast_type_to_unix_type(char type)
change the libdar internal type representation to the usual unix char type
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
std::string tools_get_permission_string(char type, U_32 perm, bool hard)
convert a permission number into its string representation (rwxrwxrwx)
std::string tools_int2octal(const U_I &perm)
convert a number to a string corresponding to its octal representation
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
defines the entrepot interface. Entrepot interface defines a generic way to interact with files (slic...
class generic_file is defined here as well as class fichier
void tools_memxor(void *dest, const void *src, U_I n)
Produces in "dest" the XORed value of "dest" and "src".
U_I tools_octal2int(const std::string &perm)
convert octal string to integer
struct dirent * tools_allocate_struct_dirent(const std::string &path_name, U_64 &max_name_length)
bool tools_my_atoi(const char *a, U_I &val)
ascii to integer conversion
void tools_write_vector(generic_file &f, const std::vector< std::string > &x)
write a list of string to file
void tools_set_permission(S_I fd, U_I perm)
change the permission of the file which descriptor is given
path tools_relative2absolute_path(const path &src, const path &cwd)
transform a relative path to an absolute one given the current directory value
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
void tools_blocking_read(int fd, bool mode)
set blocking/not blocking mode for reading on a file descriptor
std::string tools_name_of_uid(const infinint &uid)
convert uid to name in regards to the current system's configuration
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_display_date(const datetime &date)
convert a date in second to its human readable representation
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
std::string tools_vprintf(const char *format, va_list ap)
make printf-like formating to a std::string
exception used to signal range error
char * tools_str2charptr(const std::string &x)
convert a string to a char *
U_I tools_str2int(const std::string &x)
convert an integer written in decimal notation to the corresponding value
std::string tools_int2str(S_I x)
convert integer to string
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!
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)
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
bool tools_infinint2U_64(infinint val, U_64 &res)
convert an infinint to U_64 (aka "uint64_t" or yet "unsigned long long")
infinint tools_upper_rounded_log2(const infinint &ref)
compute an approximate log2 of the argument
std::string tools_addspacebefore(std::string s, U_I expected_size)
prepend spaces before the given string
List of Generic Type Length Value data structures.
U_I tools_count_in_string(const std::string &s, const char a)
counts the number of a given char in a given string
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....
infinint tools_lower_rounded_exp2(const infinint &ref)
compute an approximate exp2 of the argument
U_I tools_pseudo_random(U_I max)
Produces a pseudo random number x, where 0 <= x < max.
void tools_write_string(generic_file &f, const std::string &s)
write a string to a file with a '\0' at then end
void tools_read_string(generic_file &f, std::string &s)
read a string from a file expecting it to terminate by '\0'
void tools_to_upper(const std::string &r, std::string &uppered)
convert a string to upper case
std::string tools_strerror_r(int errnum)
wrapper routine to strerror_r
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
std::string tools_string_to_hexa(const std::string &input)
convert a string into its hexadecima representation
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
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 ...
here is the definition of the path class
std::vector< T > operator+=(std::vector< T > &a, const std::vector< T > &b)
template function to add two vectors
void tools_release_struct_dirent(struct dirent *ptr)
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
uid_t tools_ownership2gid(const std::string &group)
convert string group name or gid to numeric gid value
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
std::string tools_display_integer_in_metric_system(infinint number, const std::string &unit, bool binary)
void tools_unlink(const std::string &filename)
remove from filesystem the file which path is given
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
std::string tools_unsigned_char_to_hexa(unsigned char x)
convert a unsigned char into its hexa decima representation
infinint tools_get_size(const std::string &s)
returns the size of the given plain file
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).
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
libdar namespace encapsulate all libdar symbols