Hello community,

here is the log from the commit of package posixovl for openSUSE:Factory 
checked in at 2018-09-24 13:12:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/posixovl (Old)
 and      /work/SRC/openSUSE:Factory/.posixovl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "posixovl"

Mon Sep 24 13:12:14 2018 rev:12 rq:636862 version:1.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/posixovl/posixovl.changes        2014-09-26 
11:21:11.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.posixovl.new/posixovl.changes   2018-09-24 
13:12:15.241812833 +0200
@@ -1,0 +2,6 @@
+Thu Sep 20 09:13:54 UTC 2018 - Jan Engelhardt <[email protected]>
+
+- Update to new upstream release 1.3
+  * Support xattr.h moved from libattr-devel to glibc-devel.
+
+-------------------------------------------------------------------

Old:
----
  posixovl-1.2.tar.xz
  posixovl-1.2.tar.xz.asc

New:
----
  posixovl-1.3.tar.asc
  posixovl-1.3.tar.xz

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

Other differences:
------------------
++++++ posixovl.spec ++++++
--- /var/tmp/diff_new_pack.4nDqFB/_old  2018-09-24 13:12:15.825811805 +0200
+++ /var/tmp/diff_new_pack.4nDqFB/_new  2018-09-24 13:12:15.829811798 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package posixovl
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,54 +12,48 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           posixovl
-Version:        1.2
+Version:        1.3
 Release:        0
 Summary:        POSIX overlay filesystem
-License:        GPL-2.0+
+License:        GPL-2.0-or-later
 Group:          System/Filesystems
 Url:            http://posixovl.sf.net/
 
 Source:         http://downloads.sf.net/posixovl/%name-%version.tar.xz
-Source2:        http://downloads.sf.net/posixovl/%name-%version.tar.xz.asc
-# Next version should be signed with a new key. Use "gpg-offline 
--package=posixovl --delete 844C4360" then.
+Source2:        http://downloads.sf.net/posixovl/%name-%version.tar.asc
 Source3:        %name.keyring
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  autoconf >= 2.61
 BuildRequires:  automake >= 1.9
-BuildRequires:  libattr-devel
 BuildRequires:  pkgconfig
 BuildRequires:  xz
 BuildRequires:  pkgconfig(fuse) >= 2.6.5
 
 %description
-A FUSE filesystem that provides POSIX functionality - UNIX-style
-permissions, ownership, special files - for filesystems that do not
-have such, e.g. vfat. It is a modern equivalent of the UMSDOS fs.
-
-Author:
--------
-       Jan Engelhardt
+A FUSE filesystem that provides POSIX functionality - UNIX-style permissions,
+ownership, special files - for filesystems that do not have such, e.g. vfat. It
+can be seen as a contemporary equivalent of the UMSDOS fs.
 
 %prep
-%setup -qn %name
+%setup -q
 
 %build
 if [ ! -e configure ]; then
        autoreconf -fiv
 fi
 %configure
-make %{?_smp_mflags};
+make %{?_smp_mflags}
 
 %install
-b="%buildroot";
-make install DESTDIR="$b";
-mkdir -p "$b/%_mandir/man8";
-ln -s ../man1/posixovl.1 "$b/%_mandir/man8/mount.posixovl.8";
+b="%buildroot"
+%make_install
+mkdir -p "$b/%_mandir/man8"
+ln -s ../man1/posixovl.1 "$b/%_mandir/man8/mount.posixovl.8"
 
 %files
 %defattr(-,root,root)

++++++ posixovl-1.2.tar.xz -> posixovl-1.3.tar.xz ++++++
++++ 11243 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/posixovl/.gitignore new/posixovl-1.3/.gitignore
--- old/posixovl/.gitignore     2011-04-17 03:28:27.000000000 +0200
+++ new/posixovl-1.3/.gitignore 2018-09-20 10:41:18.000000000 +0200
@@ -3,15 +3,12 @@
 Makefile
 Makefile.in
 
-/autom4te.cache
+/autom4te.cache/
 /aclocal.m4
-/compile
+/build-aux/
 /config.*
 /configure
-/depcomp
-/install-sh
 /lntest
-/missing
 /mount.posixovl
 /socket
 /stamp-h1
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/posixovl/Makefile.am new/posixovl-1.3/Makefile.am
--- old/posixovl/Makefile.am    2011-04-17 03:28:27.000000000 +0200
+++ new/posixovl-1.3/Makefile.am        2018-09-20 10:41:18.000000000 +0200
@@ -13,7 +13,7 @@
 .PHONY: tarball
 tarball:
        rm -Rf /tmp/${PACKAGE_TARNAME}-${PACKAGE_VERSION};
-       pushd ${top_srcdir} && git-archive 
--prefix=${PACKAGE_TARNAME}-${PACKAGE_VERSION}/ HEAD | tar -C /tmp -x && popd;
+       pushd ${top_srcdir} && git archive 
--prefix=${PACKAGE_TARNAME}-${PACKAGE_VERSION}/ HEAD | tar -C /tmp -x && popd
        pushd /tmp/${PACKAGE_TARNAME}-${PACKAGE_VERSION} && ./autogen.sh && 
popd;
-       tar -C /tmp -cjf ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.bz2 
--owner=root --group=root ${PACKAGE_TARNAME}-${PACKAGE_VERSION}/;
+       tar -C /tmp --use=xz -cf ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.xz 
--owner=root --group=root ${PACKAGE_TARNAME}-${PACKAGE_VERSION}/
        rm -Rf /tmp/${PACKAGE_TARNAME}-${PACKAGE_VERSION};
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/posixovl/build-aux/compile new/posixovl-1.3/build-aux/compile
--- old/posixovl/build-aux/compile      1970-01-01 01:00:00.000000000 +0100
+++ new/posixovl-1.3/build-aux/compile  2018-09-20 10:41:22.346333068 +0200
@@ -0,0 +1,348 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Written by Tom Tromey <[email protected]>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <[email protected]> or send patches to
+# <[email protected]>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <[email protected]>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
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/posixovl/build-aux/missing new/posixovl-1.3/build-aux/missing
--- old/posixovl/build-aux/missing      1970-01-01 01:00:00.000000000 +0100
+++ new/posixovl-1.3/build-aux/missing  2018-09-20 10:41:22.350333025 +0200
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <[email protected]>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+case $1 in
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <[email protected]>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
+
+perl_URL=https://www.perl.org/
+flex_URL=https://github.com/westes/flex
+gnu_software_URL=https://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
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/posixovl/config.h.in new/posixovl-1.3/config.h.in
--- old/posixovl/config.h.in    1970-01-01 01:00:00.000000000 +0100
+++ new/posixovl-1.3/config.h.in        2018-09-20 10:41:21.942337439 +0200
@@ -0,0 +1,67 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <attr/xattr.h> header file. */
+#undef HAVE_ATTR_XATTR_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have a FUSE version >= 2.6.5 but < 2.7.0 */
+#undef HAVE_JUST_FUSE_2_6_5
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/xattr.h> header file. */
+#undef HAVE_SYS_XATTR_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if utimensat() function is available */
+#undef HAVE_UTIMENSAT
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
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/posixovl/configure.ac new/posixovl-1.3/configure.ac
--- old/posixovl/configure.ac   2011-04-17 03:31:09.000000000 +0200
+++ new/posixovl-1.3/configure.ac       2018-09-20 10:41:18.000000000 +0200
@@ -1,5 +1,6 @@
-AC_INIT([posixovl], [1.2])
+AC_INIT([posixovl], [1.3])
 AC_PREREQ([2.61])
+AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([config.h])
 AC_PROG_INSTALL
 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
@@ -8,13 +9,13 @@
 
 regular_CPPFLAGS="-D_FORTIFY_SOURCE=2 -D_LARGEFILE_SOURCE=1 -D_LARGE_FILES \
        -D_FILE_OFFSET_BITS=64 -D_REENTRANT";
-regular_CFLAGS="-Wall -Waggregate-return \
+regular_CFLAGS="-std=c99 -Wall -Waggregate-return \
        -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls \
        -Wshadow -Wstrict-prototypes -Winline -pipe"
 AC_SUBST([regular_CPPFLAGS])
 AC_SUBST([regular_CFLAGS])
 
-AC_CHECK_HEADER(attr/xattr.h, [], AC_MSG_ERROR([libattr-devel not installed]))
+AC_CHECK_HEADERS([attr/xattr.h sys/xattr.h])
 
 # FUSE >= 2.7.0 got subtype name support.
 # 2.6.5 does not, but has a similar thing.
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/posixovl/format.txt new/posixovl-1.3/format.txt
--- old/posixovl/format.txt     1970-01-01 01:00:00.000000000 +0100
+++ new/posixovl-1.3/format.txt 2018-09-20 10:41:18.000000000 +0200
@@ -0,0 +1,127 @@
+Overview of posixovl file translation.
+
+
+logical file  := file as seen in the posixovl mount
+physical file := file as seen in the lower mount
+
+
+Summary
+
+State 0:
+       * dentry "subdir/hello.txt" represented using
+         "subdir/hello.txt"
+       * inode contents stored in "subdir/hello.txt"
+       * inode metadata synthesized
+State 1:
+       * dentry "subdir/hello.txt" represented using
+         "subdir/hello.txt"
+       * inode contents stored in "subdir/hello.txt"
+       * inode metadata stored in "subdir/.pxovl.hello.txt"
+State 2:
+       * dentry "subdir/hello.txt" represented using
+         "subdir/hello.txt" of size 0 and ".pxovl.hello.txt"
+         containing "type S_IFLNK|S_ISVTX" (acts as S_IFHARDLINK)
+         and the mention of "/.pxovd.1234567890".
+       * inode metadata stored in "/.pxovn.1234567890"
+       * inode contents stored in "/.pxovd.1234567890"
+
+
+State 0 - plain map
+
+* A single logical file or directory is represented in the lower
+  filesystem as a single file as well. For one logical file there is
+  exactly one physical file. (For example, "/posixovl/hello.txt" <-->
+  "/lower/hello.txt").
+
+* The file name in the lower filesystem may be encoded in an
+  implementation-specific fashion. There is a 1:1 (bijective) mapping
+  between logical filename and the filename of the physical file
+  holding the file contents. (For example, "/posixovl/hello*.txt"
+  <--> "/lower/hello%(2A).txt".)
+
+  (N.B.: The posixovl mount program implementation does not handle
+  all of the awkward corner cases. In particular, it does not try to
+  hide modifications outside of posixovl that would violate the
+  bijective property.)
+
+* The POSIX attributes shown in the logical filesystem are
+  unspecified and implementation-specific. (The posixovl mount
+  program will try to produce something sensible.)
+
+* POSIX attributes cannot be changed in state 0. (If this is
+  attempted, the mount program will create a HCB and transition the
+  file to state 1.)
+
+* The hardlink count cannot be changed in state 0. (The mount program
+  will advance the file to state 1.)
+
+
+State 1 - metadata present
+
+* HCB is the "hidden control block", a companion file in the lower
+  filesystem storing file type, permissions, owner/group, rdev,
+  symlink target, etc.
+
+* For each logical object, there will be two physical files
+  (the file with the contents and the HCB metadata file).
+
+* Like in state 0, there is a 1:1 mapping between a logical filename
+  and the filename of the physical file holding the contents.
+
+* There is a 1:1 mapping between a logical filename and the filename
+  of the HCB file.
+
+* For non-directories, the HCB is stored in parallel to the physical
+  file, for example "/lower/hello.txt" <-->
+  "/lower/.pxovl.hello.txt". Encoding rules apply as well, e.g.
+  "/lower/hello.txt" <--> "/lower/.pxovl.hello%(2A).txt".
+
+* For directories, the HCB is stored within the directory that it
+  describes, for example "/lower/pictures" <-->
+  "/lower/pictures/.pxovl.".
+
+* Deleting the logical file or directory will delete both content
+  file and the HCB file (as expected).
+
+* The hardlink count cannot be changed in state 1.
+  (If this is attempted, the mount program will do a conversion and
+  advance the file to state 2.)
+
+* There is no way back to state 0. (Other than perhaps manual
+  modifications in the lower filesystem outside of posixovl.)
+
+
+State 2 - data in a separate node
+
+* Directories have no state 2 defined, because it is not permitted to
+  hardlink them anyway.
+
+* The contents of a logical file are stored in a separate physical
+  file, "/lower/.pxovd.1234567890" (a random unique number is
+  chosen), and the inode metadata such as owner/group and permissions
+  is stored in "/lower/.pxovn.1234567890" (same number that was
+  chosen for the pxovd file).
+
+* A dentry such as "/posixovl/foo.txt" is represented using a
+  zero-sized file "/lower/foo.txt" and a metadata file
+  "/lower/.pxovl.foo.txt", the latter of which specifies file type
+  S_IFLNK|S_ISVTX (121000) to indicate a hardlink, and with the
+  target set to ".pxovd.1234567890".
+
+  (N.B.: They are implemented quite like symlinks, which differ
+  only in the file type.)
+
+* The pxovd and pxovn files always live in the root directory of the
+  lower filesystem. (This is to ensure that the target of all
+  S_IFHARDLINK HCB files remains valid for all time, which would not
+  be possible if the pxovd file had to be moved.)
+
+* Deleting the dentry will delete both the 0-sized placeholder file
+  and its HCB ("/lower/foo.txt" and "/lower/.pxovl.foo.txt" in our
+  example).
+
+* Deleting the last reference (as determined by looking at the link
+  count field in the pxovn file) will eliminate the pxovd and pxovn
+  files.
+
+* There is no way back to state 1.
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/posixovl/lntest.c new/posixovl-1.3/lntest.c
--- old/posixovl/lntest.c       2011-04-17 03:28:27.000000000 +0200
+++ new/posixovl-1.3/lntest.c   2018-09-20 10:41:18.000000000 +0200
@@ -1,4 +1,4 @@
-
+/* Program that exercises hardlinks and mmap, to be used with posixovl. */
 #undef NDEBUG
 
 #include <sys/mman.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/posixovl/posixovl.1 new/posixovl-1.3/posixovl.1
