Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package snapper for openSUSE:Factory checked 
in at 2021-04-10 15:26:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/snapper (Old)
 and      /work/SRC/openSUSE:Factory/.snapper.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "snapper"

Sat Apr 10 15:26:15 2021 rev:125 rq:883887 version:0.8.16

Changes:
--------
--- /work/SRC/openSUSE:Factory/snapper/snapper.changes  2021-03-24 
16:10:02.279755511 +0100
+++ /work/SRC/openSUSE:Factory/.snapper.new.2401/snapper.changes        
2021-04-10 15:26:38.078326037 +0200
@@ -1,0 +2,15 @@
+Thu Apr 08 14:05:19 CEST 2021 - [email protected]
+
+- move org.opensuse.Snapper.conf from /etc to /usr (bsc#1183398 and
+  gh#openSUSE/snapper#492)
+- run boot.service iff root config exists (gh#openSUSE/snapper#630)
+
+-------------------------------------------------------------------
+Wed Apr 07 10:24:33 CEST 2021 - [email protected]
+
+- avoid redundant quota rescans for same btrfs (see
+  gh#openSUSE/snapper#507)
+- allow absolute sizes for SPACE_LIMIT and FREE_LIMIT
+  (gh#openSUSE/snapper#507)
+
+-------------------------------------------------------------------
@@ -5,0 +21 @@
+- version 0.8.16

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ snapper.spec ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:38.846326940 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:38.850326945 +0200
@@ -57,6 +57,7 @@
 %if 0%{?fedora_version} >= 24 || 0%{?centos_version} >= 800
 BuildRequires:  glibc-langpack-de
 BuildRequires:  glibc-langpack-en
+BuildRequires:  glibc-langpack-fr
 %endif
 %if ! 0%{?mandriva_version}
 %if 0%{?fedora_version} >= 23
@@ -87,6 +88,7 @@
 %endif
 Requires:       diffutils
 Requires:       libsnapper5 = %version
+Requires:       systemd
 %if 0%{?suse_version}
 Recommends:     logrotate snapper-zypp-plugin
 Supplements:    btrfsprogs
@@ -192,7 +194,10 @@
 %endif
 %config(noreplace) %{_sysconfdir}/logrotate.d/snapper
 %{_unitdir}/snapper*.*
-%config /etc/dbus-1/system.d/org.opensuse.Snapper.conf
+%if 0%{?suse_version} <= 1500
+%dir %{_datadir}/dbus-1/system.d
+%endif
+%{_datadir}/dbus-1/system.d/org.opensuse.Snapper.conf
 %{_datadir}/dbus-1/system-services/org.opensuse.Snapper.service
 
 %package -n libsnapper5

++++++ debian.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/debian/snapper.install new/debian/snapper.install
--- old/debian/snapper.install  2021-03-19 01:00:00.000000000 +0100
+++ new/debian/snapper.install  2021-04-08 02:00:00.000000000 +0200
@@ -1,9 +1,9 @@
 etc/cron.daily/snapper
 etc/cron.hourly/snapper
-etc/dbus-1/system.d/org.opensuse.Snapper.conf
 etc/logrotate.d/snapper
 usr/bin/snapper
 usr/sbin/snapperd
+usr/share/dbus-1/system.d/org.opensuse.Snapper.conf
 usr/share/dbus-1/system-services/org.opensuse.Snapper.service
 usr/share/locale/*/LC_MESSAGES/snapper.mo
 usr/lib/systemd/system/snapperd.service

++++++ snapper-0.8.16.tar.bz2 ++++++
++++ 1815 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/LIBVERSION new/snapper-0.8.16/LIBVERSION
--- old/snapper-0.8.16/LIBVERSION       2021-03-19 01:00:00.000000000 +0100
+++ new/snapper-0.8.16/LIBVERSION       2021-04-08 02:00:00.000000000 +0200
@@ -1 +1 @@
-5.2.1
+5.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/cleanup.cc new/snapper-0.8.16/client/cleanup.cc
--- old/snapper-0.8.16/client/cleanup.cc        2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/cleanup.cc        2021-04-08 02:00:00.000000000 
+0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2011-2014] Novell, Inc.
- * Copyright (c) [2016-2020] SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -30,6 +30,7 @@
 #include "snapper/Snapper.h"
 
 #include "utils/Range.h"
+#include "utils/Limit.h"
 #include "utils/equal-date.h"
 #include "utils/HumanString.h"
 #include "cleanup.h"
@@ -46,28 +47,39 @@
     virtual bool is_degenerated() const { return true; }
 
     time_t min_age;
-    double space_limit;
-    double free_limit;
+    MaxUsedLimit space_limit;
+    MinFreeLimit free_limit;
 
-    template<typename Type>
-    void read(const ProxyConfig& config, const char* name, Type& value)
+
+    void read(const ProxyConfig& config, const char* name, long int& value)
     {
        const map<string, string>& raw = config.getAllValues();
        map<string, string>::const_iterator pos = raw.find(name);
        if (pos != raw.end())
            pos->second >> value;
     }
-};
 
 
-Parameters::Parameters(const ProxySnapper* snapper)
-    : min_age(1800), space_limit(0.5), free_limit(0.2)
-{
-    ProxyConfig config = snapper->getConfig();
+    template<typename Type>
+    void read(const ProxyConfig& config, const char* name, Type& value)
+    {
+       const map<string, string>& raw = config.getAllValues();
+       map<string, string>::const_iterator pos = raw.find(name);
+       if (pos != raw.end())
+       {
+           try
+           {
+               value.parse(pos->second);
+           }
+           catch (const Exception& e)
+           {
+               SN_CAUGHT(e);
 
-    read(config, "SPACE_LIMIT", space_limit);
-    read(config, "FREE_LIMIT", free_limit);
-}
+               cerr << "failed to parse \"" << pos->second << "\" for \"" << 
name << "\"" << endl;
+           }
+       }
+    }
+};
 
 
 ostream&
@@ -79,6 +91,16 @@
 }
 
 
+Parameters::Parameters(const ProxySnapper* snapper)
+    : min_age(1800), space_limit(0.5), free_limit(0.2)
+{
+    ProxyConfig config = snapper->getConfig();
+
+    read(config, "SPACE_LIMIT", space_limit);
+    read(config, "FREE_LIMIT", free_limit);
+}
+
+
 class Cleaner
 {
 public:
@@ -245,7 +267,7 @@
        return false;
     }
 
-    return parameters.space_limit < 1.0;
+    return parameters.space_limit.is_enabled();
 }
 
 
@@ -257,14 +279,12 @@
     if (quota_data.size == 0)
        return true;
 
-    double fraction = (double)(quota_data.used) / (double)(quota_data.size);
-
-    bool satisfied = fraction < parameters.space_limit;
+    bool satisfied = parameters.space_limit.is_satisfied(quota_data.size, 
quota_data.used);
 
 #ifdef VERBOSE_LOGGING
-    cout << byte_to_humanstring(quota_data.size, 2) << ", "
-        << byte_to_humanstring(quota_data.used, 2) << ", "
-        << fraction << ", " << satisfied << '\n';
+    cout << byte_to_humanstring(quota_data.size, true, 2) << ", "
+        << byte_to_humanstring(quota_data.used, true, 2) << ", "
+        << satisfied << '\n';
 #endif
 
     return satisfied;
@@ -289,7 +309,7 @@
        return false;
     }
 
-    return parameters.free_limit > 0.0;
+    return parameters.free_limit.is_enabled();
 }
 
 
@@ -301,14 +321,12 @@
     if (free_space_data.size == 0)
        return true;
 
-    double fraction = (double)(free_space_data.free) / 
(double)(free_space_data.size);
-
-    bool satisfied = fraction > parameters.free_limit;
+    bool satisfied = parameters.free_limit.is_satisfied(free_space_data.size, 
free_space_data.free);
 
 #ifdef VERBOSE_LOGGING
-    cout << byte_to_humanstring(free_space_data.size, 2) << ", "
-        << byte_to_humanstring(free_space_data.free, 2) << ", "
-        << fraction << ", " << satisfied << '\n';
+    cout << byte_to_humanstring(free_space_data.size, true, 2) << ", "
+        << byte_to_humanstring(free_space_data.free, true, 2) << ", "
+        << satisfied << '\n';
 #endif
 
     return satisfied;
@@ -448,6 +466,15 @@
 };
 
 
+ostream&
+operator<<(ostream& s, const NumberParameters& parameters)
+{
+    return s << dynamic_cast<const Parameters&>(parameters) << '\n'
+            << "limit:" << parameters.limit << '\n'
+            << "limit-important:" << parameters.limit_important;
+}
+
+
 NumberParameters::NumberParameters(const ProxySnapper* snapper)
     : Parameters(snapper), limit(50), limit_important(10)
 {
@@ -457,15 +484,10 @@
 
     read(config, "NUMBER_LIMIT", limit);
     read(config, "NUMBER_LIMIT_IMPORTANT", limit_important);
-}
-
 
-ostream&
-operator<<(ostream& s, const NumberParameters& parameters)
-{
-    return s << dynamic_cast<const Parameters&>(parameters) << '\n'
-            << "limit:" << parameters.limit << '\n'
-            << "limit-important:" << parameters.limit_important;
+#ifdef VERBOSE_LOGGING
+    cout << *this << '\n';
+#endif
 }
 
 
@@ -571,6 +593,18 @@
 };
 
 
+ostream&
+operator<<(ostream& s, const TimelineParameters& parameters)
+{
+    return s << dynamic_cast<const Parameters&>(parameters) << '\n'
+            << "limit-hourly:" << parameters.limit_hourly << '\n'
+            << "limit-daily:" << parameters.limit_daily << '\n'
+            << "limit-weekly:" << parameters.limit_weekly << '\n'
+            << "limit-monthly:" << parameters.limit_monthly << '\n'
+            << "limit-yearly:" << parameters.limit_yearly;
+}
+
+
 TimelineParameters::TimelineParameters(const ProxySnapper* snapper)
     : Parameters(snapper), limit_hourly(10), limit_daily(10), 
limit_monthly(10),
       limit_weekly(0), limit_yearly(10)
@@ -584,18 +618,10 @@
     read(config, "TIMELINE_LIMIT_WEEKLY", limit_weekly);
     read(config, "TIMELINE_LIMIT_MONTHLY", limit_monthly);
     read(config, "TIMELINE_LIMIT_YEARLY", limit_yearly);
-}
 
-
-ostream&
-operator<<(ostream& s, const TimelineParameters& parameters)
-{
-    return s << dynamic_cast<const Parameters&>(parameters) << '\n'
-            << "limit-hourly:" << parameters.limit_hourly << '\n'
-            << "limit-daily:" << parameters.limit_daily << '\n'
-            << "limit-weekly:" << parameters.limit_weekly << '\n'
-            << "limit-monthly:" << parameters.limit_monthly << '\n'
-            << "limit-yearly:" << parameters.limit_yearly;
+#ifdef VERBOSE_LOGGING
+    cout << *this << '\n';
+#endif
 }
 
 
@@ -781,6 +807,10 @@
     ProxyConfig config = snapper->getConfig();
 
     read(config, "EMPTY_PRE_POST_MIN_AGE", min_age);
+
+#ifdef VERBOSE_LOGGING
+    cout << *this << '\n';
+#endif
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/cmd-cleanup.cc 
new/snapper-0.8.16/client/cmd-cleanup.cc
--- old/snapper-0.8.16/client/cmd-cleanup.cc    2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/cmd-cleanup.cc    2021-04-08 02:00:00.000000000 
+0200
@@ -239,7 +239,7 @@
        {
            try
            {
-               free_space = humanstring_to_byte(opt->second);
+               free_space = humanstring_to_byte(opt->second, false);
            }
            catch (const Exception& e)
            {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/cmd-list.cc new/snapper-0.8.16/client/cmd-list.cc
--- old/snapper-0.8.16/client/cmd-list.cc       2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/cmd-list.cc       2021-04-08 02:00:00.000000000 
+0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2011-2015] Novell, Inc.
- * Copyright (c) [2016-2020] SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -27,6 +27,7 @@
 #include "snapper/SnapperTmpl.h"
 #include "dbus/DBusMessage.h"
 #include "utils/HumanString.h"
+#include <snapper/BtrfsUtils.h>
 
 #include "utils/text.h"
 #include "GlobalOptions.h"
@@ -144,9 +145,18 @@
 
            bool used_space_broken = true;
 
+           /**
+            * For all btrfses (by btrfs filesystem uuid) keep track of whether 
used space
+            * is broken.
+            */
+           static map<Uuid, bool> used_space_broken_by_uuid;
+
        };
 
 
+       map<Uuid, bool> OutputHelper::used_space_broken_by_uuid;
+
+
        OutputHelper::OutputHelper(const ProxySnapper* snapper, const 
vector<Column>& columns)
            : snapper(snapper), snapshots(snapper->getSnapshots()), 
default_snapshot(snapshots.end()),
              active_snapshot(snapshots.end())
@@ -169,18 +179,39 @@
            }
 
            // Calculate the used space iff columns include USED_SPACE. Also 
sets
-           // used_space_broken for use in skip_column.
+           // used_space_broken (even cached) for use in skip_column.
 
            if (find(columns.begin(), columns.end(), Column::USED_SPACE) != 
columns.end())
            {
+               string subvolume = snapper->getConfig().getSubvolume();
+
                try
                {
-                   snapper->calculateUsedSpace();
-                   used_space_broken = false;
+                   Uuid uuid = BtrfsUtils::get_uuid(subvolume);
+
+                   map<Uuid, bool>::const_iterator pos = 
used_space_broken_by_uuid.find(uuid);
+                   if (pos != used_space_broken_by_uuid.end())
+                   {
+                       used_space_broken = pos->second;
+                   }
+                   else
+                   {
+                       try
+                       {
+                           snapper->calculateUsedSpace();
+                           used_space_broken = used_space_broken_by_uuid[uuid] 
= false;
+                       }
+                       catch (const QuotaException& e)
+                       {
+                           SN_CAUGHT(e);
+
+                           used_space_broken_by_uuid[uuid] = true;
+                       }
+                   }
                }
-               catch (const QuotaException& e)
+               catch (const runtime_error& e)
                {
-                   SN_CAUGHT(e);
+                   // getting uuid failed, maybe it is a LVM config
                }
            }
        }
@@ -385,7 +416,7 @@
 
                    uint64_t used_space = snapshot.getUsedSpace();
                    if (output_options.human)
-                       return byte_to_humanstring(used_space, 2);
+                       return byte_to_humanstring(used_space, false, 2);
                    else
                        return used_space;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/HumanString.cc 
new/snapper-0.8.16/client/utils/HumanString.cc
--- old/snapper-0.8.16/client/utils/HumanString.cc      2021-03-19 
01:00:00.000000000 +0100
+++ new/snapper-0.8.16/client/utils/HumanString.cc      2021-04-08 
02:00:00.000000000 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2004-2014] Novell, Inc.
- * Copyright (c) [2016-2020] SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -21,6 +21,7 @@
  */
 
 
