Hello community,

here is the log from the commit of package snapper for openSUSE:Factory checked 
in at 2019-09-07 11:28:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/snapper (Old)
 and      /work/SRC/openSUSE:Factory/.snapper.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "snapper"

Sat Sep  7 11:28:08 2019 rev:108 rq:727331 version:0.8.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/snapper/snapper.changes  2019-04-01 
12:33:52.833806015 +0200
+++ /work/SRC/openSUSE:Factory/.snapper.new.7948/snapper.changes        
2019-09-07 11:28:11.158473567 +0200
@@ -1,0 +2,6 @@
+Fri Aug 30 17:29:34 CET 2019 - ifors...@suse.com
+
+- reusing existing subvolumes on mksubvolume run
+  (bsc#1138725, bsc#1126900, gh#openSUSE/snapper#236)
+
+-------------------------------------------------------------------

New:
----
  snapper-xUbuntu_19.04.dsc

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

Other differences:
------------------
++++++ debian.tar.gz ++++++

++++++ snapper-0.8.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/Makefile.am 
new/snapper-0.8.3/Makefile.am
--- old/snapper-0.8.3/Makefile.am       2019-03-27 01:00:00.000000000 +0100
+++ new/snapper-0.8.3/Makefile.am       2019-08-30 02:00:00.000000000 +0200
@@ -28,7 +28,8 @@
     xUbuntu_17.04      \
     xUbuntu_17.10      \
     xUbuntu_18.04      \
-    xUbuntu_18.10
+    xUbuntu_18.10      \
+    xUbuntu_19.04
 
 show-debian:
        @echo "Debian flavors: $(DEBIAN_FLAVOURS)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/Makefile.in 
new/snapper-0.8.3/Makefile.in
--- old/snapper-0.8.3/Makefile.in       2019-03-27 01:00:00.000000000 +0100
+++ new/snapper-0.8.3/Makefile.in       2019-08-30 02:00:00.000000000 +0200
@@ -409,7 +409,8 @@
     xUbuntu_17.04      \
     xUbuntu_17.10      \
     xUbuntu_18.04      \
-    xUbuntu_18.10
+    xUbuntu_18.10      \
+    xUbuntu_19.04
 
 
 # Create all the files necessary for building the package with OBS:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/aclocal.m4 new/snapper-0.8.3/aclocal.m4
--- old/snapper-0.8.3/aclocal.m4        2019-03-27 01:00:00.000000000 +0100
+++ new/snapper-0.8.3/aclocal.m4        2019-08-30 02:00:00.000000000 +0200
@@ -9049,7 +9049,7 @@
 m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
 
 # pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
-# serial 12 (pkg-config-0.29.2)
+# serial 11 (pkg-config-0.29.1)
 
 dnl Copyright © 2004 Scott James Remnant <sc...@netsplit.com>.
 dnl Copyright © 2012-2015 Dan Nicholson <dbn.li...@gmail.com>
@@ -9091,7 +9091,7 @@
 dnl See the "Since" comment for each macro you use to see what version
 dnl of the macros you require.
 m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29.2])
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
 m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
     [m4_fatal([pkg.m4 version $1 or higher is required but 
]PKG_MACROS_VERSION[ found])])
 ])dnl PKG_PREREQ
@@ -9192,7 +9192,7 @@
 AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
 
 pkg_failed=no
-AC_MSG_CHECKING([for $2])
+AC_MSG_CHECKING([for $1])
 
 _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
 _PKG_CONFIG([$1][_LIBS], [libs], [$2])
@@ -9202,11 +9202,11 @@
 See the pkg-config man page for more details.])
 
 if test $pkg_failed = yes; then