--- old/posixovl/posixovl.1     2011-04-17 03:28:27.000000000 +0200
+++ new/posixovl-1.3/posixovl.1 2018-09-20 10:41:18.000000000 +0200
@@ -4,7 +4,7 @@
 posixovl \(em The POSIX Overlay Filesystem
 .SH Syntax
 .PP
-\fBmount.posixovl\fP [\fB\-F\fP] [\fB\-S\fP \fIsource_dir\fP] \fItarget_dir\fP
+\fBmount.posixovl\fP [\fB\-FH\fP] [\fB\-S\fP \fIsource_dir\fP] \fItarget_dir\fP
 [\fB\-\-\fP \fIfuse_opts\fP]
 .SH Description
 .PP
@@ -25,6 +25,12 @@
 would be used to check for POSIX filesystems mounted inside a non-POSIX
 tree. (For example, where /vfat is vfat, and /vfat/xfs is a POSIX-behaving
 filesystem.)
+.TP
+\fB\-H\fP
+When this option is enabled and a hardlink in the posixovl namespace is
+created, the contents of the file will be replicated in the lower filesystem
+rather than using zero-sized placeholder files. Note that the replicas will not
+be updated later on when editing the inode through posixovl.
 .SH Supported operations
 .PP
 posixovl will emulate the following calls if the lower filesystem is incapable
@@ -63,13 +69,13 @@
 all lower-level files will be operated on/created with the user who inititated
 the mount
 .PP
-If no HCB exists for a file or directory, the default permissions are 644 and
-755, respectively. The owner and group of the inode will be the owner/group of
-the real file.
+If no HCB exists for a file or directory, the default permissions are rw-r--r--
+or rwxr-xr-x, respectively. The owner and group of the inode will be the
+owner/group of the real file.
 .PP
 Each non-regular, non-directory virtual file will have a zero-size real file.
 (Simplifies handling, and makes it apprarent the object exists when using other
-OS.)
+operating systems.)
 .PP
 `df` will show:
 .nf
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/posixovl/posixovl.c new/posixovl-1.3/posixovl.c
--- old/posixovl/posixovl.c     2011-04-17 03:28:27.000000000 +0200
+++ new/posixovl-1.3/posixovl.c 2018-09-20 10:41:18.000000000 +0200
@@ -1,6 +1,6 @@
 /*
  *     posixovl - POSIX overlay filesystem
- *     Copyright © Jan Engelhardt <[email protected]>, 2007 - 2008
+ *     Copyright Jan Engelhardt, 2007-2008,2013
  *
  *     Development of posixovl sponsored by Slax (http://www.slax.org/)
  *
@@ -12,6 +12,7 @@
 #define _ATFILE_SOURCE 1
 #define _GNU_SOURCE 1
 #define FUSE_USE_VERSION 26
+#include "config.h"
 #include <sys/fsuid.h>
 #include <sys/stat.h>
 #include <sys/statvfs.h>
@@ -31,8 +32,12 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
-#include <attr/xattr.h>
+#ifdef HAVE_XATTR_XATTR_H
+#      include <attr/xattr.h>
+#endif
+#ifdef HAVE_SYS_XATTR_H
+#      include <sys/xattr.h>
+#endif
 #include "config.h"
 #ifndef S_IRUGO
 #      define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
@@ -77,19 +82,18 @@
 #      define should_not_happen()   do {} while (false)
 #endif
 #define hcb_got_busted(path) \
-       fprintf(stderr, "HCB %s got busted\n", (path))
-
-/* Shortcut */
-#define XRET(v) \
-       return ({ \
-               int __ret = (v); \
-               (__ret >= 0) ? __ret : -errno; \
-       })
+       fprintf(stderr, "HCB %s is corrupt\n", (path))
 
 /* Definitions */
-#define HCB_PREFIX1    ".pxovl"  /* extra vfat idiocy */
+
 #define HCB_PREFIX     ".pxovl."
 #define HCB_PREFIX_LEN (sizeof(HCB_PREFIX) - 1)
+/*
+ * Trailing dots may be eaten, so we need to check some filenames for
+ * another variant.
+ */
+#define HCB_PREFIX1    ".pxovl"
+
 #define HL_DNODE_PREFIX     ".pxovd."
 #define HL_DNODE_PREFIX_LEN (sizeof(HL_DNODE_PREFIX) - 1)
 #define HL_INODE_PREFIX     ".pxovn."
@@ -100,6 +104,13 @@
        ENOENT_HCB = 4096,
 };
 
+/**
+ * ll_hcb - lowlevel HCB
+ * @buf:       buffer for contents of HCB file
+ * @new_target:        buffer to hold the link target
+ * @target:    pointer to @new_target (always?)
+ * rest:       inode properties
+ */
 struct ll_hcb {
        char buf[PATH_MAX], new_target[PATH_MAX];
        const char *target;
@@ -111,6 +122,9 @@
        size_t size;
 };
 
