From 509e99e0d4e4ddfd84c389873d79a03cf96ab5b6 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sat, 23 Mar 2024 15:14:50 +0100 Subject: [PATCH 01/21] replacing deprecated libcurl's CURLINFO_CONTENT_LENGTH_DOWNLOAD by CURLINFO_CONTENT_LENGTH_DOWNLOAD_T --- src/build/ChangeLog | 4 ++++ src/libdar/fichier_libcurl.cpp | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/build/ChangeLog b/src/build/ChangeLog index f2752880..d2f7f66d 100644 --- a/src/build/ChangeLog +++ b/src/build/ChangeLog @@ -1,3 +1,7 @@ +from 2.7.14 to 2.7.15 +- updating libdar about CURLINFO_CONTENT_LENGTH_DOWNLOAD symbol which is + reported as deprecated by recent libcurl libraries. + from 2.7.13 to 2.7.14 - adding safe guard in fichier_libcurl destructor to verify all data have been passed to libcurl *and* libcurl has completed the writing operation diff --git a/src/libdar/fichier_libcurl.cpp b/src/libdar/fichier_libcurl.cpp index d2544cbe..1040295b 100644 --- a/src/libdar/fichier_libcurl.cpp +++ b/src/libdar/fichier_libcurl.cpp @@ -131,7 +131,7 @@ namespace libdar infinint fichier_libcurl::get_size() const { - double filesize; + curl_off_t filesize; fichier_libcurl *me = const_cast(this); if(me == nullptr) @@ -146,10 +146,10 @@ namespace libdar try { me->ehandle->apply(get_pointer(), wait_delay); - me->ehandle->getinfo(CURLINFO_CONTENT_LENGTH_DOWNLOAD, &filesize); + me->ehandle->getinfo(CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &filesize); if(filesize == -1) // file does not exist (or filesize is not known) filesize = 0; - me->maxpos = tools_double2infinint(filesize); + me->maxpos = infinint(filesize); me->has_maxpos = true; } catch(...) From e191d0d5e9e8b8110357766cbba0c8345df4fea4 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Wed, 3 Apr 2024 16:13:06 +0200 Subject: [PATCH 02/21] adding copyright header to doc/Makefile.am --- doc/Makefile.am | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/doc/Makefile.am b/doc/Makefile.am index df1e0ace..52559a35 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,3 +1,24 @@ +####################################################################### +# dar - disk archive - a backup/restoration program +# Copyright (C) 2002-2024 Denis Corbin +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# to contact the author, see the AUTHOR file +####################################################################### + SUBDIRS = samples mini-howto man dist_noinst_DATA = COMMAND_LINE Doxyfile portable_cp Benchmark_tools/README Benchmark_tools/always_change Benchmark_tools/bitflip Benchmark_tools/build_test_tree.bash Benchmark_tools/hide_change Benchmark_tools/historization_feature restoration_dependencies.txt dist_pkgdata_DATA = README Features.html Limitations.html Notes.html Tutorial.html Good_Backup_Practice.html FAQ.html api_tutorial.html dar_doc.jpg dar_s_doc.jpg index.html dar-catalog.dtd authentification.html dar_key.txt old_dar_key1.txt old_dar_key2.txt from_sources.html presentation.html usage_notes.html python/libdar_test.py style.css restoration-with-dar.html benchmark.html benchmark_logs.html index_dar.html index_internal.html index_libdar.html From e85fb4007a2ca1766a70d73417589c35fcf117a5 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Mon, 29 Apr 2024 21:05:38 +0200 Subject: [PATCH 03/21] removing useless const qualification on return value for a static method --- src/libdar/datetime.cpp | 2 +- src/libdar/datetime.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libdar/datetime.cpp b/src/libdar/datetime.cpp index a2f6ac6e..aef4d103 100644 --- a/src/libdar/datetime.cpp +++ b/src/libdar/datetime.cpp @@ -380,7 +380,7 @@ namespace libdar return a; } - const char datetime::time_unit_to_char(time_unit a) + char datetime::time_unit_to_char(time_unit a) { switch(a) { diff --git a/src/libdar/datetime.hpp b/src/libdar/datetime.hpp index d89cc6f4..e586f868 100644 --- a/src/libdar/datetime.hpp +++ b/src/libdar/datetime.hpp @@ -156,7 +156,7 @@ namespace libdar static time_unit min(time_unit a, time_unit b); static time_unit max(time_unit a, time_unit b); - static const char time_unit_to_char(time_unit a); + static char time_unit_to_char(time_unit a); static time_unit char_to_time_unit(const char a); /// return the factor between two units From be612442e18e1c6599010a0274e6527501d36a00 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Mon, 29 Apr 2024 22:15:53 +0200 Subject: [PATCH 04/21] fixing noexcept qualification to move assigment operator of cat_entree and derivated classes this is to have dar compiling under clang of MacOS Mojave --- src/libdar/cat_blockdev.hpp | 2 +- src/libdar/cat_chardev.hpp | 2 +- src/libdar/cat_detruit.hpp | 2 +- src/libdar/cat_device.hpp | 2 +- src/libdar/cat_directory.cpp | 2 +- src/libdar/cat_directory.hpp | 2 +- src/libdar/cat_entree.hpp | 2 +- src/libdar/cat_eod.hpp | 2 +- src/libdar/cat_ignored.hpp | 2 +- src/libdar/cat_ignored_dir.hpp | 2 +- src/libdar/cat_inode.hpp | 2 +- src/libdar/cat_lien.hpp | 2 +- src/libdar/cat_mirage.cpp | 2 +- src/libdar/cat_mirage.hpp | 2 +- src/libdar/cat_nomme.hpp | 2 +- src/libdar/cat_prise.hpp | 2 +- src/libdar/cat_tube.hpp | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/libdar/cat_blockdev.hpp b/src/libdar/cat_blockdev.hpp index 68a132ba..b0c1b2e2 100644 --- a/src/libdar/cat_blockdev.hpp +++ b/src/libdar/cat_blockdev.hpp @@ -64,7 +64,7 @@ namespace libdar cat_blockdev(const cat_blockdev & ref) = default; cat_blockdev(cat_blockdev && ref) noexcept = default; cat_blockdev & operator = (const cat_blockdev & ref) = default; - cat_blockdev & operator = (cat_blockdev && ref) noexcept = default; + cat_blockdev & operator = (cat_blockdev && ref) = default; ~cat_blockdev() = default; virtual bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_chardev.hpp b/src/libdar/cat_chardev.hpp index 081929bd..8e289819 100644 --- a/src/libdar/cat_chardev.hpp +++ b/src/libdar/cat_chardev.hpp @@ -66,7 +66,7 @@ namespace libdar cat_chardev(const cat_chardev & ref) = default; cat_chardev(cat_chardev && ref) noexcept = default; cat_chardev & operator = (const cat_chardev & ref) = default; - cat_chardev & operator = (cat_chardev && ref) noexcept = default; + cat_chardev & operator = (cat_chardev && ref) = default; ~cat_chardev() = default; diff --git a/src/libdar/cat_detruit.hpp b/src/libdar/cat_detruit.hpp index 1e111049..0c84e7ab 100644 --- a/src/libdar/cat_detruit.hpp +++ b/src/libdar/cat_detruit.hpp @@ -54,7 +54,7 @@ namespace libdar cat_detruit(const cat_detruit & ref) = default; cat_detruit(cat_detruit && ref) noexcept = default; cat_detruit & operator = (const cat_detruit & ref) = default; - cat_detruit & operator = (cat_detruit && ref) noexcept = default; + cat_detruit & operator = (cat_detruit && ref) = default; ~cat_detruit() = default; virtual bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_device.hpp b/src/libdar/cat_device.hpp index adb21a17..305432ca 100644 --- a/src/libdar/cat_device.hpp +++ b/src/libdar/cat_device.hpp @@ -62,7 +62,7 @@ namespace libdar cat_device(const cat_device & ref) = default; cat_device(cat_device && ref) noexcept = default; cat_device & operator = (const cat_device & ref) = default; - cat_device & operator = (cat_device && ref) noexcept = default; + cat_device & operator = (cat_device && ref) = default; ~cat_device() = default; virtual bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_directory.cpp b/src/libdar/cat_directory.cpp index 68eb44e0..49eb0820 100644 --- a/src/libdar/cat_directory.cpp +++ b/src/libdar/cat_directory.cpp @@ -79,7 +79,7 @@ namespace libdar return *this; } - cat_directory & cat_directory::operator = (cat_directory && ref) noexcept + cat_directory & cat_directory::operator = (cat_directory && ref) { // this assigns the inode part of the object // we don't modify the existing subfiles or subdirectories nor we copy them from the reference cat_directory diff --git a/src/libdar/cat_directory.hpp b/src/libdar/cat_directory.hpp index a5152af2..30803f3d 100644 --- a/src/libdar/cat_directory.hpp +++ b/src/libdar/cat_directory.hpp @@ -72,7 +72,7 @@ namespace libdar cat_directory(const cat_directory &ref); // only the inode part is build, no children is duplicated (empty dir) cat_directory(cat_directory && ref) noexcept; cat_directory & operator = (const cat_directory & ref); // set the inode part *only* no subdirectories/subfiles are copies or removed. - cat_directory & operator = (cat_directory && ref) noexcept; + cat_directory & operator = (cat_directory && ref); ~cat_directory() noexcept(false); // detruit aussi tous les fils et se supprime de son 'parent' /// attention this compares only the directories themselves, not the list of their children diff --git a/src/libdar/cat_entree.hpp b/src/libdar/cat_entree.hpp index d251a230..1c26e102 100644 --- a/src/libdar/cat_entree.hpp +++ b/src/libdar/cat_entree.hpp @@ -101,7 +101,7 @@ namespace libdar cat_entree & operator = (const cat_entree & ref) = default; // move assignment operator - cat_entree & operator = (cat_entree && ref) noexcept = default; + cat_entree & operator = (cat_entree && ref) = default; /// destructor virtual ~cat_entree() noexcept(false) {}; diff --git a/src/libdar/cat_eod.hpp b/src/libdar/cat_eod.hpp index a1f56b2f..62261d60 100644 --- a/src/libdar/cat_eod.hpp +++ b/src/libdar/cat_eod.hpp @@ -49,7 +49,7 @@ namespace libdar cat_eod(const cat_eod & ref) = default; cat_eod(cat_eod && ref) noexcept = default; cat_eod & operator = (const cat_eod & ref) = default; - cat_eod & operator = (cat_eod && ref) noexcept = default; + cat_eod & operator = (cat_eod && ref) = default; ~cat_eod() = default; cat_eod(const smart_pointer & pdesc, bool small): cat_entree(pdesc, small, saved_status::saved) {}; diff --git a/src/libdar/cat_ignored.hpp b/src/libdar/cat_ignored.hpp index 0bb5d87b..c3e4f377 100644 --- a/src/libdar/cat_ignored.hpp +++ b/src/libdar/cat_ignored.hpp @@ -50,7 +50,7 @@ namespace libdar cat_ignored(const cat_ignored & ref) = default; cat_ignored(cat_ignored && ref) noexcept = default; cat_ignored & operator = (const cat_ignored & ref) = default; - cat_ignored & operator = (cat_ignored && ref) noexcept = default; + cat_ignored & operator = (cat_ignored && ref) = default; ~cat_ignored() = default; virtual bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_ignored_dir.hpp b/src/libdar/cat_ignored_dir.hpp index fc1beedc..a6bff042 100644 --- a/src/libdar/cat_ignored_dir.hpp +++ b/src/libdar/cat_ignored_dir.hpp @@ -54,7 +54,7 @@ namespace libdar cat_ignored_dir(const cat_ignored_dir & ref) = default; cat_ignored_dir(cat_ignored_dir && ref) noexcept = default; cat_ignored_dir & operator = (const cat_ignored_dir & ref) = default; - cat_ignored_dir & operator = (cat_ignored_dir && ref) noexcept = default; + cat_ignored_dir & operator = (cat_ignored_dir && ref) = default; ~cat_ignored_dir() = default; bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_inode.hpp b/src/libdar/cat_inode.hpp index 7d5fab2e..7485a9b6 100644 --- a/src/libdar/cat_inode.hpp +++ b/src/libdar/cat_inode.hpp @@ -71,7 +71,7 @@ namespace libdar cat_inode(const cat_inode & ref); cat_inode(cat_inode && ref) noexcept: cat_nomme(std::move(ref)) { nullifyptr(); move_from(std::move(ref)); }; cat_inode & operator = (const cat_inode & ref); - cat_inode & operator = (cat_inode && ref) noexcept { cat_nomme::operator = (std::move(ref)); move_from(std::move(ref)); return *this; }; + cat_inode & operator = (cat_inode && ref) { cat_nomme::operator = (std::move(ref)); move_from(std::move(ref)); return *this; }; ~cat_inode() noexcept(false); const infinint & get_uid() const { return uid; }; diff --git a/src/libdar/cat_lien.hpp b/src/libdar/cat_lien.hpp index eaca21c1..8e9a9c0a 100644 --- a/src/libdar/cat_lien.hpp +++ b/src/libdar/cat_lien.hpp @@ -60,7 +60,7 @@ namespace libdar cat_lien(const cat_lien & ref) = default; cat_lien(cat_lien && ref) noexcept = default; cat_lien & operator = (const cat_lien & ref) = default; - cat_lien & operator = (cat_lien && ref) noexcept = default; + cat_lien & operator = (cat_lien && ref) = default; ~cat_lien() = default; diff --git a/src/libdar/cat_mirage.cpp b/src/libdar/cat_mirage.cpp index c95a95d1..7404ae96 100644 --- a/src/libdar/cat_mirage.cpp +++ b/src/libdar/cat_mirage.cpp @@ -247,7 +247,7 @@ namespace libdar return *this; } - cat_mirage & cat_mirage::operator = (cat_mirage && ref) noexcept + cat_mirage & cat_mirage::operator = (cat_mirage && ref) { // moving the cat_nomme part of these objects cat_nomme::operator = (move(ref)); diff --git a/src/libdar/cat_mirage.hpp b/src/libdar/cat_mirage.hpp index fe870a2c..5ec7f281 100644 --- a/src/libdar/cat_mirage.hpp +++ b/src/libdar/cat_mirage.hpp @@ -75,7 +75,7 @@ namespace libdar cat_mirage(const cat_mirage & ref) : cat_nomme (ref) { dup_on(ref.star_ref); }; cat_mirage(cat_mirage && ref) noexcept: cat_nomme(std::move(ref)) { try { dup_on(ref.star_ref); } catch(...) {}; }; cat_mirage & operator = (const cat_mirage & ref); - cat_mirage & operator = (cat_mirage && ref) noexcept; + cat_mirage & operator = (cat_mirage && ref); ~cat_mirage() { star_ref->drop_ref(this); }; virtual bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_nomme.hpp b/src/libdar/cat_nomme.hpp index 0169335a..c1746d4d 100644 --- a/src/libdar/cat_nomme.hpp +++ b/src/libdar/cat_nomme.hpp @@ -49,7 +49,7 @@ namespace libdar cat_nomme(const cat_nomme & ref) = default; cat_nomme(cat_nomme && ref) noexcept = default; cat_nomme & operator = (const cat_nomme & ref) = default; - cat_nomme & operator = (cat_nomme && ref) noexcept = default; + cat_nomme & operator = (cat_nomme && ref) = default; virtual ~cat_nomme() = default; virtual bool operator == (const cat_entree & ref) const override; diff --git a/src/libdar/cat_prise.hpp b/src/libdar/cat_prise.hpp index fa80db9e..c3e78f41 100644 --- a/src/libdar/cat_prise.hpp +++ b/src/libdar/cat_prise.hpp @@ -63,7 +63,7 @@ namespace libdar cat_prise(const cat_prise & ref) = default; cat_prise(cat_prise && ref) noexcept = default; cat_prise & operator = (const cat_prise & ref) = default; - cat_prise & operator = (cat_prise && ref) noexcept = default; + cat_prise & operator = (cat_prise && ref) = default; ~cat_prise() = default; diff --git a/src/libdar/cat_tube.hpp b/src/libdar/cat_tube.hpp index b048f9d7..b216f495 100644 --- a/src/libdar/cat_tube.hpp +++ b/src/libdar/cat_tube.hpp @@ -62,7 +62,7 @@ namespace libdar cat_tube(const cat_tube & ref) = default; cat_tube(cat_tube && ref) noexcept = default; cat_tube & operator = (const cat_tube & ref) = default; - cat_tube & operator = (cat_tube && ref) noexcept = default; + cat_tube & operator = (cat_tube && ref) = default; ~cat_tube() = default; virtual bool operator == (const cat_entree & ref) const override; From fd00274a46ee86078eedb3a08ebaaf70191e387c Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Mon, 29 Apr 2024 22:20:46 +0200 Subject: [PATCH 05/21] updating THANKS --- THANKS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/THANKS b/THANKS index 7a473ebc..eabf6697 100644 --- a/THANKS +++ b/THANKS @@ -1,3 +1,8 @@ +version 2.7.15 +-------------- +Thanks to James Pedersen for feedback, thanks to Rolf Gebhardt for +investigations and help. + version 2.7.13 -------------- Thanks to Thomas, Andrea Vai, John Goerzen and Rolf Gebhardt for having From 12743f6eb7e4cf80c9e3802b7b596a360205c4d9 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Mon, 29 Apr 2024 22:20:55 +0200 Subject: [PATCH 06/21] updating Changelog --- src/build/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/src/build/ChangeLog b/src/build/ChangeLog index d2f7f66d..db8cd38d 100644 --- a/src/build/ChangeLog +++ b/src/build/ChangeLog @@ -1,6 +1,7 @@ from 2.7.14 to 2.7.15 - updating libdar about CURLINFO_CONTENT_LENGTH_DOWNLOAD symbol which is reported as deprecated by recent libcurl libraries. +- fixed compilation problem under MacOS Mojave from 2.7.13 to 2.7.14 - adding safe guard in fichier_libcurl destructor to verify all data have From fa3e25e8c160373682505e139d22505fa6b1bb94 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Mon, 29 Apr 2024 22:21:25 +0200 Subject: [PATCH 07/21] updating version to 2.7.15.RC1 --- src/build/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/configure.ac b/src/build/configure.ac index c72b255c..cd7fea01 100644 --- a/src/build/configure.ac +++ b/src/build/configure.ac @@ -22,7 +22,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.69) -AC_INIT([DAR], [2.7.14], [[https://github.com/Edrusb/DAR/issues]]) +AC_INIT([DAR], [2.7.15.RC1], [[https://github.com/Edrusb/DAR/issues]]) AC_CONFIG_HEADERS([config.h]) AC_LANG([C++]) AC_CONFIG_SRCDIR([src/libdar/catalogue.cpp]) From 47ae75aaacf906e3e0bb1cb1d27e77cd0e66c4a7 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Tue, 11 Jun 2024 16:03:05 +0200 Subject: [PATCH 08/21] fixing bug concerning warning shown when a backup creation is about to save the resulting backup itself check against the presence of filtering different filesystem that --- src/libdar/i_archive.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libdar/i_archive.cpp b/src/libdar/i_archive.cpp index 3311cfed..c6c9788c 100644 --- a/src/libdar/i_archive.cpp +++ b/src/libdar/i_archive.cpp @@ -2105,7 +2105,7 @@ namespace libdar // checking for exclusion due to different filesystem - if(same_fs.is_covered(sauv_path_abs)) + if(! same_fs.is_covered(sauv_path_abs)) cov = false; if(snapshot) // if we do a snapshot we dont create an archive this no risk to save ourselves From f7f740b256139eae49e64dabd62775c5476ef3d7 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Tue, 11 Jun 2024 17:53:45 +0200 Subject: [PATCH 09/21] fixing a bug in path::is_subdir_of() method in the particular case of the argument beeing "/" --- src/libdar/path.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libdar/path.cpp b/src/libdar/path.cpp index ff6b4370..dda0e7ef 100644 --- a/src/libdar/path.cpp +++ b/src/libdar/path.cpp @@ -242,8 +242,9 @@ namespace libdar if(me.size() >= you.size()) if(strncmp(me.c_str(), you.c_str(), you.size()) == 0) if(me.size() > you.size()) - return me[you.size()] == '/'; - else + return you.size() > 1 && me[you.size()] == '/' + || you.size() == 1 && you[0] == '/'; + else // thus, me.size() == you.size(), thus I'm a subdir of myself return true; else // path differs in the common length part, cannot be a subdir of "you" return false; From 258a0f4fc89fca62368aa34537d99949ad900fb5 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Tue, 11 Jun 2024 17:56:25 +0200 Subject: [PATCH 10/21] updating Changelog --- src/build/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/build/ChangeLog b/src/build/ChangeLog index db8cd38d..ffd1c73e 100644 --- a/src/build/ChangeLog +++ b/src/build/ChangeLog @@ -2,6 +2,8 @@ from 2.7.14 to 2.7.15 - updating libdar about CURLINFO_CONTENT_LENGTH_DOWNLOAD symbol which is reported as deprecated by recent libcurl libraries. - fixed compilation problem under MacOS Mojave +- fixed bug that lead the warning about a backup operation about to save + the backup itslef, to not show from 2.7.13 to 2.7.14 - adding safe guard in fichier_libcurl destructor to verify all data have From 05c71dce4dd094682d5bd3a9a487a9cae76d6f9f Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Tue, 11 Jun 2024 17:57:29 +0200 Subject: [PATCH 11/21] updating version to 2.7.15.RC2 --- po/dar.pot | 6 +++--- po/fr.po | 4 ++-- po/sv.po | 4 ++-- src/build/configure.ac | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/po/dar.pot b/po/dar.pot index 025ced06..4d362500 100644 --- a/po/dar.pot +++ b/po/dar.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: dar 2.7.14\n" +"Project-Id-Version: dar 2.7.15.RC2\n" "Report-Msgid-Bugs-To: https://github.com/Edrusb/DAR/issues\n" -"POT-Creation-Date: 2024-03-23 11:12+0100\n" +"POT-Creation-Date: 2024-06-11 17:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -7043,7 +7043,7 @@ msgstr "" msgid "Cannot add an absolute path" msgstr "" -#: src/libdar/path.cpp:357 +#: src/libdar/path.cpp:358 msgid "Empty string as subdirectory does not make a valid path" msgstr "" diff --git a/po/fr.po b/po/fr.po index 6b286282..d459573b 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DAR 2.7.0\n" "Report-Msgid-Bugs-To: https://github.com/Edrusb/DAR/issues\n" -"POT-Creation-Date: 2024-03-23 11:12+0100\n" +"POT-Creation-Date: 2024-06-11 17:58+0200\n" "PO-Revision-Date: 2023-07-16 20:31+0200\n" "Last-Translator: Denis Corbin \n" "Language-Team: French \n" @@ -8075,7 +8075,7 @@ msgstr "%S n'est pas un chemin valide : %S" msgid "Cannot add an absolute path" msgstr "Impossible d'ajouter un chemin absolu" -#: src/libdar/path.cpp:357 +#: src/libdar/path.cpp:358 msgid "Empty string as subdirectory does not make a valid path" msgstr "" "Une chaîne vide en tant que sous-répertoire ne donne pas un chemin valide" diff --git a/po/sv.po b/po/sv.po index 375b01f3..4a0a1a0c 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: sv\n" "Report-Msgid-Bugs-To: https://github.com/Edrusb/DAR/issues\n" -"POT-Creation-Date: 2024-03-23 11:12+0100\n" +"POT-Creation-Date: 2024-06-11 17:58+0200\n" "PO-Revision-Date: 2012-04-15 11:28+0200\n" "Last-Translator: Peter Landgren \n" "Language-Team: Swedish \n" @@ -7803,7 +7803,7 @@ msgstr "%S är ej en giltig sökväg: %S" msgid "Cannot add an absolute path" msgstr "Kan ej lägga till en etikett till en tom stack" -#: src/libdar/path.cpp:357 +#: src/libdar/path.cpp:358 msgid "Empty string as subdirectory does not make a valid path" msgstr "En tom sträng som undermapp utgör inte en giltig sökväg" diff --git a/src/build/configure.ac b/src/build/configure.ac index cd7fea01..5c1260f2 100644 --- a/src/build/configure.ac +++ b/src/build/configure.ac @@ -22,7 +22,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.69) -AC_INIT([DAR], [2.7.15.RC1], [[https://github.com/Edrusb/DAR/issues]]) +AC_INIT([DAR], [2.7.15.RC2], [[https://github.com/Edrusb/DAR/issues]]) AC_CONFIG_HEADERS([config.h]) AC_LANG([C++]) AC_CONFIG_SRCDIR([src/libdar/catalogue.cpp]) From 69ee844ca7a86a80f2d0deb2f172b9f85de9b953 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 16 Jun 2024 11:44:33 +0200 Subject: [PATCH 12/21] fixing typos and syntax in dar man page --- man/dar.1 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/man/dar.1 b/man/dar.1 index c99dfff3..8441b749 100644 --- a/man/dar.1 +++ b/man/dar.1 @@ -352,17 +352,19 @@ The mask is a string with wildcards (like * and ? see glob(7) for details) which The mask is applied to filenames which are not directories (see glob(7) for details on wildcard characters). If a given file matches the mask and does not match any mask given with -X, the file is selected for the operation. By default (no -I and no -X on the command line), all files are included for the operation. -I may be present several times on the command line, in that case all files that match one of the -I mask will be considered for the given operation, if they do not also match one of the -X mask. See also -ar and -am options. .TP 20 -P, --prune -Do not consider file or directory sub-tree given by the path. -P may be present several time on the command line. The difference with -X is that the mask is not applied only to the filename, but also include the path. Moreover it applies also to directories (-X does not). By default (no -P on the command-line), no sub-tree or file is excluded from the operation, and the whole directory tree (as indicated by -R option) is considered. Note that may contains wildcards like * or ? see +Do not consider file or directory sub-tree given by the path. -P may be present several time on the command line. The difference with -X is that the mask is not applied only to the filename, but also includes the path. Moreover it applies also to directories (-X does not). By default (no -P on the command-line), no sub-tree or file is excluded from the operation, and the whole directory tree (as indicated by -R option) is considered. Note that may contains wildcards like * or ? see .B glob(7) -man page for more information. +or +.B regex(7) +man page for more information as well as -ar option to use regex instread of glob expressions. .TP 20 -g, --go-into -Files or directory to only take in account, as opposed to -P. -g may be present several time on command-line. Same thing here, the difference with -I is that the mask is applied to the path+filename and also concerns directories. By default all files under the -R directory are considered. Else, if one or more -g option is given, just those are selected (if they do not match any -P option). All paths given this way must be relative to the -R directory, which defaults to current directory. +Files or directory to only take in account, as opposed to -P. -g may be used several time on command-line. Same thing here, the difference with -I is that the mask is applied to the path+filename and also concerns directories. By default all files under the -R directory are considered. Else, if one or more -g option is given, just those are selected (if they do not match any -P option). All paths given this way must be relative to the -R directory, which defaults to current directory. .B Warning, -g option cannot receive wildcards, these would not be interpreted. .TP 20 -[, --include-from-file -Files listed in the listing file are included for the operation. No wildcard expression is interpreted in the listing file, the null character is not allowed and the carriage return is used to separate file names (one file name per line) each line must not exceed 20479 bytes. Note that this option applies to any files and directory exactly as -g does, with an important difference however: -g option only uses relative paths to the root directory (the directory given with the -R option), while -[ can use absolute path as well. Another difference is when the argument is a directory -g will include all the subdirectories under that directory, while when the same entry is found in a listing file given to -[ only that directory will be included, no subdirectory or subfile would be enrolled in the backup, with -[ you need to list the exact set of file you want to backup. You can thus generate a listing file with the 'find / -print > somefile' command and give 'somefile' as argument to -[ option. Note that however, dar will never save files out of the -R given root directory tree, even if some are listed in the 'somefile' file. +Files listed in the listing file are included for the operation. No wildcard expression is interpreted in the listing file, the null character is not allowed and the carriage return is used to separate file names (one file name per line) each line must not exceed 20479 bytes. Note that this option applies to any files and directory exactly as -g does, with an important difference however: -g option only uses relative paths to the root directory (the directory given with the -R option), while -[ can use absolute path as well. Another difference is when the argument is a directory -g will include all the subdirectories under that directory, while when the same entry is found in a listing file given to -[ only that directory will be included, no subdirectory or subfile would be enrolled in the backup. With -[ you need to list the exact set of file you want to backup. You can thus generate a listing file with the 'find / -print > somefile' command and give 'somefile' as argument to -[ option. Note that however, dar will never save files out of the -R given root directory tree, even if some are listed in the 'somefile' file. .TP 20 -], --exclude-from-file Files listed in the listing file are excluded from the operation. If a directory is listed in the file, all its contents is excluded. This option is the opposite of -[ and acts the same was as -P option does (in particular it is compared to the whole path+filename and applies to files and directories). As for -[ option, -] listing file can contain absolute paths, but wildcards are not expanded, neither. From 8aee39478ea620663c4d58646275a3c51297ea63 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 16 Jun 2024 12:32:48 +0200 Subject: [PATCH 13/21] claryfining the way to use archive_options_*::set_subtree in the libdar API --- src/libdar/archive_options.hpp | 69 +++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/src/libdar/archive_options.hpp b/src/libdar/archive_options.hpp index 7f3ad6fb..85faf871 100644 --- a/src/libdar/archive_options.hpp +++ b/src/libdar/archive_options.hpp @@ -313,7 +313,15 @@ namespace libdar /// defines the filenames to only save (except directory) as those that match the given mask void set_selection(const mask & selection); - /// defines the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) + /// defines the directories and files to consider + + /// \note WARNING: this mask will be applied to the absolute path of files being proceeded. + /// This is independent from the fs_root argument or archive class constructor which reduces + /// the perimeter of the backup. We speak here about the root of the filesystem under which + /// the fs_root directory contains the files to backup. The subtree filters do not compare + /// only to the path inside the fs_root directory but to the full path, including the fs_root + /// directory. In other words, if the subtree mask do not accept anything under fs_root path, + /// the resulting backup will be empty. void set_subtree(const mask & subtree); /// defines whether overwritting is allowed or not @@ -998,7 +1006,17 @@ namespace libdar /// defines the filenames to only save (except directory) as those that match the given mask void set_selection(const mask & selection); - /// defines the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) + /// defines the directories and files to consider + + /// \note WARNING: The filter mechanism used here is common to all operations and works + /// by comparing full paths, while in the other hand, paths stored in the libdar archive are + /// all relative to what was provided as fs_root at backup time. To have this filter mecanism + /// working in the context of merging, where no fs_root can be provided, libdar prepends the + /// relative path found in the libdar archive with the path::FAKE_ROOT pseudo filesystem root. + /// In consequence the provided filter here, for merging operation, should be build taking into + /// account that files of each archive to merge will be seen as subdirectories of this FAKE_ROOT + /// pseudo filesystem. In other words, if the subtree mask do not accept anything under FAKE_ROOT + /// path, the resulting backup will be empty. void set_subtree(const mask & subtree); /// defines whether overwritting is allowed or not @@ -1310,7 +1328,17 @@ namespace libdar /// defines the filenames to only save (except directory) as those that match the given mask void set_selection(const mask & selection); - /// defines the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) + /// defines the directories and files to consider + + /// \note WARNING: The filter mechanism used here is common to all operations and works + /// by comparing full paths, while in the other hand, paths stored in the libdar archive are + /// all relative paths to what was provided as fs_root at backup time. To have this filter mecanism + /// working in the context of restoration, libdar prepends the relative path found in the libdar + /// archive with the fs_root argument given to archive::op_extract. + /// In consequence the provided filter here, for extraction operation should be build taking into + /// account that files to restore will be seen as subdirectories of this provided "fs_root" where + /// the data will be restored. In other words, if the subtree mask do not accept anything under + /// fs_root path, the resulting backup will be empty. void set_subtree(const mask & subtree); /// defines whether a warning shall be issued before overwriting @@ -1467,9 +1495,18 @@ namespace libdar /// \note this mask does not reject directory (it does not apply to it) void set_selection(const mask & selection); - /// mask applied to the full path, only those matching it will be listed + /// defines the directories and files to consider /// \note a directory excluded by it implies all its content to be excluded (pruned) + /// \note WARNING: The filter mechanism used here is common to all operations and works + /// by comparing full paths, while in the other hand, paths stored in the libdar archive are + /// all relative to what was provided as fs_root at backup time. To have this filter mecanism + /// working in the context of listing, where no fs_root can be provided, libdar prepends the + /// relative path found in the libdar archive with the path::FAKE_ROOT pseudo filesystem root. + /// In consequence the provided filter here, for listing operation, should be build taking into + /// account that files of the archive to list will be seen as subdirectories of this FAKE_ROOT + /// pseudo filesystem. In other words, if the subtree mask do not accept anything under FAKE_ROOT + /// path, the resulting listing will be empty. void set_subtree(const mask & subtree); /// whether to only show entries that have their data fully saved @@ -1541,7 +1578,17 @@ namespace libdar /// list of filenames to consider (directory not concerned by this fiter) void set_selection(const mask & selection); - /// defines the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) + /// defines the directories and files to consider + + /// \note WARNING: The filter mechanism used here is common to all operations and works + /// by comparing full paths, while in the other hand, paths stored in the libdar archive are + /// all relative paths to what was provided as fs_root at backup time. To have this filter mecanism + /// working in the context of restoration, libdar prepends the relative path found in the libdar + /// archive with the fs_root argument given to archive::op_diff method. + /// In consequence the provided filter here, for comparison operation should be build taking into + /// account that files to compare will be seen as subdirectories of this provided "fs_root" the + /// the archive will be compared to. In other words, if the subtree mask do not accept anything under + /// the provided fs_root path, no file will be compared to what is on the filesystem. void set_subtree(const mask & subtree); /// whether the user needs detailed output of the operation @@ -1661,7 +1708,17 @@ namespace libdar /// list of filenames to consider (directory not concerned by this fiter) void set_selection(const mask & selection); - /// defines the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) + /// defines the directories and files to consider + + /// \note WARNING: The filter mechanism used here is common to all operations and works + /// by comparing full paths, while in the other hand, paths stored in the libdar archive are + /// all relative to what was provided as fs_root at backup time. To have this filter mecanism + /// working in the context of testing, where no fs_root can be provided, libdar prepends the + /// relative path found in the libdar archive with the path::FAKE_ROOT pseudo filesystem root. + /// In consequence the provided filter here, for testing operation, should be build taking into + /// account that files of the archive to test will be seen as subdirectories of this FAKE_ROOT + /// pseudo filesystem. In other words, if the subtree mask do not accept anything under FAKE_ROOT + /// path, the operation will test nothing. void set_subtree(const mask & subtree); /// whether the user needs detailed output of the operation From 337bdbede99b60eb2a728d7597ac28039a2434fc Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 16 Jun 2024 12:42:32 +0200 Subject: [PATCH 14/21] fixing English in comment --- src/libdar/mycurl_param_list.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libdar/mycurl_param_list.hpp b/src/libdar/mycurl_param_list.hpp index 50620e13..8f4a5b3b 100644 --- a/src/libdar/mycurl_param_list.hpp +++ b/src/libdar/mycurl_param_list.hpp @@ -125,8 +125,8 @@ namespace libdar }; - /// This class holds an etherogenous list, more precisely an map that associate a CURLoption value - /// to a value of a random type. + /// This class holds an etherogenous list, more precisely a map that associates CURLoption option + /// to a value of a random type corresponding to each CURLoption option. class mycurl_param_list { From b8f5c4101899306ec07a3f89a1e2239186594f83 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 16 Jun 2024 12:55:05 +0200 Subject: [PATCH 15/21] fixing typo in man page --- man/dar.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/dar.1 b/man/dar.1 index 8441b749..1d3c796e 100644 --- a/man/dar.1 +++ b/man/dar.1 @@ -377,7 +377,7 @@ since version 2.2.0 two modes of interpretation of these options exist. The norm .RS .TP 5 the normal method is the default and is the one that has been presented above: -A directory is elected for operation if no -P or -] option excludes it. If at least one -g or -[ option is given one command line, one -g or -[ option must cover it, else it is not elected for operation. If a directory is not selected, no recursion is done in it (the directory is pruned). For non directories files, the same is true (P, -g, -[ and -] do apply) and a second test must also be satisfied: no -X option must exclude the filename, and if at least one -I option is given, one must match the given filename (using or not wildcards). +A directory is elected for operation if no -P or -] option excludes it. If at least one -g or -[ option is given on command line, one -g or -[ option must cover it, else it is not elected for operation. If a directory is not selected, no recursion is done in it (the directory is pruned). For non directories files, the same is true (P, -g, -[ and -] do apply) and a second test must also be satisfied: no -X option must exclude the filename, and if at least one -I option is given, one must match the given filename (using or not wildcards). .TP 5 the ordered method (when -am option is given on command-line): The ordered method takes care of the order of presence between -X and -I in one hand and of -P, -g, -[ and -] in the other hand (note that it has also the same action concerning EA selection when using -u and -U options, but that's no more file selection). In the ordered method the last argument take precedence over all the previous ones, let's take an example: From 5afd2448ce0d8be7084d8375f282a55971085e22 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 16 Jun 2024 16:23:14 +0200 Subject: [PATCH 16/21] enhancing clarification about the use of path filtering and mask_list --- man/dar.1 | 2 +- src/libdar/archive_options.hpp | 49 +++++++++++++++++----------------- src/libdar/mask_list.hpp | 4 +-- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/man/dar.1 b/man/dar.1 index 1d3c796e..b20a9468 100644 --- a/man/dar.1 +++ b/man/dar.1 @@ -364,7 +364,7 @@ Files or directory to only take in account, as opposed to -P. -g may be used sev -g option cannot receive wildcards, these would not be interpreted. .TP 20 -[, --include-from-file -Files listed in the listing file are included for the operation. No wildcard expression is interpreted in the listing file, the null character is not allowed and the carriage return is used to separate file names (one file name per line) each line must not exceed 20479 bytes. Note that this option applies to any files and directory exactly as -g does, with an important difference however: -g option only uses relative paths to the root directory (the directory given with the -R option), while -[ can use absolute path as well. Another difference is when the argument is a directory -g will include all the subdirectories under that directory, while when the same entry is found in a listing file given to -[ only that directory will be included, no subdirectory or subfile would be enrolled in the backup. With -[ you need to list the exact set of file you want to backup. You can thus generate a listing file with the 'find / -print > somefile' command and give 'somefile' as argument to -[ option. Note that however, dar will never save files out of the -R given root directory tree, even if some are listed in the 'somefile' file. +Files listed in the listing file are included for the operation. No wildcard expression is interpreted in the listing file, the null character is not allowed and the carriage return is used to separate file names (one file name per line) each line must not exceed 20479 bytes. Note that this option applies to any files and directory exactly as -g does, with an important difference however: -g option only uses relative paths to the root directory (the directory given with the -R option), while -[ can use absolute path as well but only for operations that have a fs_root argument (archive creation, comparison, extraction, and so on, but not for archive listing, testing and merging). Another difference is when the argument is a directory -g will include all the subdirectories under that directory, while when the same entry is found in a listing file given to -[ option, only that directory will be included, no subdirectory or subfile would be enrolled in the backup. With -[ you need to list the exact set of file you want to backup. You can thus generate a listing file with the 'find / -print > somefile' command and give 'somefile' as argument to -[ option. Note that however, dar will never save files out of the -R given root directory tree, even if some are listed in the 'somefile' file. .TP 20 -], --exclude-from-file Files listed in the listing file are excluded from the operation. If a directory is listed in the file, all its contents is excluded. This option is the opposite of -[ and acts the same was as -P option does (in particular it is compared to the whole path+filename and applies to files and directories). As for -[ option, -] listing file can contain absolute paths, but wildcards are not expanded, neither. diff --git a/src/libdar/archive_options.hpp b/src/libdar/archive_options.hpp index 85faf871..4d4c1978 100644 --- a/src/libdar/archive_options.hpp +++ b/src/libdar/archive_options.hpp @@ -316,12 +316,12 @@ namespace libdar /// defines the directories and files to consider /// \note WARNING: this mask will be applied to the absolute path of files being proceeded. - /// This is independent from the fs_root argument or archive class constructor which reduces - /// the perimeter of the backup. We speak here about the root of the filesystem under which - /// the fs_root directory contains the files to backup. The subtree filters do not compare - /// only to the path inside the fs_root directory but to the full path, including the fs_root - /// directory. In other words, if the subtree mask do not accept anything under fs_root path, - /// the resulting backup will be empty. + /// We speak here about the root of the filesystem under which the fs_root directory contains + /// the files to backup. This is independent from the fs_root argument of class archive + /// constructor which objective is to reduce the perimeter of the backup. The subtree filters + /// do not compare only to the path inside the fs_root directory but to the full path, + /// including the fs_root directory. In other words, if the subtree mask do not accept + /// anything under fs_root path, the resulting backup will be empty. void set_subtree(const mask & subtree); /// defines whether overwritting is allowed or not @@ -1011,12 +1011,12 @@ namespace libdar /// \note WARNING: The filter mechanism used here is common to all operations and works /// by comparing full paths, while in the other hand, paths stored in the libdar archive are /// all relative to what was provided as fs_root at backup time. To have this filter mecanism - /// working in the context of merging, where no fs_root can be provided, libdar prepends the - /// relative path found in the libdar archive with the path::FAKE_ROOT pseudo filesystem root. - /// In consequence the provided filter here, for merging operation, should be build taking into - /// account that files of each archive to merge will be seen as subdirectories of this FAKE_ROOT - /// pseudo filesystem. In other words, if the subtree mask do not accept anything under FAKE_ROOT - /// path, the resulting backup will be empty. + /// working in the context of merging, where no fs_root can be provided to transform relative + /// paths to absolute paths, libdar will emulate an fs_root with the pseudo root value of the + /// path::FAKE_ROOT field. This is invisible form the libdar API user except when relying on + /// mask_list objects, which cannot thus receive full path as those would not be prepended + /// by path::FAKE_ROOT as fs_root value, because fs_root prefixing is only performed for relative + /// paths. void set_subtree(const mask & subtree); /// defines whether overwritting is allowed or not @@ -1497,16 +1497,15 @@ namespace libdar /// defines the directories and files to consider - /// \note a directory excluded by it implies all its content to be excluded (pruned) /// \note WARNING: The filter mechanism used here is common to all operations and works /// by comparing full paths, while in the other hand, paths stored in the libdar archive are /// all relative to what was provided as fs_root at backup time. To have this filter mecanism - /// working in the context of listing, where no fs_root can be provided, libdar prepends the - /// relative path found in the libdar archive with the path::FAKE_ROOT pseudo filesystem root. - /// In consequence the provided filter here, for listing operation, should be build taking into - /// account that files of the archive to list will be seen as subdirectories of this FAKE_ROOT - /// pseudo filesystem. In other words, if the subtree mask do not accept anything under FAKE_ROOT - /// path, the resulting listing will be empty. + /// working in the context of listing, where no fs_root can be provided to transform relative + /// paths to absolute paths, libdar will emulate an fs_root with the pseudo root value of the + /// path::FAKE_ROOT field. This is invisible form the libdar API user except when relying on + /// mask_list objects, which cannot thus receive full path as those would not be prepended + /// by path::FAKE_ROOT as fs_root value, because fs_root prefixing is only performed for relative + /// paths. void set_subtree(const mask & subtree); /// whether to only show entries that have their data fully saved @@ -1713,12 +1712,12 @@ namespace libdar /// \note WARNING: The filter mechanism used here is common to all operations and works /// by comparing full paths, while in the other hand, paths stored in the libdar archive are /// all relative to what was provided as fs_root at backup time. To have this filter mecanism - /// working in the context of testing, where no fs_root can be provided, libdar prepends the - /// relative path found in the libdar archive with the path::FAKE_ROOT pseudo filesystem root. - /// In consequence the provided filter here, for testing operation, should be build taking into - /// account that files of the archive to test will be seen as subdirectories of this FAKE_ROOT - /// pseudo filesystem. In other words, if the subtree mask do not accept anything under FAKE_ROOT - /// path, the operation will test nothing. + /// working in the context of testing, where no fs_root can be provided to transform relative + /// paths to absolute paths, libdar will emulate an fs_root with the pseudo root value of the + /// path::FAKE_ROOT field. This is invisible form the libdar API user except when relying on + /// mask_list objects, which cannot thus receive full path as those would not be prepended + /// by path::FAKE_ROOT as fs_root value, because fs_root prefixing is only performed for relative + /// paths. void set_subtree(const mask & subtree); /// whether the user needs detailed output of the operation diff --git a/src/libdar/mask_list.hpp b/src/libdar/mask_list.hpp index c9729936..e3986c94 100644 --- a/src/libdar/mask_list.hpp +++ b/src/libdar/mask_list.hpp @@ -57,8 +57,8 @@ namespace libdar /// filename to select for the operation /// \param[in] case_sensit whether comparison is case sensitive or not /// \param[in] prefix add this prefix to relative paths of the list. The - /// prefix should be either absolute, or "" (in case of operations - /// on an existing archive) + /// prefix should be either absolute, or path::FAKE_ROOT (if the operation + /// does not involve an fs_root - testing, listing, merging operations for example) /// \param[in] include whether the mask_list is used for file inclusion or file exclusion mask_list(const std::string & filename_list_st, bool case_sensit, const path & prefix, bool include); mask_list(const mask_list & ref) = default; From 30a096d3f86452fdfcc4affba1d28c04c11039b8 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 16 Jun 2024 17:15:58 +0200 Subject: [PATCH 17/21] fixing bug in path::pop_front no impact in dar but in webdar --- src/libdar/path.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libdar/path.cpp b/src/libdar/path.cpp index dda0e7ef..473736d0 100644 --- a/src/libdar/path.cpp +++ b/src/libdar/path.cpp @@ -185,7 +185,7 @@ namespace libdar else if(!dirs.empty()) { - relative = false; + relative = true; arg = "/"; return true; } From 687249a4f55a222e6590dee413262e6ff2a54ec4 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 23 Jun 2024 15:13:25 +0200 Subject: [PATCH 18/21] removing obsolete call to gcry_control(GCRYCTL_ENABLE_M_GUARD) when initializing libgcrypt --- src/libdar/get_version.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/libdar/get_version.cpp b/src/libdar/get_version.cpp index 31fec63c..c9071672 100644 --- a/src/libdar/get_version.cpp +++ b/src/libdar/get_version.cpp @@ -156,12 +156,6 @@ namespace libdar { gcry_error_t err; - // libgcypt built-in memory guard must be called before gcry_check_version - - err = gcry_control(GCRYCTL_ENABLE_M_GUARD); - if(err != GPG_ERR_NO_ERROR) - throw Erange("libdar_init",tools_printf(gettext("Error while activating libgcrypt's memory guard: %s/%s"), gcry_strsource(err),gcry_strerror(err))); - // no multi-thread support activated for gcrypt // this must be done from the application as stated // by the libgcrypt documentation From 12977599f8b8631e6da6eed501850b3a6d44739e Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 23 Jun 2024 15:20:04 +0200 Subject: [PATCH 19/21] updating THANKS --- THANKS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/THANKS b/THANKS index eabf6697..f621b5a8 100644 --- a/THANKS +++ b/THANKS @@ -1,7 +1,8 @@ version 2.7.15 -------------- Thanks to James Pedersen for feedback, thanks to Rolf Gebhardt for -investigations and help. +investigations and help. Thanks to Dennis Alexis Valin Dittrich +for Feedback and bug report. version 2.7.13 -------------- From 33545aa564213ddeea8c334ab1a411afd6fd6494 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 23 Jun 2024 15:20:18 +0200 Subject: [PATCH 20/21] updating Changelog --- src/build/ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/build/ChangeLog b/src/build/ChangeLog index ffd1c73e..078b5547 100644 --- a/src/build/ChangeLog +++ b/src/build/ChangeLog @@ -4,6 +4,9 @@ from 2.7.14 to 2.7.15 - fixed compilation problem under MacOS Mojave - fixed bug that lead the warning about a backup operation about to save the backup itslef, to not show +- removing obsolete call to gcry_control(GCRYCTL_ENABLE_M_GUARD) while + initializing libgcrypt. This lead to libgcrypt initialization to fail + with libgcrypt 1.11 and more recent versions. from 2.7.13 to 2.7.14 - adding safe guard in fichier_libcurl destructor to verify all data have From 26348e7954517c3807d5c2ea9d441096ffd4a617 Mon Sep 17 00:00:00 2001 From: Denis Corbin Date: Sun, 23 Jun 2024 15:20:30 +0200 Subject: [PATCH 21/21] updating version to 2.7.15.RC3 --- src/build/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/configure.ac b/src/build/configure.ac index 5c1260f2..dd7b2110 100644 --- a/src/build/configure.ac +++ b/src/build/configure.ac @@ -22,7 +22,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.69) -AC_INIT([DAR], [2.7.15.RC2], [[https://github.com/Edrusb/DAR/issues]]) +AC_INIT([DAR], [2.7.15.RC3], [[https://github.com/Edrusb/DAR/issues]]) AC_CONFIG_HEADERS([config.h]) AC_LANG([C++]) AC_CONFIG_SRCDIR([src/libdar/catalogue.cpp])