+#include <locale>
 #include <cmath>
 #include <vector>
 #include <sstream>
@@ -52,8 +53,10 @@
 
 
     vector<string>
-    get_all_suffixes(int i, bool all = true)
+    get_all_suffixes(int i, bool all = true, bool classic = false)
     {
+       auto _ = [classic](const char* msg) { return classic ? msg : ::_(msg); 
};
+
        vector<string> ret;
 
        switch (i)
@@ -145,9 +148,9 @@
 
 
     string
-    get_suffix(int i)
+    get_suffix(int i, bool classic)
     {
-       return get_all_suffixes(i, false).front();
+       return get_all_suffixes(i, false, classic).front();
     }
 
 
@@ -165,9 +168,10 @@
        // according to the suffix. Do all required error checks.
 
        pair<bool, unsigned long long>
-       parse_i(const string& str, int i)
+       parse_i(const string& str, int i, const locale& loc)
        {
            istringstream s(str);
+           s.imbue(loc);
 
            unsigned long long v;
            s >> v;
@@ -196,9 +200,10 @@
 
 
        pair<bool, unsigned long long>
-       parse_f(const string& str, int i)
+       parse_f(const string& str, int i, const locale& loc)
        {
            istringstream s(str);
+           s.imbue(loc);
 
            long double v;
            s >> v;
@@ -233,13 +238,15 @@
 
 
     string
-    byte_to_humanstring(unsigned long long size, int precision)
+    byte_to_humanstring(unsigned long long size, bool classic, int precision)
     {
        // Calculate the index of the suffix to use. The index increases by 1
        // when the number of leading zeros decreases by 10.
 
        static_assert(sizeof(size) == 8, "unsigned long long not 64 bit");
 
+       const locale loc = classic ? locale::classic() : locale();
+
        int i = size > 0 ? (64 - (clz(size) + 1)) / 10 : 0;
 
        if (i == 0)
@@ -247,7 +254,8 @@
            unsigned long long v = size >> 10 * i;
 
            std::ostringstream s;
-           s << v << ' ' << get_suffix(i);
+           s.imbue(loc);
+           s << v << ' ' << get_suffix(i, classic);
            return s.str();
        }
        else
@@ -255,34 +263,39 @@
            long double v = std::ldexp((long double)(size), - 10 * i);
 
            std::ostringstream s;
+           s.imbue(loc);
            s.setf(std::ios::fixed);
            s.precision(precision);
-           s << v << ' ' << get_suffix(i);
+           s << v << ' ' << get_suffix(i, classic);
            return s.str();
        }
     }
 
 
     unsigned long long
-    humanstring_to_byte(const string& str)
+    humanstring_to_byte(const string& str, bool classic)
     {
-       const string str_trimmed = boost::trim_copy(str);
+       const locale loc = classic ? locale::classic() : locale();
+
+       const string str_trimmed = boost::trim_copy(str, loc);
 
        for (int i = 0; i < num_suffixes(); ++i)
        {
-           for (const string& suffix : get_all_suffixes(i))
+           vector<string> suffixes = get_all_suffixes(i, true, classic);
+
+           for (const string& suffix : suffixes)
            {
-               if (boost::iends_with(str_trimmed, suffix))
+               if (boost::iends_with(str_trimmed, suffix, loc))
                {
-                   string number = boost::trim_copy(str_trimmed.substr(0, 
str_trimmed.size() - suffix.size()));
+                   string number = boost::trim_copy(str_trimmed.substr(0, 
str_trimmed.size() - suffix.size()), loc);
 
                    pair<bool, unsigned long long> v;
 
-                   v = parse_i(number, i);
+                   v = parse_i(number, i, loc);
                    if (v.first)
                        return v.second;
 
-                   v = parse_f(number, i);
+                   v = parse_f(number, i, loc);
                    if (v.first)
                        return v.second;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/HumanString.h 
new/snapper-0.8.16/client/utils/HumanString.h
--- old/snapper-0.8.16/client/utils/HumanString.h       2021-03-19 
01:00:00.000000000 +0100
+++ new/snapper-0.8.16/client/utils/HumanString.h       2021-04-08 
02:00:00.000000000 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2004-2014] Novell, Inc.
- * Copyright (c) [2016-2020] SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -48,9 +48,10 @@
      * Return a suffix.
      *
      * @param i index of suffix
+     * @param classic use classic locale instead of global C++ locale
      * @return suffix
      */
-    std::string get_suffix(int i);
+    std::string get_suffix(int i, bool classic);
 
 
     /**
@@ -59,10 +60,11 @@
      * - 1 B).
      *
      * @param size size in bytes
+     * @param classic use classic locale instead of global C++ locale
      * @param precision number of fraction digits in output
      * @return formatted string
      */
-    std::string byte_to_humanstring(unsigned long long size, int precision);
+    std::string byte_to_humanstring(unsigned long long size, bool classic, int 
precision);
 
 
     /**
@@ -71,10 +73,11 @@
      * is 0 B to (16 EiB - 1 B).
      *
      * @param str size string
+     * @param classic use classic locale instead of global C++ locale
      * @return bytes
      *
      * The conversion is always case-insensitive.
      */
-    unsigned long long humanstring_to_byte(const std::string& str);
+    unsigned long long humanstring_to_byte(const std::string& str, bool 
classic);
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/Limit.cc 
new/snapper-0.8.16/client/utils/Limit.cc
--- old/snapper-0.8.16/client/utils/Limit.cc    1970-01-01 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/utils/Limit.cc    2021-04-08 02:00:00.000000000 
+0200
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2021 SUSE LLC
+ *
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as published
+ * by the Free Software Foundation.
+ *
+ * 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, contact Novell, Inc.
+ *
+ * To contact Novell about this file by physical or electronic mail, you may
+ * find current contact information at www.novell.com.
+ */
+
+
+#include <locale>
+#include <boost/algorithm/string.hpp>
+
+#include <snapper/Exception.h>
+#include <snapper/SnapperTmpl.h>
+
+#include "Limit.h"
+#include "HumanString.h"
+
+
+namespace snapper
+{
+    using namespace std;
+
+
+    void
+    Limit::parse(const string& s)
+    {
+       // try plain float
+
+       double v;
+       istringstream a(boost::trim_copy(s, locale::classic()));
+       classic(a);
+       a >> v;
+
+       if (!a.fail() && a.eof())
+       {
+           fraction = v;
+           type = FRACTION;
+           return;
+       }
+
+       // try size
+
+       try
+       {
+           absolute = humanstring_to_byte(s, true);
+           type = ABSOLUTE;
+           return;
+       }
+       catch (const Exception& e)
+       {
+           SN_CAUGHT(e);
+       }
+
+       SN_THROW(Exception("failed to parse limit"));
+    }
+
+
+    ostream&
+    operator<<(ostream& str, const Limit& smart_size)
+    {
+       switch (smart_size.type)
+       {
+           case Limit::FRACTION:
+               str << smart_size.fraction;
+               break;
+
+           case Limit::ABSOLUTE:
+               str << byte_to_humanstring(smart_size.absolute, false, 2);
+               break;
+       }
+
+       return str;
+    }
+
+
+    bool
+    MaxUsedLimit::is_enabled() const
+    {
+       switch (type)
+       {
+           case FRACTION:
+               return fraction < 1.0;
+
+           case ABSOLUTE:
+               return true;
+       }
+
+       return false;
+    }
+
+
+    bool
+    MaxUsedLimit::is_satisfied(unsigned long long size, unsigned long long 
used) const
+    {
+       switch (type)
+       {
+           case FRACTION:
+               return (double)(used) / (double)(size) < fraction;
+
+           case ABSOLUTE:
+               return used < absolute;
+       }
+
+       return false;
+    }
+
+
+    bool
+    MinFreeLimit::is_enabled() const
+    {
+       switch (type)
+       {
+           case FRACTION:
+               return fraction > 0.0;
+
+           case ABSOLUTE:
+               return absolute > 0;
+       }
+
+       return false;
+    }
+
+
+    bool
+    MinFreeLimit::is_satisfied(unsigned long long size, unsigned long long 
free) const
+    {
+       switch (type)
+       {
+           case FRACTION:
+               return (double)(free) / (double)(size) > fraction;
+
+           case ABSOLUTE:
+               return free > absolute;
+       }
+
+       return false;
+    }
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/Limit.h new/snapper-0.8.16/client/utils/Limit.h
--- old/snapper-0.8.16/client/utils/Limit.h     1970-01-01 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/utils/Limit.h     2021-04-08 02:00:00.000000000 
+0200
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2021 SUSE LLC
+ *
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as published
+ * by the Free Software Foundation.
+ *
+ * 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, contact Novell, Inc.
+ *
+ * To contact Novell about this file by physical or electronic mail, you may
+ * find current contact information at www.novell.com.
+ */
+
+
+#ifndef SNAPPER_LIMIT_H
+#define SNAPPER_LIMIT_H
+
+
+#include <string>
+#include <ostream>
+
+
+namespace snapper
+{
+    using namespace std;
+
+
+    class Limit
+    {
+    public:
+
+       Limit(double fraction) : type(FRACTION), fraction(fraction) {}
+
+       /**
+        * Uses the classic locale since the class is intended for config data.
+        */
+       void parse(const string& s);
+
+       friend ostream& operator<<(ostream& str, const Limit& limit);
+
+    protected:
+
+       enum Type { FRACTION, ABSOLUTE };
+
+       Type type;
+
+       union
+       {
+           double fraction;
+           unsigned long long absolute;
+       };
+
+    };
+
+
+    class MaxUsedLimit : public Limit
+    {
+    public:
+
+       MaxUsedLimit(double fraction) : Limit(fraction) {}
+
+       bool is_enabled() const;
+
+       bool is_satisfied(unsigned long long size, unsigned long long used) 
const;
+
+    };
+
+
+    class MinFreeLimit : public Limit
+    {
+    public:
+
+       MinFreeLimit(double fraction) : Limit(fraction) {}
+
+       bool is_enabled() const;
+
+       bool is_satisfied(unsigned long long size, unsigned long long free) 
const;
+
+    };
+
+}
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/Makefile.am 
new/snapper-0.8.16/client/utils/Makefile.am
--- old/snapper-0.8.16/client/utils/Makefile.am 2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/utils/Makefile.am 2021-04-08 02:00:00.000000000 
+0200
@@ -14,6 +14,7 @@
        GetOpts.cc          GetOpts.h           \
        Range.cc            Range.h             \
        HumanString.cc      HumanString.h       \
+       Limit.cc            Limit.h             \
        TableFormatter.cc   TableFormatter.h    \
        CsvFormatter.cc     CsvFormatter.h      \
        JsonFormatter.cc    JsonFormatter.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/Range.cc 
new/snapper-0.8.16/client/utils/Range.cc
--- old/snapper-0.8.16/client/utils/Range.cc    2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/utils/Range.cc    2021-04-08 02:00:00.000000000 
+0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016 SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -20,71 +20,65 @@
  */
 
 
-#include <string>
 #include <sstream>
 
-#include "Range.h"
+#include <snapper/Exception.h>
+#include <snapper/SnapperTmpl.h>
 
-using namespace std;
+#include "Range.h"
 
 
-istream&
-operator>>(istream& s, Range& range)
+namespace snapper
 {
-    string value;
-    s >> value;
 
-    string::size_type pos = value.find('-');
-    if (pos == string::npos)
-    {
-       size_t v;
+    using namespace std;
 
-       istringstream a(value);
-       a >> v;
-       if (a.fail() || !a.eof())
-       {
-           s.setstate(ios::failbit);
-           return s;
-       }
 
-       range.min = range.max = v;
-    }
-    else
+    void
+    Range::parse(const string& s)
     {
-       size_t v1, v2;
-
-       istringstream a(value.substr(0, pos));
-       a >> v1;
-       if (a.fail() || !a.eof())
+       string::size_type pos = s.find('-');
+       if (pos == string::npos)
        {
-           s.setstate(ios::failbit);
-           return s;
-       }
+           size_t v;
 
-       istringstream b(value.substr(pos + 1));
-       b >> v2;
-       if (b.fail() || !b.eof())
-       {
-           s.setstate(ios::failbit);
-           return s;
-       }
+           istringstream a(s);
+           classic(a);
+           a >> v;
+           if (a.fail() || !a.eof())
+               SN_THROW(Exception("failed to parse range"));
 
-       if (v1 > v2)
-       {
-           s.setstate(ios::failbit);
-           return s;
+           min = max = v;
        }
+       else
+       {
+           size_t v1, v2;
+
+           istringstream a(s.substr(0, pos));
+           classic(a);
+           a >> v1;
+           if (a.fail() || !a.eof())
+               SN_THROW(Exception("failed to parse range"));
+
+           istringstream b(s.substr(pos + 1));
+           classic(b);
+           b >> v2;
+           if (b.fail() || !b.eof())
+               SN_THROW(Exception("failed to parse range"));
 
-       range.min = v1;
-       range.max = v2;
+           if (v1 > v2)
+               SN_THROW(Exception("failed to parse range"));
+
+           min = v1;
+           max = v2;
+       }
     }
 
-    return s;
-}
 
+    ostream&
+    operator<<(ostream& s, const Range& range)
+    {
+       return s << range.min << "-" << range.max;
+    }
 
-ostream&
-operator<<(ostream& s, const Range& range)
-{
-    return s << range.min << "-" << range.max;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/client/utils/Range.h new/snapper-0.8.16/client/utils/Range.h
--- old/snapper-0.8.16/client/utils/Range.h     2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/client/utils/Range.h     2021-04-08 02:00:00.000000000 
+0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016 SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -23,35 +23,45 @@
 #ifndef SNAPPER_RANGE_H
 #define SNAPPER_RANGE_H
 
-#include <ostream>
 
-using std::istream;
-using std::ostream;
+#include <string>
+#include <ostream>
 
 
-/*
- * Simple class to hold a range of two size_ts as min and max.
- */
-class Range
+namespace snapper
 {
-public:
+    using namespace std;
+
+
+    /*
+     * Simple class to hold a range of two size_ts as min and max.
+     */
+    class Range
+    {
+    public:
+
+       enum Value { MIN, MAX };
+
+       Range(size_t value) : min(value), max(value) {}
 
-    enum Value { MIN, MAX };
+       /**
+        * Uses the classic locale since the class is intended for config data.
+        */
+       void parse(const string& s);
 
-    Range(size_t value) : min(value), max(value) {}
+       size_t value(Value value) const { return value == MIN ? min : max; }
 
-    size_t value(Value value) const { return value == MIN ? min : max; }
+       bool is_degenerated() const { return min == max; }
 
-    bool is_degenerated() const { return min == max; }
+       friend ostream& operator<<(ostream& s, const Range& range);
 
-    friend istream& operator>>(istream& s, Range& range);
-    friend ostream& operator<<(ostream& s, const Range& range);
+    private:
 
-private:
+       size_t min;
+       size_t max;
 
-    size_t min;
-    size_t max;
-};
+    };
 
+}
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/data/Makefile.am new/snapper-0.8.16/data/Makefile.am
--- old/snapper-0.8.16/data/Makefile.am 2021-03-19 01:00:00.000000000 +0100
+++ new/snapper-0.8.16/data/Makefile.am 2021-04-08 02:00:00.000000000 +0200
@@ -18,7 +18,7 @@
        install -D -m 644 lvm.txt $(DESTDIR)/etc/snapper/filters/lvm.txt
        install -D -m 644 x11.txt $(DESTDIR)/etc/snapper/filters/x11.txt
 
-       install -D -m 644 org.opensuse.Snapper.conf 
$(DESTDIR)/etc/dbus-1/system.d/org.opensuse.Snapper.conf
+       install -D -m 644 org.opensuse.Snapper.conf 
$(DESTDIR)/usr/share/dbus-1/system.d/org.opensuse.Snapper.conf
        install -D -m 644 org.opensuse.Snapper.service 
$(DESTDIR)/usr/share/dbus-1/system-services/org.opensuse.Snapper.service
 
 if ENABLE_SYSTEMD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/data/boot.service new/snapper-0.8.16/data/boot.service
--- old/snapper-0.8.16/data/boot.service        2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/data/boot.service        2021-04-08 02:00:00.000000000 
+0200
@@ -1,5 +1,6 @@
 [Unit]
 Description=Take snapper snapshot of root on boot
+ConditionPathExists=/etc/snapper/configs/root
 
 [Service]
 Type=oneshot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/data/default-config new/snapper-0.8.16/data/default-config
--- old/snapper-0.8.16/data/default-config      2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/data/default-config      2021-04-08 02:00:00.000000000 
+0200
@@ -10,10 +10,10 @@
 QGROUP=""
 
 
-# fraction of the filesystems space the snapshots may use
+# fraction or absolute size of the filesystems space the snapshots may use
 SPACE_LIMIT="0.5"
 
-# fraction of the filesystems space that should be free
+# fraction or absolute size of the filesystems space that should be free
 FREE_LIMIT="0.2"
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/dists/debian/snapper-xUbuntu.dsc.in.in 
new/snapper-0.8.16/dists/debian/snapper-xUbuntu.dsc.in.in
--- old/snapper-0.8.16/dists/debian/snapper-xUbuntu.dsc.in.in   2021-03-19 
01:00:00.000000000 +0100
+++ new/snapper-0.8.16/dists/debian/snapper-xUbuntu.dsc.in.in   2021-04-08 
02:00:00.000000000 +0200
@@ -4,7 +4,7 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/doc/pam_snapper.xml.in 
new/snapper-0.8.16/doc/pam_snapper.xml.in
--- old/snapper-0.8.16/doc/pam_snapper.xml.in   2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/doc/pam_snapper.xml.in   2021-04-08 02:00:00.000000000 
+0200
@@ -36,7 +36,7 @@
   <refsect1 id='description'>
     <title>DESCRIPTION</title>
 
-    <para>Create a snapshot at every login of a user, thus he or she always 
has a save
+    <para>Create a snapshot at every login of a user, thus they always have a 
save
     starting point.</para>
 
     <para>As many users do not logout for some time, it is a good idea to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/doc/snapper-configs.xml.in 
new/snapper-0.8.16/doc/snapper-configs.xml.in
--- old/snapper-0.8.16/doc/snapper-configs.xml.in       2021-03-19 
01:00:00.000000000 +0100
+++ new/snapper-0.8.16/doc/snapper-configs.xml.in       2021-04-08 
02:00:00.000000000 +0200
@@ -2,13 +2,13 @@
 <refentry id='snapper-configs5'>
 
   <refentryinfo>
-    <date>2018-10-29</date>
+    <date>2021-04-07</date>
   </refentryinfo>
 
   <refmeta>
     <refentrytitle>snapper-configs</refentrytitle>
     <manvolnum>5</manvolnum>
-    <refmiscinfo class='date'>2018-10-29</refmiscinfo>
+    <refmiscinfo class='date'>2021-04-07</refmiscinfo>
     <refmiscinfo class='version'>@VERSION@</refmiscinfo>
     <refmiscinfo class='manual'>Filesystem Snapshot Management</refmiscinfo>
   </refmeta>
@@ -63,22 +63,25 @@
       <varlistentry>
        
<term><option>SPACE_LIMIT=<replaceable>float</replaceable></option></term>
        <listitem>
-         <para>Limit for the fraction of the filesystems space the snapshots
-         should use.</para>
+         <para>Limit of the filesystems space the snapshots should
+         use. Either a fraction of the whole filesystem for an
+         absolute value. An absolute value must use the C locale.</para>
          <para>Only supported for btrfs.</para>
          <para>Default value is &quot;0.5&quot;.</para>
-         <para>New in version 0.3.0.</para>
+         <para>New in version 0.3.0, absolute value new in version
+         0.9.0.</para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
        
<term><option>FREE_LIMIT=<replaceable>float</replaceable></option></term>
        <listitem>
-         <para>Limit for the fraction of the filesystem space that
-         should be free.</para>
+         <para>Limit of the filesystem space that should be
+         free. Either a fraction of the whole filesystem for an absolute
+         value. An absolute value must use the C locale.</para>
          <para>Only supported for btrfs.</para>
          <para>Default value is &quot;0.2&quot;.</para>
-         <para>New in version 0.8.0.</para>
+         <para>New in version 0.8.0, absolute value new in version 
0.9.0.</para>
        </listitem>
       </varlistentry>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/po/de.po new/snapper-0.8.16/po/de.po
--- old/snapper-0.8.16/po/de.po 2021-03-19 01:00:00.000000000 +0100
+++ new/snapper-0.8.16/po/de.po 2021-04-08 02:00:00.000000000 +0200
@@ -7,8 +7,8 @@
 "Project-Id-Version: snapper\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-12-17 13:34+0100\n"
-"PO-Revision-Date: 2021-03-07 13:54+0000\n"
-"Last-Translator: Gemineo <[email protected]>\n"
+"PO-Revision-Date: 2021-03-29 16:37+0000\n"
+"Last-Translator: Bernd Ritter <[email protected]>\n"
 "Language-Team: German <https://l10n.opensuse.org/projects/snapper/master/de/>"
 "\n"
 "Language: de\n"
@@ -354,21 +354,30 @@
 
 #, c-format
 msgid "Cannot delete snapshot %d since it is the current system."
-msgstr "Schnappschuss %d kann nicht gel??scht werden, seitdem es das derzeit 
laufende System ist."
+msgstr ""
+"Schnappschuss %d kann nicht gel??scht werden, weil es das derzeitige System "
+"ist."
 
 #, c-format
 msgid "Cannot delete snapshot %d since it is the currently mounted snapshot."
-msgstr "Schnappschuss %d kann nicht gel??scht werden, seitdem es der derzeit 
gemountete Schnappschuss ist."
+msgstr ""
+"Schnappschuss %d kann nicht gel??scht werden, weil es der derzeit gemountete "
+"Schnappschuss ist."
 
 #, c-format
 msgid "Cannot delete snapshot %d since it is the next to be mounted snapshot."
-msgstr "Schnappschuss %d kann nicht gel??scht werden, seitdem es der n??chste 
zu mountende Schnappschuss ist."
+msgstr ""
+"Schnappschuss %d kann nicht gel??scht werden, weil es der n??chste zu "
+"mountende Schnappschuss ist."
 
 msgid "Cannot detect ambit since default subvolume is unknown."
-msgstr "Anwendungsbereich kann nicht erkannt werden, seitdem das 
Standard-Subvolume unbekannt ist."
+msgstr ""
+"Anwendungsbereich kann nicht erkannt werden, weil das Standard-Subvolume "
+"unbekannt ist."
 
 msgid "Cannot do rollback since default subvolume is unknown."
-msgstr "Kann kein Rollback durchf??hren, seitdem das Standard-Subvolume 
unbekannt ist."
+msgstr ""
+"Kann kein Rollback durchf??hren, weil das Standard-Subvolume unbekannt ist."
 
 msgid "Cleanup"
 msgstr "Bereinigen"
@@ -800,7 +809,7 @@
 #. %1$s is replaced by list of possible values
 #, c-format
 msgid "Use %1$s."
-msgstr "%1$s verwenden."
+msgstr "Verwendung von %1$s."
 
 #, c-format
 msgid "Use an integer number from %d to %d."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/snapper/AppUtil.cc new/snapper-0.8.16/snapper/AppUtil.cc
--- old/snapper-0.8.16/snapper/AppUtil.cc       2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/snapper/AppUtil.cc       2021-04-08 02:00:00.000000000 
+0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2004-2015] Novell, Inc.
- * Copyright (c) [2016-2020] SUSE LLC
+ * Copyright (c) [2016-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -425,4 +425,29 @@
        return std::equal(std::begin(value), std::end(value), 
std::begin(rhs.value));
     }
 
+
+    bool
+    Uuid::operator<(const Uuid& rhs) const
+    {
+       return std::lexicographical_compare(std::begin(value), std::end(value),
+                                           std::begin(rhs.value), 
std::end(rhs.value));
+    }
+
+
+    std::ostream&
+    operator<<(std::ostream& s, const Uuid& uuid)
+    {
+       for (int i = 0; i < 16; ++i)
+       {
+           char buf[4];
+           snprintf(buf, 4, "%02x", uuid.value[i]);
+           s << buf;
+
+           if (i == 3 || i == 5 || i == 7 || i == 9)
+               s << '-';
+       }
+
+       return s;
+    }
+
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/snapper/AppUtil.h new/snapper-0.8.16/snapper/AppUtil.h
--- old/snapper-0.8.16/snapper/AppUtil.h        2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/snapper/AppUtil.h        2021-04-08 02:00:00.000000000 
+0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2004-2015] Novell, Inc.
- * Copyright (c) 2020 SUSE LLC
+ * Copyright (c) [2020-2021] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -29,6 +29,7 @@
 #include <pwd.h>
 #include <grp.h>
 #include <unistd.h>
+#include <ostream>
 #include <sstream>
 #include <locale>
 #include <string>
@@ -185,6 +186,9 @@
        uint8_t value[16];
 
        bool operator==(const Uuid& rhs) const;
+       bool operator<(const Uuid& rhs) const;
+
+       friend std::ostream& operator<<(std::ostream& s, const Uuid& uuid);
 
     };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/snapper/BtrfsUtils.cc 
new/snapper-0.8.16/snapper/BtrfsUtils.cc
--- old/snapper-0.8.16/snapper/BtrfsUtils.cc    2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/snapper/BtrfsUtils.cc    2021-04-08 02:00:00.000000000 
+0200
@@ -287,18 +287,8 @@
            if (ioctl(fd, BTRFS_IOC_QUOTA_RESCAN, &args) < 0)
                throw runtime_error_with_errno("ioctl(BTRFS_IOC_QUOTA_RESCAN) 
failed", errno);
 
-           while (true)
-           {
-               sleep(1);
-
-               memset(&args, 0, sizeof(args));
-
-               if (ioctl(fd, BTRFS_IOC_QUOTA_RESCAN_STATUS, &args) < 0)
-                   throw 
runtime_error_with_errno("ioctl(BTRFS_IOC_QUOTA_RESCAN_STATUS) failed", errno);
-
-               if (!args.flags)
-                   break;
-           }
+           if (ioctl(fd, BTRFS_IOC_QUOTA_RESCAN_WAIT, &args) < 0)
+               throw 
runtime_error_with_errno("ioctl(BTRFS_IOC_QUOTA_WAIT_RESCAN) failed", errno);
        }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/snapper/Version.h new/snapper-0.8.16/snapper/Version.h
--- old/snapper-0.8.16/snapper/Version.h        2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/snapper/Version.h        2021-04-08 02:00:00.000000000 
+0200
@@ -25,8 +25,8 @@
 
 
 #define LIBSNAPPER_MAJOR="5"
-#define LIBSNAPPER_MINOR="2"
-#define LIBSNAPPER_PATCHLEVEL="1"
+#define LIBSNAPPER_MINOR="3"
+#define LIBSNAPPER_PATCHLEVEL="0"
 
 #define LIBSNAPPER_VERSION ( LIBSNAPPER_MAJOR * 10000 + \\
                             LIBSNAPPER_MINOR * 100 + \\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/snapper.spec.in new/snapper-0.8.16/snapper.spec.in
--- old/snapper-0.8.16/snapper.spec.in  2021-03-19 01:00:00.000000000 +0100
+++ new/snapper-0.8.16/snapper.spec.in  2021-04-08 02:00:00.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package snapper
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -55,8 +55,9 @@
 BuildRequires:  pkg-config
 %endif
 %if 0%{?fedora_version} >= 24 || 0%{?centos_version} >= 800
-BuildRequires: glibc-langpack-en
 BuildRequires: glibc-langpack-de
+BuildRequires: glibc-langpack-fr
+BuildRequires: glibc-langpack-en
 %endif
 %if ! 0%{?mandriva_version}
 %if 0%{?fedora_version} >= 23
@@ -87,6 +88,7 @@
 %endif
 Requires:       diffutils
 Requires:       libsnapper@LIBVERSION_MAJOR@ = %version
+Requires:       systemd
 %if 0%{?suse_version}
 Recommends:     logrotate snapper-zypp-plugin
 Supplements:    btrfsprogs
@@ -192,7 +194,10 @@
 %endif
 %config(noreplace) %{_sysconfdir}/logrotate.d/snapper
 %{_unitdir}/snapper*.*
-%config /etc/dbus-1/system.d/org.opensuse.Snapper.conf
+%if 0%{?suse_version} <= 1500
+%dir %{_datadir}/dbus-1/system.d
+%endif
+%{_datadir}/dbus-1/system.d/org.opensuse.Snapper.conf
 %{_datadir}/dbus-1/system-services/org.opensuse.Snapper.service
 
 %package -n libsnapper@LIBVERSION_MAJOR@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/testsuite/Makefile.am 
new/snapper-0.8.16/testsuite/Makefile.am
--- old/snapper-0.8.16/testsuite/Makefile.am    2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/testsuite/Makefile.am    2021-04-08 02:00:00.000000000 
+0200
@@ -7,9 +7,9 @@
 LDADD = ../snapper/libsnapper.la ../dbus/libdbus.la -lboost_unit_test_framework
 
 check_PROGRAMS = sysconfig-get1.test dirname1.test basename1.test              
\
-       equal-date.test dbus-escape.test cmp-lt.test humanstring.test           
\
+       equal-date.test dbus-escape.test cmp-lt.test humanstring.test uuid.test 
\
        table.test table-formatter.test csv-formatter.test json-formatter.test  
\
-       getopts.test scan-datetime.test root-prefix.test
+       getopts.test scan-datetime.test root-prefix.test range.test limit.test
 
 if ENABLE_BTRFS_QUOTA
 check_PROGRAMS += qgroup1.test
@@ -31,6 +31,8 @@
 
 humanstring_test_LDADD = -lboost_unit_test_framework 
../client/utils/libutils.la
 
+uuid_test_LDADD = -lboost_unit_test_framework ../client/utils/libutils.la
+
 table_test_LDADD = -lboost_unit_test_framework ../client/utils/libutils.la
 
 table_formatter_test_LDADD = -lboost_unit_test_framework 
../client/utils/libutils.la
@@ -42,3 +44,7 @@
 getopts_test_LDADD = -lboost_unit_test_framework ../client/utils/libutils.la
 
 lvm_utils_test_LDADD = -lboost_unit_test_framework ../snapper/libsnapper.la
+
+range_test_LDADD = -lboost_unit_test_framework ../client/utils/libutils.la
+
+limit_test_LDADD = -lboost_unit_test_framework ../client/utils/libutils.la
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/testsuite/humanstring.cc 
new/snapper-0.8.16/testsuite/humanstring.cc
--- old/snapper-0.8.16/testsuite/humanstring.cc 2021-03-19 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/testsuite/humanstring.cc 2021-04-08 02:00:00.000000000 
+0200
@@ -23,7 +23,7 @@
 {
     locale::global(locale(loc));
 
-    return byte_to_humanstring(size, precision);
+    return byte_to_humanstring(size, false, precision);
 }
 
 
@@ -32,7 +32,7 @@
 {
     locale::global(locale(loc));
 
-    return humanstring_to_byte(str);
+    return humanstring_to_byte(str, false);
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/testsuite/limit.cc new/snapper-0.8.16/testsuite/limit.cc
--- old/snapper-0.8.16/testsuite/limit.cc       1970-01-01 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/testsuite/limit.cc       2021-04-08 02:00:00.000000000 
+0200
@@ -0,0 +1,85 @@
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE snapper
+
+#include <boost/test/unit_test.hpp>
+
+#include <locale>
+
+#include <snapper/Exception.h>
+#include "../client/utils/Limit.h"
+#include "../client/utils/HumanString.h"
+
+
+using namespace std;
+using namespace snapper;
+
+
+string
+test(const char* loc, const string& s)
+{
+    locale::global(locale(loc));
+
+    Limit limit(0.5);
+    limit.parse(s);
+
+    locale::global(locale::classic());
+    
+    ostringstream tmp;
+    tmp << limit;
+    return tmp.str();
+}
+
+
+BOOST_AUTO_TEST_CASE(parse1)
+{
+    BOOST_CHECK_EQUAL(test("en_US.UTF-8", "0.10"), "0.1");
+    BOOST_CHECK_EQUAL(test("de_DE.UTF-8", "0.10"), "0.1");
+    BOOST_CHECK_EQUAL(test("fr_FR.UTF-8", "0.10"), "0.1");
+}
+
+
+BOOST_AUTO_TEST_CASE(parse2)
+{
+    BOOST_CHECK_EQUAL(test("en_US.UTF-8", "2.5 GiB"), "2.50 GiB");
+    BOOST_CHECK_EQUAL(test("de_DE.UTF-8", "2.5 GiB"), "2.50 GiB");
+    BOOST_CHECK_EQUAL(test("fr_FR.UTF-8", "2.5 GiB"), "2.50 GiB");
+
+    BOOST_CHECK_EQUAL(test("en_US.UTF-8", "2.5 gib"), "2.50 GiB");
+    BOOST_CHECK_EQUAL(test("en_US.UTF-8", "2.5 gb"), "2.50 GiB");
+}
+
+
+BOOST_AUTO_TEST_CASE(error1)
+{
+    BOOST_CHECK_THROW(test("de_DE.UTF-8", "0,5"), Exception);
+}
+
+
+BOOST_AUTO_TEST_CASE(error2)
+{
+    BOOST_CHECK_THROW(test("de_DE.UTF-8", "2,5 GiB"), Exception);
+    BOOST_CHECK_THROW(test("fr_FR.UTF-8", "2,5 Gio"), Exception);
+}
+
+
+BOOST_AUTO_TEST_CASE(test1)
+{
+    MaxUsedLimit used_limit(0.5);
+
+    BOOST_CHECK(used_limit.is_enabled());
+
+    BOOST_CHECK(used_limit.is_satisfied(1 * TiB, 0.45 * TiB));
+    BOOST_CHECK(!used_limit.is_satisfied(1 * TiB, 0.55 * TiB));
+}
+
+
+BOOST_AUTO_TEST_CASE(test2)
+{
+    MinFreeLimit free_limit(0.2);
+
+    BOOST_CHECK(free_limit.is_enabled());
+
+    BOOST_CHECK(free_limit.is_satisfied(1 * TiB, 0.25 * TiB));
+    BOOST_CHECK(!free_limit.is_satisfied(1 * TiB, 0.15 * TiB));
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/testsuite/range.cc new/snapper-0.8.16/testsuite/range.cc
--- old/snapper-0.8.16/testsuite/range.cc       1970-01-01 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/testsuite/range.cc       2021-04-08 02:00:00.000000000 
+0200
@@ -0,0 +1,68 @@
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE snapper
+
+#include <boost/test/unit_test.hpp>
+
+#include <locale>
+
+#include <snapper/Exception.h>
+#include "../client/utils/Range.h"
+
+using namespace std;
+using namespace snapper;
+
+
+string
+test(const char* loc, const string& s)
+{
+    locale::global(locale(loc));
+
+    Range range(10);
+    range.parse(s);
+
+    ostringstream tmp;
+    tmp << range;
+    return tmp.str();
+}
+
+
+BOOST_AUTO_TEST_CASE(parse1)
+{
+    BOOST_CHECK_EQUAL(test("en_US.UTF-8", "10"), "10-10");
+    BOOST_CHECK_EQUAL(test("de_DE.UTF-8", "10"), "10-10");
+}
+
+
+BOOST_AUTO_TEST_CASE(parse2)
+{
+    BOOST_CHECK_EQUAL(test("en_US.UTF-8", "10-20"), "10-20");
+    BOOST_CHECK_EQUAL(test("de_DE.UTF-8", "10-20"), "10-20");
+}
+
+
+BOOST_AUTO_TEST_CASE(error1)
+{
+    BOOST_CHECK_THROW(test("en_US.UTF-8", "10 - 20"), Exception);
+    BOOST_CHECK_THROW(test("en_US.UTF-8", "10-"), Exception);
+    BOOST_CHECK_THROW(test("en_US.UTF-8", "-20"), Exception);
+
+    BOOST_CHECK_THROW(test("en_US.UTF-8", "a-b"), Exception);
+}
+
+
+BOOST_AUTO_TEST_CASE(test1)
+{
+    Range range(10);
+
+    BOOST_CHECK(range.is_degenerated());
+}
+
+
+BOOST_AUTO_TEST_CASE(test2)
+{
+    Range range(10);
+    range.parse("2-10");
+
+    BOOST_CHECK(!range.is_degenerated());
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/snapper-0.8.16/testsuite/uuid.cc new/snapper-0.8.16/testsuite/uuid.cc
--- old/snapper-0.8.16/testsuite/uuid.cc        1970-01-01 01:00:00.000000000 
+0100
+++ new/snapper-0.8.16/testsuite/uuid.cc        2021-04-08 02:00:00.000000000 
+0200
@@ -0,0 +1,24 @@
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE snapper
+
+#include <sstream>
+#include <boost/test/unit_test.hpp>
+
+#include "../snapper/AppUtil.h"
+
+using namespace snapper;
+
+
+BOOST_AUTO_TEST_CASE(test1)
+{
+    uint8_t value[16] = { 0x78, 0x9e, 0x39, 0xcd, 0x96, 0x7f, 0x41, 0xf0,
+                         0x8a, 0x17, 0xcc, 0xc8, 0xf0, 0x00, 0x2e, 0xae };
+
+    Uuid uuid;
+    std::copy(std::begin(value), std::end(value), std::begin(uuid.value));
+    std::ostringstream s;
+    s << uuid;
+
+    BOOST_CHECK_EQUAL(s.str(), "789e39cd-967f-41f0-8a17-ccc8f0002eae");
+}

++++++ snapper-Debian_10.0.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.398327590 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.398327590 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-Debian_9.0.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.418327613 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.422327618 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-Debian_Unstable.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.438327637 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.438327637 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_17.04.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.466327670 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.466327670 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_17.10.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.486327693 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.486327693 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_18.04.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.502327712 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.506327717 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_18.10.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.522327736 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.522327736 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_19.04.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.538327754 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.538327754 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_19.10.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.554327773 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.554327773 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_20.04.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.570327792 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.570327792 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

++++++ snapper-xUbuntu_20.10.dsc ++++++
--- /var/tmp/diff_new_pack.bIf3xs/_old  2021-04-10 15:26:39.586327811 +0200
+++ /var/tmp/diff_new_pack.bIf3xs/_new  2021-04-10 15:26:39.586327811 +0200
@@ -4,11 +4,11 @@
 Binary: snapper
 Maintainer: Arvin Schnell <[email protected]>
 Architecture: any
-Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, ncurses-dev
+Build-Depends: debhelper (>= 4.1.16), acl-dev, dbus, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libjson-c-dev, libpam-dev, xsltproc, docbook-xsl, 
language-pack-en, language-pack-de, language-pack-fr, ncurses-dev
 #
 # The 'Files' line is generated during 'make package':
 # Files:
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-618a72dea5f41306d700ab0891278baf 637009 snapper-0.8.16.tar.bz2
+3cb90e7933c2bcc64645ecfbb9aab3a6 639349 snapper-0.8.16.tar.bz2

Reply via email to