+/**
+ * The "hidden control block".
+ */
 struct hcb {
        char path[PATH_MAX];
        struct ll_hcb ll;
@@ -120,11 +134,24 @@
 
 /* Global */
 static mode_t default_mode = S_IRUGO | S_IWUSR;
-static unsigned int assume_vfat, single_threaded;
+static unsigned int assume_vfat, single_threaded, hardlink_with_copy;
 static const char *root_dir;
 static int root_fd;
 static pthread_mutex_t posixovl_protect = PTHREAD_MUTEX_INITIALIZER;
 
+static inline int retcode_int(int code)
+{
+       return (code >= 0) ? code : -errno;
+}
+
+static inline ssize_t retcode_ssize(ssize_t code)
+{
+       return (code >= 0) ? code : -errno;
+}
+
+/**
+ * Set a read lock on the entire of a file.
+ */
 static int lock_read(int fd)
 {
        static const struct flock fl = {
@@ -138,6 +165,9 @@
        return fcntl(fd, F_SETLKW, &fl);
 }
 
+/**
+ * Set a write lock on the entire of a file.
+ */
 static int lock_write(int fd)
 {
        static const struct flock fl = {
@@ -151,7 +181,7 @@
        return fcntl(fd, F_SETLK, &fl);
 }
 
-/*
+/**
  * at - turn a virtual path into a relative (to root_fd) one
  */
 static __attribute__((pure)) const char *at(const char *in)
@@ -170,7 +200,7 @@
        return dest;
 }
 
-/*
+/**
  * __hl_dtoi - build the HL.I-node path from the HL.D-node path
  */
 static void __hl_dtoi(char *dest, size_t destsize, const char *src)
@@ -187,7 +217,7 @@
 
 #define hl_dtoi(dest, src) __hl_dtoi((dest), sizeof(dest), (src))
 
-/*
+/**
  * __real_to_hcb - build the hidden control block (HCB) path from a real path
  */
 static int __real_to_hcb(char *dest, size_t destsize, const char *src)
@@ -221,11 +251,11 @@
 
        if (strncmp(filename_part, HL_DNODE_PREFIX, HL_DNODE_PREFIX_LEN) == 0)
                ret = snprintf(dest, destsize, "%.*s" HL_INODE_PREFIX "%s",
-                     filename_part - directory_part, directory_part,
+                     (int)(filename_part - directory_part), directory_part,
                      filename_part + HL_DNODE_PREFIX_LEN);
        else
                ret = snprintf(dest, destsize, "%.*s" HCB_PREFIX "%s",
-                     filename_part - directory_part, directory_part,
+                     (int)(filename_part - directory_part), directory_part,
                      filename_part);
        if (ret > destsize)
                return -ENAMETOOLONG;
@@ -234,7 +264,7 @@
 
 #define real_to_hcb(dest, src) __real_to_hcb((dest), sizeof(dest), (src))
 
-/*
+/**
  * ll_hcb_read - lowlevel read of HCB
  * @path:      path to HCB (used for debug and unlink)
  * @info:      destination structure
@@ -294,7 +324,7 @@
        return -EINVAL;
 }
 
-/*
+/**
  * ll_hcb_write - lowlevel write of HCB
  * @path:      path to HCB (used for debug and unlink)
  * @info:      source structure
@@ -333,7 +363,7 @@
        return 0;
 }
 
-/*
+/**
  * hcb_new - create new HCB
  * @path:      file path (not HCB path)
  * @cb:                destination structure
@@ -367,15 +397,15 @@
        return 0;
 }
 
-/*
+/**
  * hcb_get - read HCB
- * @path:      L0 file path
+ * @path:      fuse-namespace relative file path (L0)
  * @cb:                destination struct
  *
- * Read @path's HCB into @cb. This does not follow hardlinks.
- * To distinguish whether @path or the HCB was not found, hcb_get() will
- * return -ENOENT when @path was not found, and -ENOENT_HCB when the HCB
- * was not found.
+ * Read @path's HCB into @cb. This function does not follow posixovl hardlinks.
+ * When the file given by @path was not found, -ENOENT will be returned, but if
+ * the HCB was not found, this funciton returns -ENOENT_HCB instead to indicate
+ * so.
  */
 static int hcb_get(const char *path, struct hcb *cb)
 {
@@ -428,7 +458,7 @@
        return 0;
 }
 
-/*
+/**
  * hcb_put - release HCB
  * @cb:        data
  *
@@ -443,7 +473,7 @@
        close(cb->fd);
 }
 
-/*
+/**
  * hcb_deref - dereference an S_IFHARDLNK HCB
  * @cb:        data
  *
@@ -499,7 +529,7 @@
        return 0;
 }
 
-/*
+/**
  * hcb_get_deref - shortcut for hcb_get()+hcb_deref()
  * @path:      virtual path
  * @cb:                destination structure
@@ -518,7 +548,7 @@
        return 0;
 }
 
-/*
+/**
  * hcb_update - write HCB
  * @cb:        data
  *
@@ -548,7 +578,7 @@
        return ret;
 }
 
-/*
+/**
  * hcb_lookup - shortcut for hcb_get()+hcb_put()
  * @path:      virtual path
  * @cb:                destination structure
@@ -566,7 +596,7 @@
        return 0;
 }
 
-/*
+/**
  * hcb_lookup_deref - shortcut for hcb_get_deref()+hcb_put()
  * @path:      virtual path
  * @cb:                destination structure
@@ -584,7 +614,7 @@
        return 0;
 }
 
-/*
+/**
  * hcb_lookup_readdir -
  * @dir:       working directory
  * @name:      file
@@ -639,7 +669,7 @@
        return is_resv_name(file);
 }
 
-/*
+/**
  * supports_owners - check whether @path can do that
  * @path:      path to existing file
  * @uid:       uid to change to (used for figuring out)
@@ -711,7 +741,7 @@
        return __supports_owners(path, uid, gid, restore);
 }
 
-/*
+/**
  * supports_permissions - check whether @path can do that
  * @path:      existing path to file
  *
@@ -747,6 +777,14 @@
        return __supports_permissions(path);
 }
 
+/**
+ * @read_ptr:  original to-disk filename
+ *
+ * Encode all the special characters that are invalid to use on VFAT by
+ * substituting each by "%(xx)", where xx is the textual hexadecimal
+ * representation. Returns a pointer to an allocated memory block containing
+ * the encoded result.
+ */
 static char *xfrm_to_disk(const char *read_ptr)
 {
        unsigned int needed = 0;
@@ -801,6 +839,12 @@
        ['C'] = 12, ['D'] = 13, ['E'] = 14, ['F'] = 15,
 };
 
+/**
+ * @read_ptr:  original on-disk filename
+ *
+ * Decode a name that has the %(xx) special sequences in it and return a
+ * pointer to an allocated memory block with the result.
+ */
 static char *xfrm_from_disk(const char *read_ptr)
 {
        const char *seek_ptr = read_ptr, *next;
@@ -842,8 +886,8 @@
        ret = hcb_get_deref(path, &info);
        if (ret == -ENOENT_HCB) {
                if (supports_permissions(path))
-                       XRET(fchmodat(root_fd, at(path), mode,
-                            AT_SYMLINK_NOFOLLOW));
+                       return retcode_int(fchmodat(root_fd, at(path), mode,
+                              AT_SYMLINK_NOFOLLOW));
                if ((ret = hcb_new(path, &info, 1)) < 0)
                        return ret;
                /* nlink already set (hcb_new() stat'ed @path) */
@@ -873,8 +917,8 @@
        ret = hcb_get_deref(path, &info);
        if (ret == -ENOENT_HCB) {
                if (supports_owners(path, uid, gid, false))
-                       XRET(fchownat(root_fd, at(path), uid, gid,
-                            AT_SYMLINK_NOFOLLOW));
+                       return retcode_int(fchownat(root_fd, at(path), uid,
+                              gid, AT_SYMLINK_NOFOLLOW));
                if ((ret = hcb_new(path, &info, 1)) < 0)
                        return ret;
                /* nlink already set (hcb_new() stat'ed @path) */
@@ -899,7 +943,7 @@
 
 static int posixovl_close(const char *path, struct fuse_file_info *filp)
 {
-       XRET(close(filp->fh));
+       return retcode_int(close(filp->fh));
 }
 
 static __attribute__((pure)) bool could_be_too_long(const char *path)
@@ -908,7 +952,7 @@
        return strlen(path) + 1 + HCB_PREFIX_LEN >= PATH_MAX;
 }
 
-/*
+/**
  * parent_owner_match -
  * @path:      path, of which the parent is to be checked
  * @uid:       uid to test
@@ -985,10 +1029,10 @@
 static int posixovl_ftruncate(const char *path, off_t length,
     struct fuse_file_info *filp)
 {
-       XRET(ftruncate(filp->fh, length));
+       return retcode_int(ftruncate(filp->fh, length));
 }
 
-/*
+/**
  * hl_demote - collapse S_IFHARDLNK into normal file
  * @l0_file:
  * @l0_hcb:
@@ -1026,7 +1070,7 @@
        return ret;
 }
 
-/*
+/**
  * hl_try_demote - try to collapse a one-link hardlink net into one file
  * @path:      real path
  *
@@ -1082,7 +1126,7 @@
 static int posixovl_getxattr(const char *path, const char *name,
     char *value, size_t size)
 {
-       XRET(lgetxattr(at(path), name, value, size));
+       return retcode_int(lgetxattr(at(path), name, value, size));
 }
 
 static int posixovl1_fgetattr(const char *path, struct stat *sb,
@@ -1106,8 +1150,44 @@
        return NULL;
 }
 
-/*
- * hl_promote - transform file into hardlink master
+static int posixovl_fcopy(int dfd, const char *source)
+{
+       int sfd = open(source, O_RDONLY);
+       ssize_t ret;
+       char buffer[65536];
+
+       if (sfd < 0)
+               return -errno;
+       while ((ret = read(sfd, buffer, sizeof(buffer))) > 0)
+               if (write(dfd, buffer, ret) < 0) {
+                       ret = -errno;
+                       break;
+               }
+       return ret;
+}
+
+/**
+ * The size of the inode type may be larger than that of the type that rand()
+ * returns, so call rand() as often as needed to fill all bits.
+ * Minus 1 is used because it may be a signed integer whose sign is never set.
+ * So in the usual case of ino_t being 64 bit and int being 32 bit, we will
+ * call rand() thrice.
+ */
+static ino_t make_inum(void)
+{
+       static const unsigned int advance =
+               sizeof(__typeof__(rand())) * CHAR_BIT - 1;
+       ino_t ino = 0;
+
+       for (unsigned int b = 0; b < sizeof(ino) * CHAR_BIT; b += advance) {
+               ino <<= advance;
+               ino ^= rand();
+       }
+       return ino;
+}
+
+/**
+ * hl_promote - transform state 0/1 file into hardlink master (state 2)
  * @l0_path:           path to real file
  * @orig_info:         L0 HCB
  * @l0_hcb_exists:     what it says
@@ -1128,13 +1208,13 @@
         */
        work_sb.st_ino = orig_info->sb.st_ino;
        do {
-               snprintf(l1_path, sizeof(l1_path), "/" HL_DNODE_PREFIX "%lu",
+               snprintf(l1_path, sizeof(l1_path), "/" HL_DNODE_PREFIX "%lx",
                         static_cast(unsigned long, work_sb.st_ino));
-               snprintf(l1_hcb, sizeof(l1_hcb), "/" HL_INODE_PREFIX "%lu",
+               snprintf(l1_hcb, sizeof(l1_hcb), "/" HL_INODE_PREFIX "%lx",
                         static_cast(unsigned long, work_sb.st_ino));
                if (fstatat(root_fd, at(l1_path), &work_sb,
                    AT_SYMLINK_NOFOLLOW) == 0) {
-                       work_sb.st_ino = rand();
+                       work_sb.st_ino = make_inum();
                        continue;
                }
                if (errno == ENOENT)
@@ -1178,7 +1258,8 @@
                ret = -errno;
                goto out3;
        }
-
+       if (hardlink_with_copy)
+               posixovl_fcopy(fd, new_info.ll.new_target);
        close(fd);
        return 0;
 
@@ -1192,7 +1273,7 @@
        return ret;
 }
 
-/*
+/**
  * hl_up_nlink - increase nlink count of hardlink master
  * @l1_path:   name of the L1 file
  *             (Could have used the L0 file, but using L1 saves a derefernce,
@@ -1212,7 +1293,7 @@
        return hcb_update(&cb);
 }
 
-/*
+/**
  * hl_drop - drop nlink count of hardlink master
  * @l1_path:   name of the L1 file
  *
@@ -1246,12 +1327,10 @@
        return hcb_update(&cb);
 }
 
-/*
- * hl_instantiate -
+/**
+ * hl_instantiate - make (another) hardlink
  * @oldpath:
  * @newpath:
- *
- * This is perhaps the most expensive operation among all.
  */
 static int hl_instantiate(const char *oldpath, const char *newpath)
 {
@@ -1263,12 +1342,13 @@
        if (ret == -ENOENT_HCB || (ret == 0 && !S_ISHARDLNK(cb_old.ll.mode))) {
                /*
                 * If no HCB attached or if not a hardlink slave...
+                * Transform file from state 0/1 to 2.
                 */
                if ((ret = hl_promote(oldpath, &cb_old,
                    ret != -ENOENT_HCB)) < 0)
                        goto unlock_and_out;
                /*
-                * Relookup to get the L1 file path
+                * Relookup to get the dnode file path
                 */
                if ((ret = hcb_lookup(oldpath, &cb_old)) < 0)
                        goto unlock_and_out;
@@ -1297,7 +1377,8 @@
                ret = -errno;
                goto out2;
        }
-
+       if (hardlink_with_copy)
+               posixovl_fcopy(fd, cb_new.ll.new_target);
        close(fd);
        return 0;
 
@@ -1350,7 +1431,7 @@
 
 static int posixovl_listxattr(const char *path, char *list, size_t size)
 {
-       XRET(llistxattr(at(path), list, size));
+       return retcode_int(llistxattr(at(path), list, size));
 }
 
 static int posixovl_mkdir(const char *path, mode_t mode)
@@ -1489,7 +1570,7 @@
 static int posixovl_read(const char *path, char *buffer, size_t size,
     off_t offset, struct fuse_file_info *filp)
 {
-       XRET(pread(filp->fh, buffer, size, offset));
+       return retcode_ssize(pread(filp->fh, buffer, size, offset));
 }
 
 static int posixovl_readdir(const char *path, void *buffer,
@@ -1575,7 +1656,7 @@
 
 static int posixovl_removexattr(const char *path, const char *name)
 {
-       XRET(lremovexattr(path, name));
+       return retcode_int(lremovexattr(path, name));
 }
 
 static int posixovl_rename(const char *oldpath, const char *newpath)
@@ -1593,7 +1674,8 @@
 
        ret = hcb_lookup(oldpath, &old_info);
        if (ret == -ENOENT_HCB || S_ISDIR(old_info.sb.st_mode))
-               XRET(renameat(root_fd, at(oldpath), root_fd, at(newpath)));
+               return retcode_int(renameat(root_fd, at(oldpath),
+                      root_fd, at(newpath)));
        else if (ret < 0)
                return ret;
 
@@ -1645,7 +1727,7 @@
        ret = hcb_lookup(path, &info);
        if (ret == 0 && unlinkat(root_fd, at(info.path), 0) < 0)
                return -errno;
-       XRET(unlinkat(root_fd, at(path), AT_REMOVEDIR));
+       return retcode_int(unlinkat(root_fd, at(path), AT_REMOVEDIR));
 }
 
 static int posixovl1_rmdir(const char *path)
@@ -1659,7 +1741,7 @@
 static int posixovl_setxattr(const char *path, const char *name,
     const char *value, size_t size, int flags)
 {
-       XRET(lsetxattr(at(path), name, value, size, flags));
+       return retcode_int(lsetxattr(at(path), name, value, size, flags));
 }
 
 static int posixovl_statfs(const char *path, struct statvfs *sb)
@@ -1781,7 +1863,7 @@
 
        /*
         * Need to unlink the real file first so that the potential case
-        * "HCB non-existant but real file existant" does not happen in
+        * "HCB non-existent but real file existent" does not happen in
         * readdir().
         */
        h_ret = hcb_lookup(path, &info);
@@ -1850,8 +1932,7 @@
        else
                ret = utimensat(root_fd, at(path), ts, AT_SYMLINK_NOFOLLOW);
 #endif
-
-       XRET(ret);
+       return retcode_int(ret);
 }
 
 static int posixovl1_utimens(const char *path, const struct timespec *ts)
@@ -1865,7 +1946,7 @@
 static int posixovl_write(const char *path, const char *buffer, size_t size,
     off_t offset, struct fuse_file_info *filp)
 {
-       XRET(pwrite(filp->fh, buffer, size, offset));
+       return retcode_ssize(pwrite(filp->fh, buffer, size, offset));
 }
 
 static bool user_allow_other(void)
@@ -1921,7 +2002,7 @@
 static void usage(const char *p)
 {
        fprintf(stderr,
-               "Usage: %s [-F] [-S source] mountpoint [-- fuseoptions]\n", p);
+               "Usage: %s [-FH] [-S source] mountpoint [-- fuseoptions]\n", p);
        exit(EXIT_FAILURE);
 }
 
@@ -1931,7 +2012,7 @@
        int new_argc = 0, original_wd, c;
        char xargs[256];
 
-       while ((c = getopt(argc, argv, "1FS:")) > 0) {
+       while ((c = getopt(argc, argv, "1FHS:")) > 0) {
                switch (c) {
                        case '1':
                                single_threaded = true;
@@ -1939,6 +2020,9 @@
                        case 'F':
                                assume_vfat = true;
                                break;
+                       case 'H':
+                               hardlink_with_copy = true;
+                               break;
                        case 'S':
                                root_dir = optarg;
                                break;
@@ -1986,6 +2070,6 @@
        new_argv[new_argc] = NULL;
        c = fuse_main(new_argc, (char **)new_argv, &posixovl_ops, NULL);
        if (fchdir(original_wd) < 0)
-               /* ignore */;
+               /* ignore */{}
        return c;
 }
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/posixovl/socket.c new/posixovl-1.3/socket.c
--- old/posixovl/socket.c       2011-04-17 03:28:27.000000000 +0200
+++ new/posixovl-1.3/socket.c   2018-09-20 10:41:18.000000000 +0200
@@ -1,3 +1,5 @@
+/* Program that exercises filesystem socket dentries to see if posixovl
+ * properly deals with these. */
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <sys/types.h>

++++++ posixovl.keyring ++++++
--- /var/tmp/diff_new_pack.4nDqFB/_old  2018-09-24 13:12:15.913811650 +0200
+++ /var/tmp/diff_new_pack.4nDqFB/_new  2018-09-24 13:12:15.917811643 +0200
@@ -1,168 +1,85 @@
-pub   1024D/844C4360 2006-07-11 [expires: 2011-07-10]
-uid                  Jan Engelhardt <[email protected]>
-sub   4096g/84229FC4 2006-07-11 [expires: 2011-07-10]
-
-pub   4096R/19FC338D 2011-05-09 [expires: 2016-05-07]
-uid                  Jan Engelhardt <[email protected]>
-sub   4096R/C66DD881 2011-05-09 [expires: 2016-05-07]
-sub   4096g/34C483D3 2011-05-09 [expires: 2016-05-07]
-sub   3072D/68A20E45 2011-05-09 [expires: 2016-05-07]
-
 -----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v2.0.19 (GNU/Linux)
 
-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
-=Kn2C
+mQINBFVLPfYBEADaiIZ8oruMlKJJMJbscOAm+kHqzcgDuGQi/3Z+cbvlJQdPyeir
+dyovR3A1GrtjJzWofh3mxcbV3iGwvRVhFJDWRPTgMSDwz3fz0uFPFfv/omGyB1hu
+OQPE/GNVDSdox6hUeVrpbNkvkvj6uHKNPvpvjjqBB8btPt6vjyfaVo8Dg/WM3DpW
+nfRPxEuikf4StmBbBNkdt0ORkt3w/GNX+AC7wrl/DUeSLiCckcrRRAH95rDPiS3B
+Paizjyw0U4bSvsLxcgF/H6cRQkDl1bLPXzBE4QhtJNzjJSOu1PwNnnxyOVH38jnC
+NP4RhQp0iXrz6Tmc8woG7s8JW6Y4+R4lcw7Y+4mnAvFfh7+Yp8Ziyhu7AG5+t9+G
+qMkl6lEnGTVfk+Xjq9UGXnMNy7Q81OzDbCIPU9b7yYjZOK29p7u07XuUGHgaUVa5
+MyL1bWyiyY83X3q5MXrD3445m89gdziP4LceY9eXvRn5hh0nD86/cbxqEEn6V6GD
+jVrHNHaiT7OSiCNjkbXJFcBzT6roaDv0yLjHVDr6LH/KWpAnQ/wA/1feC8leT0xH
+EB6h27BIlI7nEj74ynF7K4B30FVJE4KAW5yEgf+sMjNwCP2nJ949i7+0BL52SIbm
+rSv9n4aRatVpNxI2crbo3GdrEgHe9ygUbHJFpWwNT4A/pNdCllylO7ZgwQARAQAB
+tCBKYW4gRW5nZWxoYXJkdCA8amVuZ2VsaEBpbmFpLmRlPokCPwQTAQIAKQUCVUs9
+9gIbAwUJCeNAAAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEKKL3+61orL/
+fVoQAJqs4eWUfpKpRSxwbeGrLbLLauiUfD+u8yr1WDufq9x1UIsCv4+gdcm1MdZG
+hG2YS1ER2+lW9FPMhIc2JR50qVzaIkLDgJCj8m7G8qOQcUnVGEseEIJhU8ZDbF9t
+wuI5WethJHigkkEOxZzIP2af9f9V0VOYlbiWRT79Xv6un5nfIbt5BJ5pLKtAh7lb
+Te23HHxZcKG2FcGEZK7Q8PuA4Lds6X8lf3eZsA3UCXCOJXvMIBQAHqPdQl05DnkD
+IfpTqvJ+dWLuqHtPI+WofitvfEyNQXukhP2WlcKYGonJCewe3RlNWCSPHjfhdbqo
+enkOTty29hnXHVlDosr/H/QEha8x2JotWDo2eGjjnjAZzlw0grDU722kDON6rdZw
+xmH797ZTExsVdjUOjvY+gdIPq1z97uTsacbGw5RrOkM8KolakMKtPf9eBgXc9Ys3
+twvz4SvkkroGyK+koFGGVOor+2BK90MaRllO3ykbv+xU2XYKERBCffSRkUfHB/nw
+Oe0OSKHknnoHtCKZxmHUQ+A7b9fDaxUcnOHziz54aKOHhvfn4kBMUWMxoWDjQywi
+Uiynx7adf+sFsfIxKNwrd8cDUrcppaiVBkUjfZqtqORRC4TpzIvLi7xC2BtxqE+D
+RQvW563Q2WvxlJ1wTMibTLOhxz3qY6Teib7I4FJjUgJKTUtBuQINBFVLPfYBEACy
+4XdMn73w9CUPomPZEqsoZQXsWqK9VnqUjb3Nv3Me+r55VMrJbdzavpIHnv/g/hCI
+0JO1ngqQ3nm1C3wgjXhgXmE+ie72I0Il9b4T2OptwiNKso4v/eAQmtRFEzffJggc
+8/lLbtJ8NyXPxiW6gmUEwugCc6OG+KjBTRnC5ljXyrKe3IWs2DfMwZh7gUY7i2MC
+xmRDvm1WF1eYZ5DDRFpEw0ZAxwwU3bG3JUis+FHApSTzhuxRLdFzQjbILdmfTWL0
+G728mLmeUISAdyVEhdXlFuZOx5vJGEVWG2PMV5rTbfMr/yUxTeW3+RMPo3yHgAn7
+8SGIrJoTkQJS+EkQC/7CIPQ1LbDLqgvA+C/ky4wE7eukbXTQGeXG4GlK3J2B7NFZ
+0KxGr8ajcWlMDVuU9/VZx/YR4H4hNpvJyVjt3SXXhXTpEnQeFag9NKNvESnUfcW9
+raKDNReSmdxFpFt8a07WhkBCLHGDCK8Bur0lQjzkk1C1FnUK1dXqW2QuQk8D/2Xb
++mat3EQnXoeXaYdGteXRtsmPcRPx6uv5IHMb57KqnZv2bEI4fagHoAHKEhdg3sKY
+bEDo+9DbQTFx76Of/6xyZtTTiFM4pAbeLXNyXRZ6OLq7dI0fFh4fuiIgLLJDKeV8
+xDsLbXqCryoBqBHSETzIuq7jP2XnLuxfRkHLhToBDQARAQABiQIlBBgBAgAPBQJV
+Sz32AhsMBQkJ40AAAAoJEKKL3+61orL/9y4QANcptp2bKs20Sac12+cgeNl5N0OQ
+ZbDXc2kPgvDoVnekiTVR6+83DkmNHvAZwm5BSC+//wThEemDh1UQW25Wu4rU4/zY
+lasdLHmrM5+9q+5ZtHC+gE3EC2hSxTiEyOAWtXr+PCYu5FueMyyz90Bu/x+YANVN
+b1s0nd2HZO4QDZ8tGcv0VtfFkhljGo10SQbC4TSUbBAEKz7L1Rd3joIbwz+EMc6t
+GkUxt8M7nzBnst6ex4nkncms532Y0JK4TExLTnlYgH5obHo4GgM1WzWoPtRXnAZ/
+SmHjOgTT09d+bwhUt2fV+WJQWZh+dy4Q9vCMC1/CQsuHp+6GWr9pzpfRNTQ1TSO+
+BIjx1iEDy5ZZggB7/H/KAtEiH7s5Ba9pd258I18Q4FBaSsRgB5poRRK0GQF/0asB
+FiwWhA61Xbrrphnfu53hvt3Dpt4GUIZOJ8iTG8/2yWc8JJHrUus6f5UCURyfJ3V8
+KGo4HfeljhAZnoEA2aTjfUPlQWXxavuuuobcBGA88KjrbIhCijJPBVdqFE+W5nZH
+lKdAYD0n5y+pjPOSjxg5q8cnxJn/vPUoVVp60J3dsJSsMKG4mLVW8Fl++EuK8Qbx
+NI99tSHr8TRT09j5egNZpyd9GqGAX9ektvSiBmVzAwCWKa1Urr5UW9XgHhJGQTqf
+qsh6YCjK7mCHQ8HquQINBFVLQRgBEAC6Qr1y5WSMxi0xKZfGDjwlBp+6ygUBMfos
+ZtuStpPi/MsAnAexBjA9qMyZ/EBRMI/FNZSRrRiUT3SoDQhQaJTzIVLFK4FI/TUB
+QV+JKiQZHxKejAN7G5jpb9OMgYKea4TxpN+D2sSf7Nze7d4MAQaI3qrlReRUU8E+
+siMnjxxwd8X+Mn1lzCoa2LwH1Qe4+CWrjlrN0lCm9vc3mYgTkVuWdRLS8pwKguHJ
+qU7zJHrU3JY/WtZqfqkM0I/ONiLFo1jKegQJtHYrOwecO2JoSSDOQe2wrbnic90/
+lCyzmyT1ZtcSSt0UWoWAclbvX1g2GPnG1mttnI5qKfP971UDqlRmNhwn/+78InHz
+gUCJkzJKIFqrT1Cn/c5XE4tjAW6NAaqi0pdWtgNkWNwr4fqJfMt9+n95Y09PV4JW
+5yYJ/dVh0CDqxJCXrTx75jp9ZOXpTuCx01EHAW/aV7WfqYD5o2hFWehRUbF6+V0C
+OsU7P0GhCu2MR4nQT5Y0B/seGMz1yaD3RvhMWEekOfogS+fgOOmxR9skVQNsnCGr
+7M9oKQsIeH6yRyZtyfHvdOmbxVhDZ/BTq3LlFNtkKzXF0v1zYgkDkI2BwmI2yG7O
+wrPq121T99r3nhfTmk25Rakb1kiOP2/JBrCzOq5DC5muYHQVYw9ACc1IiwRs4REM
+zpxJHSuieQARAQABiQREBBgBAgAPBQJVS0EYAhsCBQkJ40AAAikJEKKL3+61orL/
+wV0gBBkBAgAGBQJVS0EYAAoJEGo5M9opfft9Q7oP/0cEPt5zIa2f67zp4XZAnvIS
+U970z0W6Sv8GZdVss8BX2htcgMyEDIhjJtOdviItFSb9UhMEgB3K+JJbEw1v0nbS
+8UWaXgt+SsH0J9wdFzMFfcpnIY3xPaLQkTFqPOpPS7HgJQ3cLu+PcdcVvjRsTm42
+qjdBjguHoOJAFxUUmeB/Q8DIrY7Tl+TysC2LgV+QiNIOiDbcRwgNIJnSmNI2tUVj
+sXkywGAcH7ZR973o6ZOWlgru6Ly10lZMr7HKlt5uy2SYT4EJG6LCkUyvy7fm7WCb
+NbgL8qcSti0ZdXrGSRACJnBy+cLxDdCS6Is+OZpxXiU7NqkAjl6+YCJQiUjn9ZTv
+35CBIUmovNmNK4+Udhfs5vQInU2zTRh74L5TlJa1lqFJn5f1WC2ZTeJd3nUmXqlU
+gdRaAzFHp913Pldy9vqiTyhjNnh1mELTpf2RnXYq2z+LzoBwlSt9lfovcuKuTvJF
+s+OAjbBVN1WrlUp6YoaAJzA15RvSuu7cPrKGeDN6biGWltsicKki4HE9svoh7duC
+H2mW1WlJELX2nOUdduuS9/OpOUg2rfLLcwtNQBlCQ+7aIH1kf3zvZxDz52B+FtSZ
+xbGnMoh8t3RjMhAAYF09ygR+ic0vwQdvYaxvejww0gJ+teLVGEkbncz5M3z/mUl3
+SInFme6dvisgqZxr03mOuR8P/Av0D5OryeaJ+8GDvOacEmeLkwqzYWtiQpik4Hkx
+6i5IsdpJ682r1h7420FFk22oaFA82gRgbTnKpRUGTaZzEVfbuP40jQWg3hY0zAC/
+UkcfVB6q4VX0sUSZ/jEQC+fu8DxfHhHKen9cRzHBmQNb/GvnTKNTgy5NpRH/aUch
+Az7k4dGGrzSlXoU5xAuMVmRHnNf3i9DAs/UOg+HfFZJNJrKdO/SeF3Rr8mjTiJUe
+mBtw+PTagiU/ci02O1pSJYf8tZkzknnyrCk0Nz9e6RwUaI0VqpEw2klrbHlfkHof
+MUgpL51aQgx4N2YFkOzsFXwr1lL9vAp56oDuWRT3LQ+7X2pfnulfnv5Ulcukfa26
++dyXSLA1kC8St7nnP93wQNnR/YbCYRvXFzG1aTpTAmYEXreiOnEpUP65+6Wq72f6
+pZM/emhoI9mVFg2yD+UG5McWZC4Ifslyvl/NLbtLkh3Wo4lFhSxP48VduLML1aVR
+WdRzVXI9r3AhFe0Tif8Kn8YP6oLwC1/B8I9RGDkc6RMMX3I0iLUalZz39bxPjJB3
+modKdNRX/loeZzcLsCw94tXer8Ya6186qT7aeKhKmAe0clstfP0wiF5BWz77EDhS
+wOQw2H3GVw6h58eKFDCX4T2mDbd5iXczRb8uy25ANRbIj8TiTqBylSuM7O+Ps0s3
+cCAy
+=ePMx
 -----END PGP PUBLIC KEY BLOCK-----


Reply via email to