-        AC_MSG_RESULT([no])
+       AC_MSG_RESULT([no])
         _PKG_SHORT_ERRORS_SUPPORTED
         if test $_pkg_short_errors_supported = yes; then
                $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "$2" 2>&1`
-        else
+        else 
                $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"$2" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
@@ -9223,7 +9223,7 @@
 _PKG_TEXT])[]dnl
         ])
 elif test $pkg_failed = untried; then
-        AC_MSG_RESULT([no])
+       AC_MSG_RESULT([no])
        m4_default([$4], [AC_MSG_FAILURE(
 [The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -9324,6 +9324,74 @@
 AS_VAR_IF([$1], [""], [$5], [$4])dnl
 ])dnl PKG_CHECK_VAR
 
+dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
+dnl   [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------
+dnl
+dnl Prepare a "--with-" configure option using the lowercase
+dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
+dnl PKG_CHECK_MODULES in a single macro.
+AC_DEFUN([PKG_WITH_MODULES],
+[
+m4_pushdef([with_arg], m4_tolower([$1]))
+
+m4_pushdef([description],
+           [m4_default([$5], [build with ]with_arg[ support])])
+
+m4_pushdef([def_arg], [m4_default([$6], [auto])])
+m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
+m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
+
+m4_case(def_arg,
+            [yes],[m4_pushdef([with_without], [--without-]with_arg)],
+            [m4_pushdef([with_without],[--with-]with_arg)])
+
+AC_ARG_WITH(with_arg,
+     AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
+    [AS_TR_SH([with_]with_arg)=def_arg])
+
+AS_CASE([$AS_TR_SH([with_]with_arg)],
+            [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
+            [auto],[PKG_CHECK_MODULES([$1],[$2],
+                                        [m4_n([def_action_if_found]) $3],
+                                        [m4_n([def_action_if_not_found]) $4])])
+
+m4_popdef([with_arg])
+m4_popdef([description])
+m4_popdef([def_arg])
+
+])dnl PKG_WITH_MODULES
+
+dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [DESCRIPTION], [DEFAULT])
+dnl -----------------------------------------------
+dnl
+dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
+dnl check._[VARIABLE-PREFIX] is exported as make variable.
+AC_DEFUN([PKG_HAVE_WITH_MODULES],
+[
+PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
+
+AM_CONDITIONAL([HAVE_][$1],
+               [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
+])dnl PKG_HAVE_WITH_MODULES
+
+dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------------------
+dnl
+dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
+dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
+dnl and preprocessor variable.
+AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
+[
+PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
+
+AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
+        [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
+])dnl PKG_HAVE_DEFINE_WITH_MODULES
+
 # Copyright (C) 2002-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/client/mksubvolume.cc 
new/snapper-0.8.3/client/mksubvolume.cc
--- old/snapper-0.8.3/client/mksubvolume.cc     2019-03-27 01:00:00.000000000 
+0100
+++ new/snapper-0.8.3/client/mksubvolume.cc     2019-08-30 02:00:00.000000000 
+0200
@@ -89,7 +89,15 @@
     if (fd < 0)
        throw runtime_error_with_errno("open failed", errno);
 
-    create_subvolume(fd, basename(subvolume_name));
+    try
+    {
+       create_subvolume(fd, basename(subvolume_name));
+    }
+    catch(...)
+    {
+       close(fd);
+       throw;
+    }
 
     close(fd);
 }
@@ -120,13 +128,10 @@
 }
 
 
-void
-do_add_fstab_and_mount(MntTable& mnt_table, const libmnt_fs* fs, const string& 
subvol_option,
-                      const string& subvolume_name)
+libmnt_fs*
+create_fstab_line(const libmnt_fs* fs, const string& subvol_option,
+                 const string& subvolume_name)
 {
-    if (verbose)
-       cout << "do-add-fstab-and-mount" << endl;
-
     libmnt_fs* x = mnt_copy_fs(NULL, fs);
     if (!x)
        throw runtime_error("mnt_copy_fs failed");
@@ -144,20 +149,41 @@
     mnt_fs_set_options(x, options);
     free(options);
 
-    // Caution: mnt_context_mount may change the source of x so the fstab
-    // functions must be called first.
-    mnt_table.add_fs(x);
-    mnt_table.replace_file();
+    return x;
+}
+
+
+void
+do_add_fstab_and_mount(MntTable& mnt_table, libmnt_fs* x)
+{
+    if (verbose)
+       cout << "do-add-fstab-and-mount" << endl;
+
+    if (mnt_table.find_target(target.c_str(), MNT_ITER_FORWARD) == NULL)
+    {
+       // Caution: mnt_context_mount may change the source of x so the fstab
+       // functions must be called first.
+       mnt_table.add_fs(x);
+       mnt_table.replace_file();
+    }
+    else
+       cout << "reusing existing fstab entry" << endl;
 
     if (mkdir(target.c_str(), 0777) != 0 && errno != EEXIST)
        throw runtime_error_with_errno("mkdir failed", errno);
 
     struct libmnt_context* cxt = mnt_new_context();
-    mnt_context_set_fs(cxt, x);
+    libmnt_fs* y;
+    if (mnt_context_find_umount_fs(cxt, target.c_str(), &y))
+    {
+       mnt_context_set_fs(cxt, x);
 
-    int ret = mnt_context_mount(cxt);
-    if (ret != 0)
-       throw runtime_error(sformat("mnt_context_mount failed, ret:%d", ret));
+       int ret = mnt_context_mount(cxt);
+       if (ret != 0)
+           throw runtime_error(sformat("mnt_context_mount failed, ret:%d", 
ret));
+    }
+    else
+       cout << "reusing mounted target" << endl;
 
     mnt_free_context(cxt);
 
@@ -166,13 +192,10 @@
 
 
 void
-do_set_nocow()
+do_set_cow_flag()
 {
-    if (!set_nocow)
-       return;
-
     if (verbose)
-       cout << "do-set-nocow" << endl;
+       cout << "do-set-cow-flag" << endl;
 
     int fd = open(target.c_str(), O_RDONLY);
     if (fd == -1)
@@ -188,7 +211,10 @@
        throw runtime_error_with_errno("ioctl(EXT2_IOC_GETFLAGS) failed", 
errno);
     }
 
-    flags |= FS_NOCOW_FL;
+    if (set_nocow)
+       flags |= FS_NOCOW_FL;
+    else
+       flags &= ~FS_NOCOW_FL;
 
     if (ioctl(fd, EXT2_IOC_SETFLAGS, &flags) == -1)
     {
@@ -201,16 +227,12 @@
 
 
 bool
-is_subvol_mount(const string& fs_options)
+is_subvol_mount(libmnt_fs* fs)
 {
-    vector<string> tmp1;
-    boost::split(tmp1, fs_options, boost::is_any_of(","), 
boost::token_compress_on);
-    for (const string& tmp2 : tmp1)
-    {
-       if (boost::starts_with(tmp2, "subvol=") || boost::starts_with(tmp2, 
"subvolid="))
-           return true;
-    }
-
+    if (mnt_fs_get_option(fs, "subvol", NULL, NULL) == 0)
+       return true;
+    if (mnt_fs_get_option(fs, "subvolid", NULL, NULL) == 0)
+       return true;
     return false;
 }
 
@@ -242,10 +264,7 @@
        if (fs_fstype != "btrfs")
            throw runtime_error("filesystem is not btrfs");
 
-       if (fs_target == target)
-           throw runtime_error("target exists in fstab");
-
-       if (!is_subvol_mount(fs_options))
+       if (!is_subvol_mount(fs))
            return fs;
 
        if (verbose)
@@ -259,6 +278,111 @@
 }
 
 
+string
+get_abs_subvol_path(string subvolume)
+{
+    if(!boost::starts_with(subvolume, "/"))
+       subvolume.insert(0, "/");
+    return subvolume;
+}
+
+
+void
+do_consistency_checks(MntTable& mnt_table, libmnt_fs* fs, libmnt_fs* 
expected_fs)
+{
+    // Set up cache for UUID / LABEL resolution in mnt_table_find_source
+    libmnt_cache* cache = mnt_new_cache();
+    MntTable mtab_table("/");
+    mtab_table.set_cache(cache);
+    mtab_table.parse_mtab();
+
+    char* subvol_expected;
+    if (mnt_fs_get_option(expected_fs, "subvol", &subvol_expected, NULL) != 0)
+       throw runtime_error("mnt_fs_get_option failed");
+
+    // Consistency checks on (partially) existing entries
+    libmnt_fs* fstab_entry = mnt_table.find_target(target, MNT_ITER_FORWARD);
+    libmnt_fs* mounted_entry = 
mtab_table.find_target(mnt_fs_get_target(expected_fs),
+                                                     MNT_ITER_BACKWARD);
+    // Map UUID / LABEL to a physical device name
+    const char* dev_expected = 
mnt_resolve_spec(mnt_fs_get_source(expected_fs), cache);
+    const char* dev_fstab = mnt_resolve_spec(mnt_fs_get_source(fstab_entry), 
cache);
+    if (dev_expected == NULL)
+       throw runtime_error("parent volume in fstab does not match expected 
device");
+    if (fstab_entry != NULL && dev_fstab == NULL)
+       throw runtime_error("fstab entry does not map to a real device");
+    if (fstab_entry != NULL && strcmp(dev_fstab, dev_expected) != 0)
+       throw runtime_error("existing fstab entry doesn't match target device");
+    if (fstab_entry != NULL)
+    {
+       char* subvol_fstab;
+       if (mnt_fs_get_option(fstab_entry, "subvol", &subvol_fstab, NULL) != 0 
||
+               get_abs_subvol_path(subvol_fstab) != 
get_abs_subvol_path(subvol_expected))
+           throw runtime_error("existing fstab entry's subvolume doesn't 
match");
+    }
+
+    // Something is mounted there already. Is it the correct device?
+    if (mounted_entry != NULL)
+    {
+       if (strcmp(dev_expected, mnt_fs_get_source(mounted_entry)) != 0)
+       {
+           // In case of multi device btrfs the device name can differ, so 
compare the UUIDs.
+           const char* uuid_expected = mnt_cache_find_tag_value(cache, 
dev_expected, "UUID");
+           const char* uuid_mounted = mnt_cache_find_tag_value(cache, 
mnt_fs_get_source(mounted_entry), "UUID");
+
+           if (!uuid_expected || !uuid_mounted)
+               throw runtime_error("failed to get uuid");
+
+           if (strcmp(uuid_expected, uuid_mounted) != 0)
+               throw runtime_error("different device mounted on target");
+       }
+
+       char* subvol_real;
+       if (mnt_fs_get_option(mounted_entry, "subvol", &subvol_real, NULL) != 0 
||
+           get_abs_subvol_path(subvol_expected) != 
get_abs_subvol_path(subvol_real))
+           throw runtime_error("subvolume of mounted target doesn't match");
+    }
+
+    mnt_unref_cache(cache);
+}
+
+
+class TmpMountpoint {
+    unique_ptr<char[]> mountpoint;
+    const libmnt_fs* fs;
+
+public:
+    TmpMountpoint(const string& tmpMountpoint, const libmnt_fs* libmntfs, 
const string& subvol_opts)
+       : mountpoint(strdup(tmpMountpoint.c_str())), fs(libmntfs)
+    {
+       if (!mkdtemp(mountpoint.get()))
+           throw runtime_error_with_errno("mkdtemp failed", errno);
+
+       try
+       {
+           do_tmp_mount(fs, mountpoint.get(), subvol_opts);
+       }
+       catch (...)
+       {
+           rmdir(mountpoint.get());
+           throw;
+       }
+    }
+
+    ~TmpMountpoint()
+    {
+       do_tmp_umount(fs, mountpoint.get());
+       rmdir(mountpoint.get());
+    }
+
+    const string
+    get_path()
+    {
+       return mountpoint.get();
+    }
+};
+
+
 /*
  * The used algorithm is as follow:
  *
@@ -286,7 +410,13 @@
        throw runtime_error("invalid target");
 
     if (access(target.c_str(), F_OK) == 0)
-       throw runtime_error("target exists");
+    {
+       struct stat sb;
+       if (lstat(target.c_str(), &sb) == 0 && sb.st_mode & S_IFDIR)
+           cout << "reusing existing target dir" << endl;
+       else
+           throw runtime_error("target exists");
+    }
 
     if (access(dirname(target).c_str(), F_OK) != 0)
        throw runtime_error("parent of target does not exist");
@@ -326,45 +456,45 @@
     // Determine name for new subvolume: It is the target name without the
     // leading filesystem target.
 
-    string subvolume_name = target.substr(fs_target.size() + (fs_target == "/" 
? 0 : 1));
+    string subvolume_name = target.substr(fs_target.size() +
+                                        (fs_target == "/" || fs_target == 
target ? 0 : 1));
+    if (subvolume_name.empty())
+       throw runtime_error("target is a dedicated mountpoint");
     if (verbose)
        cout << "subvolume-name:" << subvolume_name << endl;
 
-    // Execute all steps.
+    // Create the new subvolume in memory and check system environment
 
-    char* tmp_mountpoint = strdup("/tmp/mksubvolume-XXXXXX");
-    if (!mkdtemp(tmp_mountpoint))
-       throw runtime_error_with_errno("mkdtemp failed", errno);
+    libmnt_fs* expected_fs = create_fstab_line(fs, subvol_option, 
subvolume_name);
+    do_consistency_checks(mnt_table, fs, expected_fs);
 
-    do_tmp_mount(fs, tmp_mountpoint, subvol_option);
+    // Execute all steps.
+
+    TmpMountpoint tmp_mountpoint("/tmp/mksubvolume-XXXXXX", fs, subvol_option);
 
     try
     {
-       do_create_subvolume(tmp_mountpoint, subvolume_name);
+       do_create_subvolume(tmp_mountpoint.get_path(), subvolume_name);
     }
-    catch (...)
+    catch (const runtime_error_with_errno& e)
     {
-       // Rethrow the original exception, not a potential exception of 
do_tmp_umount.
-       try
-       {
-           do_tmp_umount(fs, tmp_mountpoint);
-           rmdir(tmp_mountpoint);
-           free(tmp_mountpoint);
-       }
-       catch (...)
+       if (e.error_number == EEXIST)
        {
-       }
+           const string path = tmp_mountpoint.get_path() + "/" + 
subvolume_name;
+           struct stat sb;
 
-       throw;
+           if (lstat(path.c_str(), &sb) == 0 && is_subvolume(sb))
+               cout << "reusing existing subvolume" << endl;
+           else
+               throw runtime_error_with_errno("cannot reuse path as 
subvolume", e.error_number);
+       }
+       else
+           throw;
     }
 
-    do_tmp_umount(fs, tmp_mountpoint);
-    rmdir(tmp_mountpoint);
-    free(tmp_mountpoint);
-
-    do_add_fstab_and_mount(mnt_table, fs, subvol_option, subvolume_name);
+    do_add_fstab_and_mount(mnt_table, expected_fs);
 
-    do_set_nocow();
+    do_set_cow_flag();
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/configure new/snapper-0.8.3/configure
--- old/snapper-0.8.3/configure 2019-03-27 01:00:00.000000000 +0100
+++ new/snapper-0.8.3/configure 2019-08-30 02:00:00.000000000 +0200
@@ -16939,8 +16939,8 @@
 fi
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dbus-1" >&5
-$as_echo_n "checking for dbus-1... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
+$as_echo_n "checking for DBUS... " >&6; }
 
 if test -n "$DBUS_CFLAGS"; then
     pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS"
@@ -16980,7 +16980,7 @@
 
 
 if test $pkg_failed = yes; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -17007,7 +17007,7 @@
 and DBUS_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/po/ca.po new/snapper-0.8.3/po/ca.po
--- old/snapper-0.8.3/po/ca.po  2019-03-27 01:00:00.000000000 +0100
+++ new/snapper-0.8.3/po/ca.po  2019-08-30 02:00:00.000000000 +0200
@@ -3,7 +3,7 @@
 "Project-Id-Version: @PACKAGE@\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-10-29 14:27+0100\n"
-"PO-Revision-Date: 2019-03-01 20:28+0000\n"
+"PO-Revision-Date: 2019-05-28 09:49+0000\n"
 "Last-Translator: David Medina <medi...@gmail.com>\n"
 "Language-Team: Catalan <https://l10n.opensuse.org/projects/snapper/master/ca/";
 ">\n"
@@ -12,7 +12,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3\n"
+"X-Generator: Weblate 3.6.1\n"
 
 msgid "\t--all-configs, -a\t\tList snapshots from all accessible configs."
 msgstr "\t--all-configs, -a\t\tLlista les instantànies des de totes les 
configuracions accessibles."
@@ -604,7 +604,7 @@
 msgstr "Opció desconeguda '%s' per a l'ordre '%s'."
 
 msgid "Unknown type of snapshot."
-msgstr "Tipus desconegut d'instantània."
+msgstr "Tipus d'instantània desconegut."
 
 msgid "Unknown type of snapshots."
 msgstr "Tipus desconegut d'instantànies."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/po/de.po new/snapper-0.8.3/po/de.po
--- old/snapper-0.8.3/po/de.po  2019-03-27 01:00:00.000000000 +0100
+++ new/snapper-0.8.3/po/de.po  2019-08-30 02:00:00.000000000 +0200
@@ -7,8 +7,8 @@
 "Project-Id-Version: snapper\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-10-29 14:27+0100\n"
-"PO-Revision-Date: 2019-03-26 16:46+0000\n"
-"Last-Translator: Maximilian Trummer <opens...@trummer.xyz>\n"
+"PO-Revision-Date: 2019-04-04 18:42+0000\n"
+"Last-Translator: Sarah Kriesch <ada.lovel...@gmx.de>\n"
 "Language-Team: German <https://l10n.opensuse.org/projects/snapper/master/de/>"
 "\n"
 "Language: de\n"
@@ -43,10 +43,12 @@
 msgstr "\t--diff-cmd <Kommando>\t\tKommando zum Vergleichen von Dateien."
 
 msgid "\t--disable-used-space\t\tDisable showing used space."
-msgstr "\t--disable-used-space\t\tVerbrauchten Platz nicht anzeigen."
+msgstr "\t--disable-used-space\t\tBenutzten Platz nicht anzeigen."
 
 msgid "\t--extensions, -x <options>\tExtra options passed to the diff command."
-msgstr "\t--extensions, -x <Optionen>\tZusätzliche Optionen, die an den 
diff-Befehl übergeben wurden."
+msgstr ""
+"\t--extensions, -x <Optionen>\tExtra Optionen, die an den diff-Befehl "
+"übergeben wurden."
 
 msgid "\t--fstype, -f <fstype>\t\tManually set filesystem type."
 msgstr "\t--fstype, -f <fstype>\t\tDateisystem-Typ manuell setzen."
@@ -263,19 +265,19 @@
 #, c-format
 msgid "Cannot delete snapshot %d since it is the current system."
 msgstr ""
-"Schnappschuss %d kann nicht gelöscht werden, weil es das derzeit laufende "
+"Schnappschuss %d kann nicht gelöscht werden, seitdem es das derzeit laufende "
 "System ist."
 
 #, c-format
 msgid "Cannot delete snapshot %d since it is the currently mounted snapshot."
 msgstr ""
-"Schnappschuss %d kann nicht gelöscht werden, weil es der derzeit gemountete "
-"Schnappschuss ist."
+"Schnappschuss %d kann nicht gelöscht werden, seitdem 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, weil es der nächste zu "
+"Schnappschuss %d kann nicht gelöscht werden, seitdem es der nächste zu "
 "mountende Schnappschuss ist."
 
 msgid "Cleanup"
@@ -381,11 +383,11 @@
 msgstr "Nur-Lesen-Schnappschuss des derzeit laufenden Systems erstellen."
 
 msgid "Creating read-only snapshot of default subvolume."
-msgstr "Nur-Lesen-Schnappschuss des Standard-Subvolumens erstellen."
+msgstr "Nur-Lesen-Schnappschuss des Standard-Subvolumes erstellen."
 
 msgid "Creating read-write snapshot of current subvolume."
 msgstr ""
-"Lesen-Schreiben-Schnappschuss des derzeit laufenden Subvolumens erstellen."
+"Lesen-Schreiben-Schnappschuss des derzeit laufenden Subvolumes erstellen."
 
 #, c-format
 msgid "Creating read-write snapshot of snapshot %d."
@@ -449,7 +451,7 @@
 
 #, c-format
 msgid "Free space error (%s)."
-msgstr "Freier Speicherplatz-Fehler (%s)."
+msgstr "Speicherplatz-Fehler (%s)."
 
 #. TRANSLATORS: symbol for "gibi bytes" (best keep untranslated)
 msgid "GiB"
@@ -561,11 +563,11 @@
 msgstr "Quota-Fehler (%s)."
 
 msgid "See 'man snapper' for further instructions."
-msgstr "Weitere Anweisungen finden Sie in \"man snapper\"."
+msgstr "Weitere Anweisungen finden Sie in 'man snapper'."
 
 #, c-format
 msgid "Setting default subvolume to snapshot %d."
-msgstr "Einstellung des Standard-Subvolumens zu Schnappschuss %d."
+msgstr "Einstellung des Standard-Subvolumes zu Schnappschuss %d."
 
 #, c-format
 msgid "Snapshot '%u' not found."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/snapper-0.8.3/snapper/MntTable.h 
new/snapper-0.8.3/snapper/MntTable.h
--- old/snapper-0.8.3/snapper/MntTable.h        2019-03-27 01:00:00.000000000 
+0100
+++ new/snapper-0.8.3/snapper/MntTable.h        2019-08-30 02:00:00.000000000 
+0200
@@ -52,7 +52,7 @@
 
        ~MntTable()
        {
-           mnt_reset_table(table);
+           mnt_unref_table(table);
        }
 
        void parse_fstab()
@@ -61,6 +61,18 @@
                throw runtime_error("mnt_table_parse_fstab failed");
        }
 
+       void parse_mtab()
+       {
+           if (mnt_table_parse_mtab(table, NULL))
+               throw runtime_error("mnt_table_parse_mtab failed");
+       }
+
+       void set_cache(libmnt_cache* cache)
+       {
+           if (cache == NULL || mnt_table_set_cache(table, cache) != 0)
+               throw runtime_error("Setting the file system cache failed");
+       }
+
        void replace_file()
        {
            if (mnt_table_replace_file(table, target_fstab().c_str()) != 0)
@@ -96,7 +108,6 @@
        const string root_prefix;
 
        struct libmnt_table* table;
-
     };
 
 }

++++++ snapper-Debian_7.0.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.070473452 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.074473452 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-Debian_8.0.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.086473451 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.086473451 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-Debian_9.0.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.098473449 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.098473449 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_14.04.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.114473447 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.114473447 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_14.10.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.126473446 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.126473446 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_15.04.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.138473444 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.142473444 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_15.10.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.154473442 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.154473442 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_16.04.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.166473441 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.170473440 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_16.10.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.186473438 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.186473438 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_17.04.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.198473437 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.198473437 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_17.10.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.210473435 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.214473435 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_18.04.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.230473432 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.230473432 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_18.10.dsc ++++++
--- /var/tmp/diff_new_pack.8RxzOn/_old  2019-09-07 11:28:12.242473431 +0200
+++ /var/tmp/diff_new_pack.8RxzOn/_new  2019-09-07 11:28:12.246473431 +0200
@@ -11,4 +11,4 @@
 #  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
 #
 Files:
-19808f5fa6d846e742fef8cc5ddc6d9c 592418 snapper-0.8.3.tar.bz2
+1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

++++++ snapper-xUbuntu_19.04.dsc ++++++
Format: 1.0
Source: snapper
Version: 0.8.3
Binary: snapper
Maintainer: Arvin Schnell <aschn...@suse.com>
Architecture: any
Build-Depends: debhelper (>= 4.1.16), acl-dev, g++, libboost-dev, 
libboost-thread-dev, libboost-system-dev, libboost-test-dev, libxml2-dev, 
libz-dev, libdbus-1-dev, libpam-dev, xsltproc, docbook-xsl, language-pack-en, 
language-pack-de
#
# The 'Files' line is generated during 'make package':
# Files:
#  423a20ae6e882d44e65a4eff97f2269f 630905 snapper-0.2.8.tar.gz
#
Files:
1d4c6785d99c3d2573fc29877d9ea05e 593794 snapper-0.8.3.tar.bz2

Reply via email to