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

Loading...
Searching...
No Matches
dar64-2.8.3-win64/include/dar/tools.hpp
Go to the documentation of this file.
1/*********************************************************************/
2// dar - disk archive - a backup/restoration program
3// Copyright (C) 2002-2026 Denis Corbin
4//
5// This program is free software; you can redistribute it and/or
6// modify it under the terms of the GNU General Public License
7// as published by the Free Software Foundation; either version 2
8// of the License, or (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program; if not, write to the Free Software
17// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18//
19// to contact the author, see the AUTHOR file
20/*********************************************************************/
21
25
26
27#ifndef TOOLS_HPP
28#define TOOLS_HPP
29
30#include "//include/dar/libdar_my_config.h"
31
32 extern "C"
33{
34#if LIBDAR_HAS_SIGNAL_H
35#include <signal.h>
36#endif
37#if LIBDAR_HAS_GPGME_H
38#include <gpgme.h>
39#endif
40}
41
42#include <string>
43#include <vector>
44#include <deque>
45#include <map>
46#include <set>
47#include <cstdarg>
48#include "//include/dar/path.hpp"
49#include "//include/dar/infinint.hpp"
50#include "//include/dar/generic_file.hpp"
51#include "//include/dar/integers.hpp"
52#include "//include/dar/tlv_list.hpp"
53#include "//include/dar/datetime.hpp"
54#include "//include/dar/entrepot.hpp"
55
56 namespace libdar
57{
58
61
62
64 extern void tools_init();
66 extern void tools_end();
67
69
72 extern void tools_write_string(generic_file & f, const std::string & s);
73
75
78 extern void tools_read_string(generic_file & f, std::string & s);
79
81
84 extern void tools_write_string_all(generic_file & f, const std::string & s);
85
87
91 extern void tools_read_string_size(generic_file & f, std::string & s, infinint taille);
92
94
97 extern infinint tools_get_filesize(const path &p);
98
104 extern std::string tools_display_integer_in_metric_system(infinint number, const std::string & unit, bool binary);
105
107
113 extern std::string::iterator tools_find_last_char_of(std::string &s, unsigned char v);
114
116
119 extern void tools_blocking_read(int fd, bool mode);
120
122
125 extern std::string tools_name_of_uid(const infinint & uid);
126
128
131 extern std::string tools_name_of_gid(const infinint & gid);
132
134
137 extern std::string tools_uword2str(U_16 x);
138
140
143 extern std::string tools_int2str(S_I x);
144 extern std::string tools_uint2str(U_I x);
145
147
151 extern std::string tools_addspacebefore(std::string s, U_I expected_size);
152
154
158 extern std::string tools_display_date(const datetime & date, bool fully_detailed = false);
159
161
166 extern char *tools_str2charptr(const std::string &x);
167
169
172 extern U_I tools_str2int(const std::string & x);
173
175
178 extern void tools_system(user_interaction & dialog, const std::vector<std::string> & argvector);
179
181
187 extern void tools_system_with_pipe(const std::shared_ptr<user_interaction> & dialog,
188 const std::string & dar_cmd,
189 const std::vector<std::string> & argvpipe);
190
192
195 extern void tools_write_vector(generic_file & f, const std::vector<std::string> & x);
196
198
201 extern void tools_read_vector(generic_file & f, std::vector<std::string> & x);
202
204
208 extern std::string tools_concat_vector(const std::string & separator,
209 const std::vector<std::string> & x);
210
212
216 std::vector<std::string> operator + (std::vector<std::string> a, std::vector<std::string> b);
217
218
220
225 extern bool tools_is_equal_with_hourshift(const infinint & hourshift, const datetime & date1, const datetime & date2);
226
228
229 template <class T> std::vector<T> operator +=(std::vector<T> & a, const std::vector<T> & b)
230 {
231 a = a + b;
232 return a;
233 }
234
235
236
238
242 extern std::string tools_readlink(const char *root);
243
245
251 extern void tools_noexcept_make_date(const std::string & chem, bool symlink, const datetime & last_acc, const datetime & last_mod, const datetime & birth);
252
254
261 extern void tools_make_date(const std::string & chemin, bool symlink, const datetime & access, const datetime & modif, const datetime & birth);
262
264
268 extern bool tools_is_case_insensitive_equal(const std::string & a, const std::string & b);
269
276 extern void tools_to_upper(const std::string & r, std::string & uppered);
277
278#if LIBDAR_HAS_WCTYPE_H
285 extern void tools_to_wupper(std::wstring & r);
286#endif
287
289
299 extern std::string tools_printf(const char *format, ...);
300
302
311 extern std::string tools_vprintf(const char *format, va_list ap);
312
314
318 extern bool tools_do_some_files_match_mask_regex(const entrepot & ent,
319 const std::string & file_mask);
320
321
323
329 extern void tools_unlink_file_mask_regex(user_interaction & dialog,
330 const entrepot & ent,
331 const std::string & file_mask,
332 bool info_details);
333
334
336
346 extern void tools_avoid_slice_overwriting_regex(user_interaction & dialog,
347 const entrepot & ent,
348 const std::string & basename,
349 const std::string & extension,
350 bool info_details,
351 bool allow_overwriting,
352 bool warn_overwriting,
353 bool dry_run);
354
356
362 extern bool tools_are_on_same_filesystem(const std::string & file1, const std::string & file2);
363
365
369 extern path tools_relative2absolute_path(const path & src, const path & cwd);
370
372
375 extern void tools_block_all_signals(sigset_t &old_mask);
376
378
382 extern void tools_block_all_signals_except(const std::deque<int> & non_blocked, sigset_t &old_mask);
383
384
386
389 extern void tools_set_back_blocked_signals(sigset_t old_mask);
390
392
396 extern U_I tools_count_in_string(const std::string & s, const char a);
397
399
408 extern datetime tools_get_mtime(user_interaction & dialog,
409 const std::string & s,
410 bool auto_zeroing,
411 bool silent,
412 const std::set<std::string> & ignored_as_symlink = std::set<std::string>());
413
415
418 extern infinint tools_get_size(const std::string & s);
419
421
425 extern infinint tools_get_extended_size(std::string s, U_I base);
426
428
432 extern std::string tools_substitute(const std::string & hook,
433 const std::map<char, std::string> & corres);
434
435
437
448 extern std::string tools_hook_substitute(const std::string & hook,
449 const std::string & path,
450 const std::string & basename,
451 const std::string & num,
452 const std::string & padded_num,
453 const std::string & ext,
454 const std::string & context,
455 const std::string & base_url);
456
457
459
462 extern void tools_hook_execute(user_interaction & ui,
463 const std::string & cmd_line);
464
465
467
477 extern void tools_hook_substitute_and_execute(user_interaction & ui,
478 const std::string & hook,
479 const std::string & path,
480 const std::string & basename,
481 const std::string & num,
482 const std::string & padded_num,
483 const std::string & ext,
484 const std::string & context,
485 const std::string & base_url);
486
487
489
492 extern std::string tools_output2xml(const std::string & src);
493
495
498 extern U_I tools_octal2int(const std::string & perm);
499
500
502
505 extern std::string tools_int2octal(const U_I & perm);
506
508
509 extern char tools_cast_type_to_unix_type(char type);
510
512
513 extern std::string tools_get_permission_string(char type, U_32 perm, bool hard);
514
516
519 extern void tools_set_permission(S_I fd, U_I perm);
520
522
526 extern U_I tools_get_permission(S_I fd);
527
529
531
534 extern uid_t tools_ownership2uid(const std::string & user);
535
537
540 extern uid_t tools_ownership2gid(const std::string & group);
541
543
548 extern void tools_set_ownership(S_I filedesc, const std::string & slice_user, const std::string & slice_group);
549
551
556 extern void tools_memxor(void *dest, const void *src, U_I n);
557
559
564 extern tlv_list tools_string2tlv_list(user_interaction & dialog, const U_16 & type, const std::vector<std::string> & data);
565
566
567
569
572 extern U_I tools_pseudo_random(U_I max);
573
574
576
583
584 template <class N, class B> std::deque<B> tools_number_base_decomposition_in_big_endian(N number, const B & base)
585 {
586 std::deque<B> ret;
587
588 if(base <= 0)
589 throw Erange("tools_number_decoupe_in_big_endian", "base must be strictly positive");
590
591 while(number != 0)
592 {
593 ret.push_back(number % base);
594 number /= base;
595 }
596
597 return ret;
598 }
599
601
604 extern std::string tools_unsigned_char_to_hexa(unsigned char x);
605
607
610 extern std::string tools_string_to_hexa(const std::string & input);
611
613 extern std::string tools_U_I_to_hexa(U_I x);
614
616
619 extern infinint tools_file_size_to_crc_size(const infinint & size);
620
622 extern std::string tools_getcwd();
623
625 extern std::string tools_get_compression_ratio(const infinint & storage_size, const infinint & file_size, bool compressed);
626
628 extern std::string tools_strerror_r(int errnum);
629
630#ifdef GPGME_SUPPORT
632 extern std::string tools_gpgme_strerror_r(gpgme_error_t err);
633#endif
634
635#if LIBDAR_HAS_WCHAR_H
637 extern std::wstring tools_string_to_wstring(const std::string & val);
638
640 extern std::string tools_wstring_to_string(const std::wstring & val);
641#endif
642
644 extern void tools_secu_string_show(user_interaction & dialog, const std::string & msg, const secu_string & key);
645
646 template <class T> T tools_max(T a, T b) { return a > b ? a : b; }
647 template <class T> T tools_min(T a, T b) { return a > b ? b : a; }
648
650 void tools_unlink(const std::string & filename);
651
653 extern std::string tools_escape_chars_in_string(const std::string & val, const char *to_escape);
654
656
658 extern bool tools_infinint2U_64(infinint val, U_64 & res);
659
661
667 extern bool tools_my_atoi(const char *a, U_I & val);
668
670 extern infinint tools_double2infinint(double arg);
671
673
680 template <class T> void tools_check_negative_date(T & val,
681 user_interaction & ui,
682 const char *inode_path,
683 const char *nature,
684 bool ask_before,
685 bool silent)
686 {
687 if(val < 0)
688 {
689 if(!silent)
690 {
691 std::string msg = tools_printf(gettext("Found negative date (%s) for inode %s ."),
692 nature,
693 inode_path);
694 if(ask_before)
695 ui.pause(tools_printf(gettext("%S Can we read it as if it was zero (1st January 1970 at 00:00:00 UTC)?"),
696 &msg));
697 else // just warn
698 ui.message(msg + gettext("Considering date as if it was zero (Jan 1970)"));
699 }
700
701 val = 0;
702 }
703 }
704
705
707
708 extern infinint tools_upper_rounded_log2(const infinint & ref);
709
710
712
713 extern infinint tools_lower_rounded_exp2(const infinint & ref);
714
715
717
718 extern infinint tools_rounded_square_root(const infinint & ref);
719
720
722
723 extern infinint tools_rounded_cube_root(const infinint & ref);
724
726
730 extern std::string tools_build_regex_for_exclude_mask(const std::string & prefix,
731 const std::string & relative_part);
732
733
735
736}
737
738#endif
libdar::Erange
exception used to signal range error
Definition dar64-2.8.3-win64/include/dar/erreurs.hpp:220
libdar::datetime
stores time information
Definition dar64-2.8.3-win64/include/dar/datetime.hpp:59
libdar::entrepot
the Entrepot interface
Definition dar64-2.8.3-win64/include/dar/entrepot.hpp:57
libdar::generic_file
this is the interface class from which all other data transfer classes inherit
Definition dar64-2.8.3-win64/include/dar/generic_file.hpp:77
libdar::infinint
the arbitrary large positive integer class
Definition dar64-2.8.3-win64/include/dar/real_infinint.hpp:62
libdar::path
the class path is here to manipulate paths in the Unix notation: using'/'
Definition dar64-2.8.3-win64/include/dar/path.hpp:51
libdar::secu_string
class secu_string
Definition dar64-2.8.3-win64/include/dar/secu_string.hpp:54
libdar::user_interaction
This is a pure virtual class that is used by libdar when interaction with the user is required.
Definition dar64-2.8.3-win64/include/dar/user_interaction.hpp:58
libdar::tools_is_equal_with_hourshift
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
libdar::tools_check_negative_date
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
Definition dar64-2.8.3-win64/include/dar/tools.hpp:680
libdar::tools_secu_string_show
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!
libdar::tools_set_back_blocked_signals
void tools_set_back_blocked_signals(sigset_t old_mask)
unblock signals according to given mask
libdar::tools_system
void tools_system(user_interaction &dialog, const std::vector< std::string > &argvector)
wrapper to the "system" system call.
libdar::tools_escape_chars_in_string
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
libdar::tools_get_compression_ratio
std::string tools_get_compression_ratio(const infinint &storage_size, const infinint &file_size, bool compressed)
return the string about compression ratio
libdar::tools_unlink
void tools_unlink(const std::string &filename)
remove from filesystem the file which path is given
libdar::tools_uword2str
std::string tools_uword2str(U_16 x)
convert unsigned word to string
libdar::tools_read_string
void tools_read_string(generic_file &f, std::string &s)
read a string from a file expecting it to terminate by '\0'
libdar::tools_infinint2U_64
bool tools_infinint2U_64(infinint val, U_64 &res)
convert an infinint to U_64 (aka "uint64_t" or yet "unsigned long long")
libdar::tools_are_on_same_filesystem
bool tools_are_on_same_filesystem(const std::string &file1, const std::string &file2)
tells whether two files are on the same mounted filesystem
libdar::tools_addspacebefore
std::string tools_addspacebefore(std::string s, U_I expected_size)
prepend spaces before the given string
libdar::tools_number_base_decomposition_in_big_endian
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....
Definition dar64-2.8.3-win64/include/dar/tools.hpp:584
libdar::tools_to_upper
void tools_to_upper(const std::string &r, std::string &uppered)
convert a string to upper case
libdar::tools_write_string_all
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
libdar::tools_avoid_slice_overwriting_regex
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 ...
libdar::tools_display_integer_in_metric_system
std::string tools_display_integer_in_metric_system(infinint number, const std::string &unit, bool binary)
libdar::tools_read_string_size
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
libdar::tools_get_extended_size
infinint tools_get_extended_size(std::string s, U_I base)
convert the given string to infinint taking care of multiplication suffixes like k,...
libdar::tools_set_permission
void tools_set_permission(S_I fd, U_I perm)
change the permission of the file which descriptor is given
libdar::tools_double2infinint
infinint tools_double2infinint(double arg)
convert a double (float) to infinint (integer) taking care of rounding it to the closest value
libdar::tools_int2octal
std::string tools_int2octal(const U_I &perm)
convert a number to a string corresponding to its octal representation
libdar::tools_block_all_signals
void tools_block_all_signals(sigset_t &old_mask)
block all signals (based on POSIX sigprocmask)
libdar::tools_is_case_insensitive_equal
bool tools_is_case_insensitive_equal(const std::string &a, const std::string &b)
compare two string in case insensitive manner
libdar::tools_count_in_string
U_I tools_count_in_string(const std::string &s, const char a)
counts the number of a given char in a given string
libdar::tools_ownership2gid
uid_t tools_ownership2gid(const std::string &group)
convert string group name or gid to numeric gid value
libdar::tools_write_vector
void tools_write_vector(generic_file &f, const std::vector< std::string > &x)
write a list of string to file
libdar::tools_get_size
infinint tools_get_size(const std::string &s)
returns the size of the given plain file
libdar::tools_end
void tools_end()
libdar internal use only: it is launched from close_and_clean() and releases tools internal variables
libdar::tools_string_to_hexa
std::string tools_string_to_hexa(const std::string &input)
convert a string into its hexadecima representation (string containing an integer not its decimal rep...
libdar::tools_strerror_r
std::string tools_strerror_r(int errnum)
wrapper routine to strerror_r
libdar::tools_file_size_to_crc_size
infinint tools_file_size_to_crc_size(const infinint &size)
Defines the CRC size to use for a given filesize.
libdar::tools_ownership2uid
uid_t tools_ownership2uid(const std::string &user)
change ownership of the file which descriptor is given
libdar::tools_hook_execute
void tools_hook_execute(user_interaction &ui, const std::string &cmd_line)
execute and retries at user will a given command line
libdar::tools_memxor
void tools_memxor(void *dest, const void *src, U_I n)
Produces in "dest" the XORed value of "dest" and "src".
libdar::tools_noexcept_make_date
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
libdar::tools_relative2absolute_path
path tools_relative2absolute_path(const path &src, const path &cwd)
transform a relative path to an absolute one given the current directory value
libdar::tools_readlink
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).
libdar::tools_display_date
std::string tools_display_date(const datetime &date, bool fully_detailed=false)
convert a date in second to its human readable representation
libdar::tools_upper_rounded_log2
infinint tools_upper_rounded_log2(const infinint &ref)
compute an approximate log2 of the argument
libdar::tools_str2charptr
char * tools_str2charptr(const std::string &x)
convert a string to a char *
libdar::tools_get_permission
U_I tools_get_permission(S_I fd)
obtain the permission of the file which descriptor is given
libdar::tools_getcwd
std::string tools_getcwd()
get current working directory
libdar::tools_octal2int
U_I tools_octal2int(const std::string &perm)
convert octal string to integer
libdar::tools_get_mtime
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
libdar::tools_blocking_read
void tools_blocking_read(int fd, bool mode)
set blocking/not blocking mode for reading on a file descriptor
libdar::tools_output2xml
std::string tools_output2xml(const std::string &src)
convert string for xml output
libdar::tools_pseudo_random
U_I tools_pseudo_random(U_I max)
Produces a pseudo random number x, where 0 <= x < max.
libdar::tools_cast_type_to_unix_type
char tools_cast_type_to_unix_type(char type)
change the libdar internal type representation to the usual unix char type
libdar::tools_hook_substitute_and_execute
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
libdar::tools_rounded_square_root
infinint tools_rounded_square_root(const infinint &ref)
compute an approximate square root of the argument
libdar::tools_system_with_pipe
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
libdar::tools_hook_substitute
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
libdar::tools_find_last_char_of
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
libdar::tools_rounded_cube_root
infinint tools_rounded_cube_root(const infinint &ref)
compute an approximate cube root of the argument
libdar::tools_name_of_gid
std::string tools_name_of_gid(const infinint &gid)
convert gid to name in regards of the current system's configuration
libdar::tools_unlink_file_mask_regex
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
libdar::tools_write_string
void tools_write_string(generic_file &f, const std::string &s)
write a string to a file with a '\0' at then end
libdar::tools_concat_vector
std::string tools_concat_vector(const std::string &separator, const std::vector< std::string > &x)
concatenate a vectors of strings in a single string
libdar::tools_lower_rounded_exp2
infinint tools_lower_rounded_exp2(const infinint &ref)
compute an approximate exp2 of the argument
libdar::tools_set_ownership
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
libdar::tools_printf
std::string tools_printf(const char *format,...)
make printf-like formating to a std::string
libdar::tools_block_all_signals_except
void tools_block_all_signals_except(const std::deque< int > &non_blocked, sigset_t &old_mask)
block all signals except those given in first argument
libdar::tools_my_atoi
bool tools_my_atoi(const char *a, U_I &val)
ascii to integer conversion
libdar::tools_int2str
std::string tools_int2str(S_I x)
convert integer to string
libdar::tools_get_permission_string
std::string tools_get_permission_string(char type, U_32 perm, bool hard)
convert a permission number into its string representation (rwxrwxrwx)
libdar::tools_substitute
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::tools_str2int
U_I tools_str2int(const std::string &x)
convert an integer written in decimal notation to the corresponding value
libdar::operator+=
std::vector< T > operator+=(std::vector< T > &a, const std::vector< T > &b)
template function to add two vectors
Definition dar64-2.8.3-win64/include/dar/tools.hpp:229
libdar::tools_do_some_files_match_mask_regex
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)
libdar::tools_init
void tools_init()
libdar internal use only: it is launched from get_version() and initializes tools internal variables
libdar::tools_unsigned_char_to_hexa
std::string tools_unsigned_char_to_hexa(unsigned char x)
convert a unsigned char into its hexa decima representation
libdar::tools_U_I_to_hexa
std::string tools_U_I_to_hexa(U_I x)
convert a unsigned integer to its hexadecimal representation
libdar::tools_get_filesize
infinint tools_get_filesize(const path &p)
retrieve the size in byte of a file
libdar::tools_string2tlv_list
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.
libdar::tools_vprintf
std::string tools_vprintf(const char *format, va_list ap)
make printf-like formating to a std::string
libdar::tools_name_of_uid
std::string tools_name_of_uid(const infinint &uid)
convert uid to name in regards to the current system's configuration
libdar::tools_make_date
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
libdar::tools_read_vector
void tools_read_vector(generic_file &f, std::vector< std::string > &x)
read a list of string from a file
libdar::tools_build_regex_for_exclude_mask
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
libdar
libdar namespace encapsulate all libdar symbols
Definition dar64-2.8.3-win64/include/dar/archive.hpp:47