Hello community,

here is the log from the commit of package acl for openSUSE:Factory checked in 
at 2016-02-08 09:46:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/acl (Old)
 and      /work/SRC/openSUSE:Factory/.acl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "acl"

Changes:
--------
--- /work/SRC/openSUSE:Factory/acl/acl.changes  2014-10-15 16:19:21.000000000 
+0200
+++ /work/SRC/openSUSE:Factory/.acl.new/acl.changes     2016-02-08 
09:46:55.000000000 +0100
@@ -1,0 +2,39 @@
+Wed Dec  2 16:13:20 UTC 2015 - je...@suse.com
+
+- Update to git snapshot dated 21 Sep 2015.
+  - Added:
+    * 0001-Install-the-libraries-to-the-appropriate-directory.patch
+    * 0002-setfacl.1-fix-typo-inclu-de-include.patch
+    * 0003-test-fix-insufficient-quoting-of.patch
+    * 0004-Makefile-rename-configure.in-to-configure.ac.patch
+    * 0005-Bad-markup-in-acl.5-page.patch
+    * 0006-.gitignore-ignore-and-config.h.in.patch
+    * 0007-Use-autoreconf-rather-than-autoconf-to-regenerate-th.patch
+    * 0008-libacl-Make-sure-that-acl_from_text-always-sets-errn.patch
+    * 0009-libacl-fix-SIGSEGV-of-getfacl-e-on-overly-long-group.patch
+    * 0010-punt-debian-rpm-packaging-logic.patch
+    * 0011-move-gettext-logic-into-misc.h.patch
+    * 0012-test-make-running-parallel-out-of-tree-safe.patch
+    * 0013-modernize-build-system.patch
+    * 0014-po-regenerate-files-after-move.patch
+    * 0015-build-drop-aclincludedir-use-pkgincludedir.patch
+    * 0016-build-make-use-of-an-aux-dir-to-stow-away-helper-scr.patch
+    * 0017-build-ship-a-pkgconfig-file-for-libacl.patch
+    * 0018-read_acl_-comments-seq-rename-line-to-lineno.patch
+    * 0019-read_acl_-comments-seq-switch-to-next_line.patch
+    * 0020-telldir-return-value-and-seekdir-second-parameters-a.patch
+    * 0021-mark-libmisc-funcs-as-hidden-so-they-are-not-exporte.patch
+    * 0022-add-__acl_-prefixes-to-internal-symbols.patch
+    * 0023-cp.test-Check-permissions-of-the-right-file.patch
+    * 0024-libacl-acl_set_file-Remove-unnecesary-racy-check.patch
+    * 0025-fix-compilation-with-latest-xattr-git.patch
+    * 0026-getfacl-Fix-memory-leak.patch
+    * 0027-Fix-the-display-block-nesting-in-acl.5.patch
+    * 0028-setfacl-man-page-Minor-wording-improvements.patch
+    * 0029-getfacl-Fix-minor-resource-leak.patch
+    * 0030-Do-not-export-symbols-that-are-not-supposed-to-be-ex.patch
+    * 0031-walk_tree-mark-internal-variables-as-static.patch
+    * 0032-ignore-configure.lineno.patch
+- Signficant spec file restructuring due to 0013-modernize-build-system.patch
+- removed builddefs.in.diff
+-------------------------------------------------------------------

Old:
----
  acl-2.2.52.src.tar.gz
  acl-2.2.52.src.tar.gz.sig
  builddefs.in.diff

New:
----
  0001-Install-the-libraries-to-the-appropriate-directory.patch
  0002-setfacl.1-fix-typo-inclu-de-include.patch
  0003-test-fix-insufficient-quoting-of.patch
  0004-Makefile-rename-configure.in-to-configure.ac.patch
  0005-Bad-markup-in-acl.5-page.patch
  0006-.gitignore-ignore-and-config.h.in.patch
  0007-Use-autoreconf-rather-than-autoconf-to-regenerate-th.patch
  0008-libacl-Make-sure-that-acl_from_text-always-sets-errn.patch
  0009-libacl-fix-SIGSEGV-of-getfacl-e-on-overly-long-group.patch
  0010-punt-debian-rpm-packaging-logic.patch
  0011-move-gettext-logic-into-misc.h.patch
  0012-test-make-running-parallel-out-of-tree-safe.patch
  0013-modernize-build-system.patch
  0014-po-regenerate-files-after-move.patch
  0015-build-drop-aclincludedir-use-pkgincludedir.patch
  0016-build-make-use-of-an-aux-dir-to-stow-away-helper-scr.patch
  0017-build-ship-a-pkgconfig-file-for-libacl.patch
  0018-read_acl_-comments-seq-rename-line-to-lineno.patch
  0019-read_acl_-comments-seq-switch-to-next_line.patch
  0020-telldir-return-value-and-seekdir-second-parameters-a.patch
  0021-mark-libmisc-funcs-as-hidden-so-they-are-not-exporte.patch
  0022-add-__acl_-prefixes-to-internal-symbols.patch
  0023-cp.test-Check-permissions-of-the-right-file.patch
  0024-libacl-acl_set_file-Remove-unnecesary-racy-check.patch
  0025-fix-compilation-with-latest-xattr-git.patch
  0026-getfacl-Fix-memory-leak.patch
  0027-Fix-the-display-block-nesting-in-acl.5.patch
  0028-setfacl-man-page-Minor-wording-improvements.patch
  0029-getfacl-Fix-minor-resource-leak.patch
  0030-Do-not-export-symbols-that-are-not-supposed-to-be-ex.patch
  0031-walk_tree-mark-internal-variables-as-static.patch
  0032-ignore-configure.lineno.patch
  acl-2.2.52.tar.bz2

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

Other differences:
------------------
++++++ acl.spec ++++++
--- /var/tmp/diff_new_pack.La8A80/_old  2016-02-08 09:46:56.000000000 +0100
+++ /var/tmp/diff_new_pack.La8A80/_new  2016-02-08 09:46:56.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package acl
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 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
@@ -27,15 +27,57 @@
 
 #Git-Web:      http://git.savannah.gnu.org/cgit/acl.git/
 #Git-Clone:    git://git.sv.gnu.org/acl
-Source:         
http://download.savannah.gnu.org/releases-noredirect/acl/%name-%version.src.tar.gz
-Source1:        
http://download.savannah.gnu.org/releases-noredirect/acl/%name-%version.src.tar.gz.sig
+# Source is generated by git-archive v2.2.52 so that the subsequent commits
+# apply cleanly.
+Source:         %name-%version.tar.bz2
 Source2:        baselibs.conf
 # http://savannah.nongnu.org/project/memberlist-gpgkeys.php?group=acl
 Source3:        %name.keyring
-Patch0:         builddefs.in.diff
-Patch2:         0001-Use-OS-byteswapping-macros.patch
-Patch3:         acl-2.2.52-tests.patch
+
+# Upstream changes since v2.2.52
+Patch1:         0001-Install-the-libraries-to-the-appropriate-directory.patch
+Patch2:         0002-setfacl.1-fix-typo-inclu-de-include.patch
+Patch3:         0003-test-fix-insufficient-quoting-of.patch
+Patch4:         0004-Makefile-rename-configure.in-to-configure.ac.patch
+Patch5:         0005-Bad-markup-in-acl.5-page.patch
+Patch6:         0006-.gitignore-ignore-and-config.h.in.patch
+Patch7:         0007-Use-autoreconf-rather-than-autoconf-to-regenerate-th.patch
+Patch8:         0008-libacl-Make-sure-that-acl_from_text-always-sets-errn.patch
+Patch9:         0009-libacl-fix-SIGSEGV-of-getfacl-e-on-overly-long-group.patch
+Patch10:        0010-punt-debian-rpm-packaging-logic.patch
+Patch11:        0011-move-gettext-logic-into-misc.h.patch
+Patch12:        0012-test-make-running-parallel-out-of-tree-safe.patch
+Patch13:        0013-modernize-build-system.patch
+Patch14:        0014-po-regenerate-files-after-move.patch
+Patch15:        0015-build-drop-aclincludedir-use-pkgincludedir.patch
+Patch16:        0016-build-make-use-of-an-aux-dir-to-stow-away-helper-scr.patch
+Patch17:        0017-build-ship-a-pkgconfig-file-for-libacl.patch
+Patch18:        0018-read_acl_-comments-seq-rename-line-to-lineno.patch
+Patch19:        0019-read_acl_-comments-seq-switch-to-next_line.patch
+Patch20:        0020-telldir-return-value-and-seekdir-second-parameters-a.patch
+Patch21:        0021-mark-libmisc-funcs-as-hidden-so-they-are-not-exporte.patch
+Patch22:        0022-add-__acl_-prefixes-to-internal-symbols.patch
+Patch23:        0023-cp.test-Check-permissions-of-the-right-file.patch
+Patch24:        0024-libacl-acl_set_file-Remove-unnecesary-racy-check.patch
+Patch25:        0025-fix-compilation-with-latest-xattr-git.patch
+Patch26:        0026-getfacl-Fix-memory-leak.patch
+Patch27:        0027-Fix-the-display-block-nesting-in-acl.5.patch
+Patch28:        0028-setfacl-man-page-Minor-wording-improvements.patch
+Patch29:        0029-getfacl-Fix-minor-resource-leak.patch
+Patch30:        0030-Do-not-export-symbols-that-are-not-supposed-to-be-ex.patch
+Patch31:        0031-walk_tree-mark-internal-variables-as-static.patch
+Patch32:        0032-ignore-configure.lineno.patch
+
+# Local changes
+Patch100:       0001-Use-OS-byteswapping-macros.patch
+Patch101:       acl-2.2.52-tests.patch
+
+BuildRequires:  autoconf
+BuildRequires:  automake
+BuildRequires:  gettext-tools
 BuildRequires:  libattr-devel
+BuildRequires:  libtool
+BuildRequires:  pkg-config
 #BuildRequires:  gpg-offline
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
@@ -80,47 +122,73 @@
 
 %prep
 %setup -q -n acl-%version
-%patch0 -p1
+%patch1 -p1
 %patch2 -p1
 %patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
+%patch24 -p1
+%patch25 -p1
+%patch26 -p1
+%patch27 -p1
+%patch28 -p1
+%patch29 -p1
+%patch30 -p1
+%patch31 -p1
+%patch32 -p1
+
+%patch100 -p1
+%patch101 -p1
 
 %build
+chmod a+x po/update-potfiles
+sh autogen.sh
 export OPTIMIZER="$RPM_OPT_FLAGS -fPIC"
 export DEBUG=-DNDEBUG
 CFLAGS="$RPM_OPT_FLAGS"
 %configure \
-       --prefix=/ \
-       --exec-prefix=/ \
-       --sbindir=/bin \
+       --prefix=/usr \
+       --exec-prefix=/usr \
        --libdir=/%{_lib} \
     --libexecdir=/%{_lib} \
        --disable-static \
+       --docdir=%{_defaultdocdir}/%{name} \
        --with-pic
 %{__make} %{?_smp_mflags}
 
 %check
-if ./setfacl/setfacl -m u:`id -u`:rwx .; then
-    make tests || exit $?
-    if test 0 = `id -u`; then
-        make root-tests || exit $?
-    fi
+if ./setfacl -m u:`id -u`:rwx .; then
+    make check || (cat test-suite.log ; false)
 else
     echo '*** ACLs are probably not supported by the file system,' \
          'the test-suite will NOT run ***'
 fi
 
 %install
-DIST_ROOT="$RPM_BUILD_ROOT"
-DIST_INSTALL=`pwd`/install.manifest
-DIST_INSTALL_DEV=`pwd`/install-dev.manifest
-DIST_INSTALL_LIB=`pwd`/install-lib.manifest
-export DIST_ROOT DIST_INSTALL DIST_INSTALL_DEV DIST_INSTALL_LIB
-/usr/bin/make install DIST_MANIFEST="$DIST_INSTALL"
-/usr/bin/make install-dev DIST_MANIFEST="$DIST_INSTALL_DEV"
-/usr/bin/make install-lib DIST_MANIFEST="$DIST_INSTALL_LIB"
-%{__mkdir_p} %{buildroot}%{_libdir}
+%make_install
+%{__mkdir_p} %buildroot%{_libdir}
 %{__ln_s} -v /%{_lib}/$(readlink %{buildroot}/%{_lib}/lib%{name}.so) 
%{buildroot}%{_libdir}/lib%{name}.so
 %{__rm} -v %{buildroot}/%{_lib}/lib%{name}.{la,so}
+# The library stays in /lib* but the pkgconfig file needs to go under /usr
+mv -f %{buildroot}/%{_lib}/pkgconfig/ %{buildroot}%{_libdir}
 %find_lang %name
 
 %post -n %lname -p /sbin/ldconfig
@@ -142,6 +210,7 @@
 %_includedir/sys/acl.h
 %_libdir/libacl.so
 %_mandir/man3/*.3*
+%_libdir/pkgconfig/libacl.pc
 
 %files -n %lname
 %defattr(755,root,root,755)

++++++ 0001-Install-the-libraries-to-the-appropriate-directory.patch ++++++
>From cd76644ce9b9814a856579e2b98d4060d19cb162 Mon Sep 17 00:00:00 2001
From: Brandon Philips <bran...@ifup.co>
Date: Mon, 20 May 2013 06:15:15 -0700
Subject: [PATCH 01/34] Install the libraries to the appropriate directory

---
 include/builddefs.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/builddefs.in b/include/builddefs.in
index 434ce95..5c3e0d6 100644
--- a/include/builddefs.in
+++ b/include/builddefs.in
@@ -31,7 +31,7 @@ PKG_DISTRIBUTION= @pkg_distribution@
 PKG_BIN_DIR    = @bindir@
 PKG_SBIN_DIR   = @sbindir@
 PKG_LIB_DIR    = @libdir@@libdirsuffix@
-PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@
+PKG_DEVLIB_DIR = @libdir@@libdirsuffix@
 PKG_INC_DIR    = @includedir@
 PKG_MAN_DIR    = @mandir@
 PKG_DOC_DIR    = @datadir@/doc/@pkg_name@
-- 
2.5.2

++++++ 0002-setfacl.1-fix-typo-inclu-de-include.patch ++++++
>From 48cd4fe761e396e8897bf661ff81b86331ca2439 Mon Sep 17 00:00:00 2001
From: John Bradshaw <j...@johnbradshaw.org>
Date: Mon, 20 May 2013 13:41:32 +0200
Subject: [PATCH 02/34] setfacl.1: fix typo 'inclu de' -> 'include'

Bug: https://bugzilla.redhat.com/675451
---
 man/man1/setfacl.1 | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/man/man1/setfacl.1 b/man/man1/setfacl.1
index 64f0e33..0c7c046 100644
--- a/man/man1/setfacl.1
+++ b/man/man1/setfacl.1
@@ -240,8 +240,8 @@ owner, owning group, or others entry, a copy of the ACL 
owner, owning group, or
 .IP * 4
 If a Default ACL contains named user entries or named group entries, and no 
mask entry exists, a mask entry containing the same permissions as the default 
Default ACL's group entry is added. Unless the
 .I \-n
-option is given, the permissions of the mask entry are further adjusted to 
inclu
-de the union of all permissions affected by the mask entry. (See the
+option is given, the permissions of the mask entry are further adjusted to
+include the union of all permissions affected by the mask entry. (See the
 .I \-n
 option description).
 .PP
-- 
2.5.2

++++++ 0003-test-fix-insufficient-quoting-of.patch ++++++
>From e98ce8acf84d12ea67a3ac76bf63c6d87d9af86d Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdu...@redhat.com>
Date: Mon, 20 May 2013 16:38:06 +0200
Subject: [PATCH 03/34] test: fix insufficient quoting of '\'

This is a follow-up to 7f2c91b8369242a8dbc2b304a5b71b2a85f5b855, which
caused sbits-restore.test to fail in the following way in case SELinux
was disabled:

*** sbits-restore.test ***
[3] $ umask 022 -- ok
[4] $ mkdir d -- ok
[5] $ touch d/g -- ok
[6] $ touch d/u -- ok
[7] $ chmod u+s d/u -- ok
[8] $ chmod g+s d/g -- ok
[9] $ chmod +t d -- ok
[10] $ getfacl -R d > d.acl -- ok
[11] $ rm -R d -- ok
[12] $ mkdir d -- ok
[13] $ touch d/g -- ok
[14] $ touch d/u -- ok
[15] $ setfacl --restore d.acl -- ok
[16] $ ls -dl d | awk '{print $1}' | sed 's/.$//g' -- failed
drwxr-xr-                             != drwxr-xr-t
[18] $ ls -dl d/u | awk '{print $1}' | sed 's/.$//g' -- failed
-rwSr--r-                             != -rwSr--r--
[20] $ ls -dl d/g | awk '{print $1}' | sed 's/.$//g' -- failed
-rw-r-Sr-                             != -rw-r-Sr--
[22] $ rm -Rf d -- ok
17 commands (14 passed, 3 failed)
---
 test/cp.test            | 2 +-
 test/misc.test          | 6 +++---
 test/sbits-restore.test | 6 +++---
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/test/cp.test b/test/cp.test
index 0867f63..a927195 100644
--- a/test/cp.test
+++ b/test/cp.test
@@ -9,7 +9,7 @@ The cp utility should only copy ACLs if `-p' is given.
        > -rw-rw-r--+
        
        $ cp f g
-       $ ls -l g | awk -- '{ print $1 }' | sed 's/\.$//g'
+       $ ls -l g | awk -- '{ print $1 }' | sed 's/\\.$//g'
        > -rw-r--r--
        
        $ rm g
diff --git a/test/misc.test b/test/misc.test
index 6e98053..29372b7 100644
--- a/test/misc.test
+++ b/test/misc.test
@@ -254,7 +254,7 @@ Add some users and groups
 Symlink in directory with default ACL?
         
        $ ln -s d d/l
-       $ ls -dl d/l | awk '{print $1}' | sed 's/\.$//g'
+       $ ls -dl d/l | awk '{print $1}' | sed 's/\\.$//g'
        > lrwxrwxrwx
 
        $ ls -dl -L d/l | awk '{print $1}'
@@ -343,7 +343,7 @@ Remove the default ACL
 Reset to base entries
         
        $ setfacl -b d
-       $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
+       $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
        > drwxr-x---
 
        $ getfacl --omit-header d
@@ -355,7 +355,7 @@ Reset to base entries
 Now, chmod should change the group_obj entry
         
        $ chmod 775 d
-       $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
+       $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
        > drwxrwxr-x
        
        $ getfacl --omit-header d
diff --git a/test/sbits-restore.test b/test/sbits-restore.test
index de21340..5899b0a 100644
--- a/test/sbits-restore.test
+++ b/test/sbits-restore.test
@@ -13,10 +13,10 @@ Ensure setting of SUID/SGID/sticky via --restore works
        $ touch d/g
        $ touch d/u
        $ setfacl --restore d.acl
-       $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
+       $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
        > drwxr-xr-t
-       $ ls -dl d/u | awk '{print $1}' | sed 's/\.$//g'
+       $ ls -dl d/u | awk '{print $1}' | sed 's/\\.$//g'
        > -rwSr--r--
-       $ ls -dl d/g | awk '{print $1}' | sed 's/\.$//g'
+       $ ls -dl d/g | awk '{print $1}' | sed 's/\\.$//g'
        > -rw-r-Sr--
        $ rm -Rf d
-- 
2.5.2

++++++ 0004-Makefile-rename-configure.in-to-configure.ac.patch ++++++
>From 57a78716049833b9ed662a0a45b6102e2aa9f970 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Mon, 20 May 2013 14:26:32 -0400
Subject: [PATCH 04/34] Makefile: rename configure.in to configure.ac

The Makefile references the configure source file by name, so update
that after the rename.

Signed-off-by: Mike Frysinger <vap...@gentoo.org>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index dce32d3..d1188f2 100644
--- a/Makefile
+++ b/Makefile
@@ -29,7 +29,7 @@ CONFIGURE = \
        ltmain.sh m4/libtool.m4 m4/ltoptions.m4 m4/ltsugar.m4 \
        m4/ltversion.m4 m4/lt~obsolete.m4
 LSRCFILES = \
-       configure.in Makepkgs install-sh exports README VERSION \
+       configure.ac Makepkgs install-sh exports README VERSION \
        $(CONFIGURE)
 
 LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \
-- 
2.5.2

++++++ 0005-Bad-markup-in-acl.5-page.patch ++++++
>From c000106df976473a79ec4afcfe0a4c303cafb823 Mon Sep 17 00:00:00 2001
From: "Eric S. Raymond" <e...@thyrsus.com>
Date: Tue, 28 May 2013 15:35:55 +0200
Subject: [PATCH 05/34] Bad markup in acl.5 page

Use of low-level troff hackery to set special indents or breaks can't be
translated into HTML or structural markups. This page will have rendering
faults in HTML, and probably also under third-party man page browsers such as
Xman, Rosetta, and the KDE help browser. This patch eliminates .in in favor of
requests like .Bl/.Be that have structural translations.
---
 man/man5/acl.5 | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/man/man5/acl.5 b/man/man5/acl.5
index aec58aa..1e44a31 100644
--- a/man/man5/acl.5
+++ b/man/man5/acl.5
@@ -170,14 +170,12 @@ the object will be granted.
 the effective user ID of the process matches the user ID of the file object 
owner,
 .Sy then
 .Pp
-.in +4
-.Bd -filled
+.Bd -filled -offset indent
 .Sy if
 the ACL_USER_OBJ entry contains the requested permissions, access is granted,
 .Pp
 .Sy else
 access is denied.
-.in -4
 .Ed
 .It
 .Sy "else if"
@@ -185,15 +183,13 @@ the effective user ID of the process matches the 
qualifier of any entry
 of type ACL_USER,
 .Sy then
 .Pp
-.in +4
-.Bd -filled
+.Bd -filled -offset indent
 .Sy if
 the matching ACL_USER entry and the ACL_MASK entry contain the requested
 permissions, access is granted,
 .Pp
 .Sy else
 access is denied.
-.in -4
 .Ed
 .It
 .Sy else if
@@ -201,13 +197,11 @@ the effective group ID or any of the supplementary group 
IDs of the process
 match the file group or the qualifier of any entry of type ACL_GROUP, 
 .Sy then
 .Pp
-.in +4
-.Bd -filled
+.Bd -filled -offset indent
 .Sy if
 the ACL contains an ACL_MASK entry,
 .Sy then
-.in +4
-.Bd -filled
+.Bd -filled -offset indent
 .Sy if
 the ACL_MASK entry and any of the matching ACL_GROUP_OBJ or ACL_GROUP entries
 contain
@@ -216,12 +210,10 @@ the requested permissions, access is granted,
 .Sy else
 access is denied.
 .Pp
-.in -4
 .Ed
 .Sy else
 (note that there can be no ACL_GROUP entries without an ACL_MASK entry)
-.in +4
-.Bd -filled
+.Bd -filled -offset indent
 .Sy if
 the ACL_GROUP_OBJ entry contains the requested permissions,
 access is granted,
@@ -230,7 +222,6 @@ access is granted,
 .Sy else
 access is denied.
 .Pp
-.in -4
 .Ed
 .It
 .Sy else if
-- 
2.5.2

++++++ 0006-.gitignore-ignore-and-config.h.in.patch ++++++
>From 63237b6d5a5ad1d5cc76d432336d904c3c567fd9 Mon Sep 17 00:00:00 2001
From: Fabrice Bauzac <fbau...@amadeus.com>
Date: Mon, 5 Aug 2013 15:22:40 +0200
Subject: [PATCH 06/34] .gitignore: ignore *~ and config.h.in.

---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index 6113c60..0f018b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,5 @@ m4/ltoptions.m4
 m4/ltsugar.m4
 m4/ltversion.m4
 m4/lt~obsolete.m4
+config.h.in
+*~
-- 
2.5.2

++++++ 0007-Use-autoreconf-rather-than-autoconf-to-regenerate-th.patch ++++++
>From c3ce1b78025002a404e5486bf8522ecf812cadcb Mon Sep 17 00:00:00 2001
From: Fabrice Bauzac <fbau...@amadeus.com>
Date: Mon, 5 Aug 2013 15:23:17 +0200
Subject: [PATCH 07/34] Use autoreconf rather than autoconf to regenerate the
 files.

---
 doc/INSTALL | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/INSTALL b/doc/INSTALL
index de99605..1e6ee51 100644
--- a/doc/INSTALL
+++ b/doc/INSTALL
@@ -26,7 +26,7 @@ attribute library and utility from source, and how to install 
them.
    If you want to build the package and install it manually, use the
    following steps:
 
-       # make configure  (or run autoconf; ./configure)
+       # make configure  (or run autoreconf; ./configure)
        # make
        # su root
        # make install install-lib
-- 
2.5.2

++++++ 0008-libacl-Make-sure-that-acl_from_text-always-sets-errn.patch ++++++
>From 3f079d4e0512c9a241fb23c56a0421441c83621e Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <agr...@linbit.com>
Date: Wed, 23 Oct 2013 19:40:57 +0200
Subject: [PATCH 08/34] libacl: Make sure that acl_from_text() always sets
 errno when it fails

The getpwnam() and getgrnam() functions may or may not set errno when
they fail.  If they don't, set it to EINVAL so that errno is always set
when acl_from_text() fails.
---
 libacl/acl_from_text.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c
index 1e05322..c08bd3b 100644
--- a/libacl/acl_from_text.c
+++ b/libacl/acl_from_text.c
@@ -152,11 +152,14 @@ get_uid(const char *token, uid_t *uid_p)
 
        if (get_id(token, uid_p) == 0)
                return 0;
+       errno = 0;
        passwd = getpwnam(token);
        if (passwd) {
                *uid_p = passwd->pw_uid;
                return 0;
        }
+       if (errno == 0)
+               errno = EINVAL;
        return -1;
 }
 
@@ -168,11 +171,14 @@ get_gid(const char *token, gid_t *gid_p)
 
        if (get_id(token, (uid_t *)gid_p) == 0)
                return 0;
+       errno = 0;
        group = getgrnam(token);
        if (group) {
                *gid_p = group->gr_gid;
                return 0;
        }
+       if (errno == 0)
+               errno = EINVAL;
        return -1;
 }
 
-- 
2.5.2

++++++ 0009-libacl-fix-SIGSEGV-of-getfacl-e-on-overly-long-group.patch ++++++
>From fb071c302b8cad8837bc1e57407dc3ffa14d3f99 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdu...@redhat.com>
Date: Thu, 31 Oct 2013 19:24:35 +0100
Subject: [PATCH 09/34] libacl: fix SIGSEGV of getfacl -e on overly long group
 name

We simply make sure that at least one tab is used for indentation.
---
 libacl/__acl_to_any_text.c |  5 +++++
 test/root/getfacl.test     | 17 +++++++++++++++++
 2 files changed, 22 insertions(+)
 create mode 100644 test/root/getfacl.test

diff --git a/libacl/__acl_to_any_text.c b/libacl/__acl_to_any_text.c
index a4f9c34..1d10e81 100644
--- a/libacl/__acl_to_any_text.c
+++ b/libacl/__acl_to_any_text.c
@@ -247,6 +247,11 @@ acl_entry_to_any_str(const acl_entry_t entry_d, char 
*text_p, ssize_t size,
                    options & TEXT_ALL_EFFECTIVE) {
                        x = (options & TEXT_SMART_INDENT) ?
                                ((text_p - orig_text_p)/8) : TABS-1;
+
+                       /* use at least one tab for indentation */
+                       if (x > (TABS-1))
+                               x = (TABS-1);
+
                        strncpy(text_p, tabs+x, size);
                        ADVANCE(TABS-x);
 
diff --git a/test/root/getfacl.test b/test/root/getfacl.test
new file mode 100644
index 0000000..f84e25d
--- /dev/null
+++ b/test/root/getfacl.test
@@ -0,0 +1,17 @@
+Make sure that getfacl always adds at least one space between the permissions
+in an acl entry and the effective permissions comment.
+
+       $ umask 022
+       $ mkdir d
+       $ groupadd loooooooooooooooooooooooonggroup
+       $ setfacl -dm group:loooooooooooooooooooooooonggroup:rwx d
+       $ getfacl -cde d
+       > user::rwx
+       > group::r-x    #effective:r-x
+       > group:loooooooooooooooooooooooonggroup:rwx    #effective:rwx
+       > mask::rwx
+       > other::r-x
+       >
+
+       $ groupdel loooooooooooooooooooooooonggroup
+       $ rm -r d
-- 
2.5.2

++++++ 0010-punt-debian-rpm-packaging-logic.patch ++++++
++++ 1005 lines (skipped)

++++++ 0011-move-gettext-logic-into-misc.h.patch ++++++
>From 602dbcb26e9591922ca94f5b326694a2309fff18 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Fri, 10 Jan 2014 10:07:39 -0500
Subject: [PATCH 11/34] move gettext logic into misc.h

This lets us autogenerate config.h using autoheader rather than
hand maintain it.
---
 chacl/chacl.c       |  4 ++--
 getfacl/getfacl.c   |  5 ++---
 include/config.h.in | 10 ----------
 include/misc.h      | 17 +++++++++++++++++
 libacl/perm_copy.h  |  2 ++
 setfacl/do_set.c    |  3 ++-
 setfacl/setfacl.c   |  5 ++---
 7 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/chacl/chacl.c b/chacl/chacl.c
index 854a620..525a7ff 100644
--- a/chacl/chacl.c
+++ b/chacl/chacl.c
@@ -17,6 +17,7 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#include "config.h"
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
@@ -29,8 +30,7 @@
 #include <sys/stat.h>
 #include <sys/acl.h>
 #include <acl/libacl.h>
-#include <locale.h>
-#include "config.h"
+#include "misc.h"
 
 static int acl_delete_file (const char * path, acl_type_t type);
 static int list_acl(char *file);
diff --git a/getfacl/getfacl.c b/getfacl/getfacl.c
index f8eaf25..22cc1c7 100644
--- a/getfacl/getfacl.c
+++ b/getfacl/getfacl.c
@@ -21,6 +21,7 @@
   USA.
 */
 
+#include "config.h"
 #include <stdio.h>
 #include <errno.h>
 #include <sys/acl.h>
@@ -34,11 +35,9 @@
 #include <dirent.h>
 #include <libgen.h>
 #include <getopt.h>
-#include <locale.h>
-#include "config.h"
+#include "misc.h"
 #include "user_group.h"
 #include "walk_tree.h"
-#include "misc.h"
 
 #define POSIXLY_CORRECT_STR "POSIXLY_CORRECT"
 
diff --git a/include/config.h.in b/include/config.h.in
index 6787b6e..6a720ac 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -39,16 +39,6 @@
 /* Define if you want gettext (I18N) support */
 #undef ENABLE_GETTEXT
 
-#ifdef ENABLE_GETTEXT
-# include <libintl.h>
-# define _(x)                  gettext(x)
-#else
-# define _(x)                  (x)
-# define textdomain(d)         do { } while (0)
-# define bindtextdomain(d,dir) do { } while (0)
-#endif
-#include <locale.h>
-
 /* On GNU/kFreeBSD, ENODATA is not defined in the system headers */
 #include <errno.h>
 #ifndef ENODATA
diff --git a/include/misc.h b/include/misc.h
index 0c5fdcc..a4fa70e 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -15,9 +15,26 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifndef __MISC_H
+#define __MISC_H
+
+#include <stdio.h>
+
 extern int high_water_alloc(void **buf, size_t *bufsize, size_t newsize);
 
 extern const char *quote(const char *str, const char *quote_chars);
 extern char *unquote(char *str);
 
 extern char *next_line(FILE *file);
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(x)                  gettext(x)
+#else
+# define _(x)                  (x)
+# define textdomain(d)         do { } while (0)
+# define bindtextdomain(d,dir) do { } while (0)
+#endif
+#include <locale.h>
+
+#endif
diff --git a/libacl/perm_copy.h b/libacl/perm_copy.h
index 87b1566..350ae6a 100644
--- a/libacl/perm_copy.h
+++ b/libacl/perm_copy.h
@@ -35,3 +35,5 @@
 #define HAVE_ACL_GET_TAG_TYPE 1
 #define HAVE_ACL_SET_FD 1
 #define HAVE_ACL_SET_FILE 1
+
+#include "misc.h"
diff --git a/setfacl/do_set.c b/setfacl/do_set.c
index 3e7e982..60da837 100644
--- a/setfacl/do_set.c
+++ b/setfacl/do_set.c
@@ -20,6 +20,7 @@
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
+#include "config.h"
 #include <stdio.h>
 #include <errno.h>
 #include <sys/acl.h>
@@ -33,10 +34,10 @@
 #include <unistd.h>
 #include <dirent.h>
 #include <ftw.h>
+#include "misc.h"
 #include "sequence.h"
 #include "do_set.h"
 #include "parse.h"
-#include "config.h"
 #include "walk_tree.h"
 
 
diff --git a/setfacl/setfacl.c b/setfacl/setfacl.c
index 81062a6..f6135b7 100644
--- a/setfacl/setfacl.c
+++ b/setfacl/setfacl.c
@@ -20,6 +20,7 @@
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
+#include "config.h"
 #include <limits.h>
 #include <stdio.h>
 #include <string.h>
@@ -29,13 +30,11 @@
 #include <dirent.h>
 #include <libgen.h>
 #include <getopt.h>
-#include <locale.h>
-#include "config.h"
+#include "misc.h"
 #include "sequence.h"
 #include "parse.h"
 #include "do_set.h"
 #include "walk_tree.h"
-#include "misc.h"
 
 #define POSIXLY_CORRECT_STR "POSIXLY_CORRECT"
 
-- 
2.5.2

++++++ 0012-test-make-running-parallel-out-of-tree-safe.patch ++++++
>From 2d13383b7fbcc04fc16681caa4f43d9d9083cca1 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Fri, 10 Jan 2014 10:07:40 -0500
Subject: [PATCH 12/34] test: make running parallel/out-of-tree safe

Change the run program to update PATH to find the tools locally
automatically.  This lets us avoid having to always build in the
tree and allows for direct running.

Also update the program to create a tempdir for each test to run
inside of.  This way we can run all the tests in parallel without
randomly clobbering each other.
---
 test/getfacl-recursive.test | 12 ++++++------
 test/malformed-restore.test |  2 +-
 test/run                    | 29 ++++++++++++++++++++++++++++-
 3 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/test/getfacl-recursive.test b/test/getfacl-recursive.test
index a72192e..8f5dd4e 100644
--- a/test/getfacl-recursive.test
+++ b/test/getfacl-recursive.test
@@ -5,7 +5,7 @@ Tests for proper path recursion
        $ mkdir 1/link
        $ touch 1/link/file
        $ ln -s `pwd`/1/link 1/2/link
-       $ getfacl -P -R 1/2 | ./sort-getfacl-output
+       $ getfacl -P -R 1/2 | sort-getfacl-output
        > # file: 1/2
        > # owner: %TUSER
        > # group: %TGROUP
@@ -21,7 +21,7 @@ Tests for proper path recursion
        > other::r-x
        >
 
-       $ getfacl -R 1/2 | ./sort-getfacl-output
+       $ getfacl -R 1/2 | sort-getfacl-output
        > # file: 1/2
        > # owner: %TUSER
        > # group: %TGROUP
@@ -37,7 +37,7 @@ Tests for proper path recursion
        > other::r-x
        >
 
-       $ getfacl -R -L 1/2 | ./sort-getfacl-output
+       $ getfacl -R -L 1/2 | sort-getfacl-output
        > # file: 1/2
        > # owner: %TUSER
        > # group: %TGROUP
@@ -67,7 +67,7 @@ Tests for proper path recursion
        > other::r--
        >
 
-       $ getfacl -P -R 1 | ./sort-getfacl-output
+       $ getfacl -P -R 1 | sort-getfacl-output
        > # file: 1
        > # owner: %TUSER
        > # group: %TGROUP
@@ -104,7 +104,7 @@ Tests for proper path recursion
        > other::r--
        >
 
-       $ getfacl -R 1 | ./sort-getfacl-output
+       $ getfacl -R 1 | sort-getfacl-output
        > # file: 1
        > # owner: %TUSER
        > # group: %TGROUP
@@ -141,7 +141,7 @@ Tests for proper path recursion
        > other::r--
        >
 
-       $ getfacl -R -L 1 | ./sort-getfacl-output
+       $ getfacl -R -L 1 | sort-getfacl-output
        > # file: 1
        > # owner: %TUSER
        > # group: %TGROUP
diff --git a/test/malformed-restore.test b/test/malformed-restore.test
index e92b75b..5e5391c 100644
--- a/test/malformed-restore.test
+++ b/test/malformed-restore.test
@@ -1,7 +1,7 @@
 Test for malformed input to --restore
  https://savannah.nongnu.org/bugs/index.php?28185
 
-       $ cp malformed-restore-double-owner.acl tmp.acl
+       $ cp "%TESTDIR/malformed-restore-double-owner.acl" tmp.acl
        $ sed -i "s/USER/%TUSER/g" tmp.acl
        $ sed -i "s/GROUP/%TGROUP/g" tmp.acl
        $ touch tmp
diff --git a/test/run b/test/run
index 2cf52e8..0a12be6 100755
--- a/test/run
+++ b/test/run
@@ -37,7 +37,10 @@
 #
 
 use strict;
+use Cwd qw(abs_path);
 use FileHandle;
+use File::Basename qw(basename dirname);
+use File::Path qw(rmtree);
 use Getopt::Std;
 use POSIX qw(isatty setuid getcwd);
 use vars qw($opt_l $opt_v);
@@ -53,9 +56,28 @@ if (isatty(fileno(STDOUT))) {
        $FAILED = "\033[31m\033[1m" . $FAILED . "\033[m";
 }
 
+# Export this dir to tests so they can access data files if needed.
+$ENV{"TESTDIR"} = abs_path(dirname($0));
+# Add the current dir to PATH so we can find sort-getfattr-output and such.
+$ENV{"PATH"} = $ENV{"TESTDIR"} . ":$ENV{PATH}";
+# Add the parent dir to PATH so we can find the compiled tools.
+$ENV{"PATH"} = dirname(abs_path(dirname($0))) . ":$ENV{PATH}";
 $ENV{"TUSER"} = getpwuid($>);
 $ENV{"TGROUP"} = getgrgid($));
 
+open(TEST_FILE, $ARGV[0]);
+
+# Create a tempdir to run in for parallel test execution.
+my $tmpdir = $ARGV[0] . ".dir";
+rmtree($tmpdir);
+if (!mkdir($tmpdir)) {
+       $tmpdir = getcwd() . "/" . basename($ARGV[0]) . ".dir";
+       rmtree($tmpdir);
+       mkdir($tmpdir) or die "could not create $tmpdir";
+}
+my $pretmpdir = getcwd();
+chdir($tmpdir) or die "could not enter $tmpdir";
+
 sub exec_test($$);
 sub process_test($$$$);
 
@@ -66,7 +88,7 @@ my $lineno;
 my $width = ($ENV{COLUMNS} || 80) >> 1;
 
 for (;;) {
-  my $line = <>; $lineno++;
+  my $line = <TEST_FILE>; $lineno++;
   if (defined $line) {
     # Substitute %VAR and %{VAR} with environment variables.
     $line =~ s[%(\w+)][$ENV{$1}]eg;
@@ -106,6 +128,11 @@ if (isatty(fileno(STDOUT))) {
        }
 }
 print $status, "\n";
+
+# Now clean up the testdir.
+chdir($pretmpdir);
+rmtree($tmpdir);
+
 exit $failed ? 1 : 0;
 
 
-- 
2.5.2

++++++ 0013-modernize-build-system.patch ++++++
++++ 9834 lines (skipped)

++++++ 0014-po-regenerate-files-after-move.patch ++++++
++++ 3073 lines (skipped)

++++++ 0015-build-drop-aclincludedir-use-pkgincludedir.patch ++++++
>From 3d6d241eb1931d7f0be5a755c4c04daac0fde6bb Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Sat, 18 Jan 2014 23:11:23 -0500
Subject: [PATCH 15/34] build: drop aclincludedir, use pkgincludedir

Automake already provides a variable for
${includedir}/${PACKAGE_NAME}; use it.
---
 Makefile.am           | 3 +--
 include/Makemodule.am | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 40d6ae5..915ab2a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,10 +10,9 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/include \
        -DLOCALEDIR=\"$(localedir)\"
 
-aclincludedir = $(includedir)/acl
 sysincludedir = $(includedir)/sys
 
-aclinclude_HEADERS =
+pkginclude_HEADERS =
 sysinclude_HEADERS =
 bin_PROGRAMS =
 lib_LTLIBRARIES =
diff --git a/include/Makemodule.am b/include/Makemodule.am
index 2596f5e..37364d3 100644
--- a/include/Makemodule.am
+++ b/include/Makemodule.am
@@ -1,4 +1,4 @@
-aclinclude_HEADERS += \
+pkginclude_HEADERS += \
        include/libacl.h
 
 sysinclude_HEADERS += \
-- 
2.5.2

++++++ 0016-build-make-use-of-an-aux-dir-to-stow-away-helper-scr.patch ++++++
>From 3ae49e0a0b4bf22f137ec9a85f147815c972fdf0 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Sat, 18 Jan 2014 23:21:58 -0500
Subject: [PATCH 16/34] build: make use of an aux-dir to stow away helper
 scripts

---
 .gitignore   | 15 ++-------------
 configure.ac |  2 +-
 2 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/.gitignore b/.gitignore
index d907d15..307fbe9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,22 +17,11 @@
 /ABOUT-NLS
 /aclocal.m4
 /autom4te.cache/
-/ar-lib
-/config.cache
-/config.guess
-/config.log
-/config.rpath
-/config.status
-/config.sub
+/build-aux/
+/config.*
 /configure
-/compile
-/depcomp
-/install-sh
 /libtool
-/ltmain.sh
 /m4/
-/missing
-/test-driver
 Makefile
 Makefile.in
 stamp-h1
diff --git a/configure.ac b/configure.ac
index 1ca2a3c..27ea05d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,7 +15,7 @@
 #
 
 AC_INIT([acl], [2.2.53], [acl-de...@nongnu.org])
-AC_CONFIG_AUX_DIR([.])
+AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_HEADER([include/config.h])
 AC_PREFIX_DEFAULT(/usr)
-- 
2.5.2

++++++ 0017-build-ship-a-pkgconfig-file-for-libacl.patch ++++++
>From 90742e38c6b932d3c8182785f164c9ca282ea57e Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Sat, 18 Jan 2014 23:28:14 -0500
Subject: [PATCH 17/34] build: ship a pkgconfig file for libacl

---
 .gitignore   |  1 +
 Makefile.am  |  2 ++
 configure.ac |  1 +
 libacl.pc.in | 10 ++++++++++
 4 files changed, 14 insertions(+)
 create mode 100644 libacl.pc.in

diff --git a/.gitignore b/.gitignore
index 307fbe9..7a19031 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
 *.lo
 *.mo
 *.o
+*.pc
 .dirstamp
 .deps/
 .libs/
diff --git a/Makefile.am b/Makefile.am
index 915ab2a..47d2a4e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,8 +10,10 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/include \
        -DLOCALEDIR=\"$(localedir)\"
 
+pkgconfdir = $(libdir)/pkgconfig
 sysincludedir = $(includedir)/sys
 
+pkgconf_DATA = libacl.pc
 pkginclude_HEADERS =
 sysinclude_HEADERS =
 bin_PROGRAMS =
diff --git a/configure.ac b/configure.ac
index 27ea05d..2182e81 100644
--- a/configure.ac
+++ b/configure.ac
@@ -59,6 +59,7 @@ AC_CONFIG_COMMANDS([include/sys],
        $as_ln_s "$ac_abs_top_srcdir/include" include/sys
        ])
 AC_CONFIG_FILES([
+       libacl.pc
        Makefile
        po/Makefile.in
 ])
diff --git a/libacl.pc.in b/libacl.pc.in
new file mode 100644
index 0000000..707a887
--- /dev/null
+++ b/libacl.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name:          libacl
+Description:   A library for POSIX Access Control Lists
+Version:       @PACKAGE_VERSION@
+Cflags:                -I${includedir}
+Libs:          -L${libdir} -lacl
-- 
2.5.2

++++++ 0018-read_acl_-comments-seq-rename-line-to-lineno.patch ++++++
>From 3d615724df45f9d7b3438ce7aa2d4f1704aad7d1 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Sun, 19 Jan 2014 00:35:13 -0500
Subject: [PATCH 18/34] read_acl_{comments,seq}: rename "line" to "lineno"

The word "line" is used to refer to the content of a line, and a few
places are already using "lineno".  Change all to "lineno" so that we
can use "line" consistently.
---
 tools/parse.c   | 14 +++++++-------
 tools/parse.h   |  4 ++--
 tools/setfacl.c | 10 +++++-----
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/tools/parse.c b/tools/parse.c
index e7e6add..6f30cf5 100644
--- a/tools/parse.c
+++ b/tools/parse.c
@@ -407,7 +407,7 @@ fail:
 int
 read_acl_comments(
        FILE *file,
-       int *line,
+       int *lineno,
        char **path_p,
        uid_t *uid_p,
        gid_t *gid_p,
@@ -439,15 +439,15 @@ read_acl_comments(
                        break;
                if (c==' ' || c=='\t' || c=='\r' || c=='\n') {
                        if (c=='\n')
-                               (*line)++;
+                               (*lineno)++;
                        continue;
                }
                if (c != '#') {
                        ungetc(c, file);
                        break;
                }
-               if (line)
-                       (*line)++;
+               if (lineno)
+                       (*lineno)++;
 
                if (fgets(linebuf, sizeof(linebuf), file) == NULL)
                        break;
@@ -539,7 +539,7 @@ read_acl_seq(
        seq_t seq,
        int seq_cmd,
        int parse_mode,
-       int *line,
+       int *lineno,
        int *which)
 {
        char linebuf[1024];
@@ -552,8 +552,8 @@ read_acl_seq(
        for(;;) {
                if (fgets(linebuf, sizeof(linebuf), file) == NULL)
                        break;
-               if (line)
-                       (*line)++;
+               if (lineno)
+                       (*lineno)++;
 
                cp = linebuf;
                SKIP_WS(cp);
diff --git a/tools/parse.h b/tools/parse.h
index b2e68b4..2549753 100644
--- a/tools/parse.h
+++ b/tools/parse.h
@@ -61,7 +61,7 @@ parse_acl_seq(
 int
 read_acl_comments(
        FILE *file,
-       int *line,
+       int *lineno,
        char **path_p,
        uid_t *uid_p,
        gid_t *gid_p,
@@ -72,7 +72,7 @@ read_acl_seq(
        seq_t seq,
        int seq_cmd,
        int parse_mode,
-       int *line,
+       int *lineno,
        int *which);
 
 
diff --git a/tools/setfacl.c b/tools/setfacl.c
index f6135b7..b0ddedf 100644
--- a/tools/setfacl.c
+++ b/tools/setfacl.c
@@ -125,15 +125,15 @@ restore(
        gid_t gid;
        mode_t mask, flags;
        struct do_set_args args = { };
-       int line = 0, backup_line;
+       int lineno = 0, backup_line;
        int error, status = 0;
        int chmod_required = 0;
 
        memset(&st, 0, sizeof(st));
 
        for(;;) {
-               backup_line = line;
-               error = read_acl_comments(file, &line, &path_p, &uid, &gid,
+               backup_line = lineno;
+               error = read_acl_comments(file, &lineno, &path_p, &uid, &gid,
                                          &flags);
                if (error < 0) {
                        error = -error;
@@ -168,11 +168,11 @@ restore(
                                     SEQ_PARSE_WITH_PERM |
                                     SEQ_PARSE_DEFAULT |
                                     SEQ_PARSE_MULTI,
-                                    &line, NULL);
+                                    &lineno, NULL);
                if (error != 0) {
                        fprintf(stderr, _("%s: %s: %s in line %d\n"),
                                progname, xquote(filename, "\n\r"), 
strerror(errno),
-                               line);
+                               lineno);
                        status = 1;
                        goto getout;
                }
-- 
2.5.2

++++++ 0019-read_acl_-comments-seq-switch-to-next_line.patch ++++++
>From 34d5069ab4187aece1b711a86af705ff121ac62d Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Sun, 19 Jan 2014 01:05:11 -0500
Subject: [PATCH 19/34] read_acl_{comments,seq}: switch to next_line

Rather than use a fixed length buffer, use next_line.  This let's us
handle any arbitrary length and avoid the non-portable PATH_MAX.

Fixes bug 27388 in the acl tracker.
---
 tools/parse.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/tools/parse.c b/tools/parse.c
index 6f30cf5..df69c26 100644
--- a/tools/parse.c
+++ b/tools/parse.c
@@ -419,9 +419,7 @@ read_acl_comments(
          bytes for "# file: ". Not a good solution but for now it is the
          best I can do without too much impact on the code. [tw]
        */
-       char linebuf[(4*PATH_MAX)+9];
-       char *cp;
-       char *p;
+       char *line, *cp, *p;
        int comments_read = 0;
        
        if (path_p)
@@ -449,19 +447,20 @@ read_acl_comments(
                if (lineno)
                        (*lineno)++;
 
-               if (fgets(linebuf, sizeof(linebuf), file) == NULL)
+               line = next_line(file);
+               if (line == NULL)
                        break;
                
                comments_read = 1;
 
-               p = strrchr(linebuf, '\0');
-               while (p > linebuf &&
+               p = strrchr(line, '\0');
+               while (p > line &&
                       (*(p-1)=='\r' || *(p-1)=='\n')) {
                        p--;
                        *p = '\0';
                }
                
-               cp = linebuf;
+               cp = line;
                SKIP_WS(cp);
                if (strncmp(cp, "file:", 5) == 0) {
                        cp += 5;
@@ -542,20 +541,18 @@ read_acl_seq(
        int *lineno,
        int *which)
 {
-       char linebuf[1024];
+       char *line;
        const char *cp;
        cmd_t cmd;
 
        if (which)
                *which = -1;
 
-       for(;;) {
-               if (fgets(linebuf, sizeof(linebuf), file) == NULL)
-                       break;
+       while ((line = next_line(file))) {
                if (lineno)
                        (*lineno)++;
 
-               cp = linebuf;
+               cp = line;
                SKIP_WS(cp);
                if (*cp == '\0') {
                        if (!(parse_mode & SEQ_PARSE_MULTI))
@@ -588,7 +585,7 @@ read_acl_seq(
 
 fail:
        if (which)
-               *which = (cp - linebuf);
+               *which = (cp - line);
        return -1;
 }
 
-- 
2.5.2

++++++ 0020-telldir-return-value-and-seekdir-second-parameters-a.patch ++++++
>From f2a5f57a20ffa007abc1fa24df1f76e18b74a425 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodrig...@opensuse.org>
Date: Tue, 10 Jun 2014 14:34:50 -0400
Subject: [PATCH 20/34] telldir return value and seekdir second parameters are
 of type long

not off_t .. since a pretty long time.
---
 libmisc/walk_tree.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libmisc/walk_tree.c b/libmisc/walk_tree.c
index 2be9d47..a93a662 100644
--- a/libmisc/walk_tree.c
+++ b/libmisc/walk_tree.c
@@ -34,7 +34,7 @@ struct entry_handle {
        dev_t dev;
        ino_t ino;
        DIR *stream;
-       off_t pos;
+       long pos;
 };
 
 struct entry_handle head = {
-- 
2.5.2

++++++ 0021-mark-libmisc-funcs-as-hidden-so-they-are-not-exporte.patch ++++++
>From 809584283a3ce5b0250656faefb23a821782adbe Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Tue, 12 Aug 2014 08:32:26 -0400
Subject: [PATCH 21/34] mark libmisc funcs as hidden so they are not exported

---
 include/misc.h  | 17 +++++++++++++----
 libacl/libobj.h |  9 +--------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/include/misc.h b/include/misc.h
index a4fa70e..f5c0dae 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -18,14 +18,23 @@
 #ifndef __MISC_H
 #define __MISC_H
 
+#include "config.h"
+
 #include <stdio.h>
 
-extern int high_water_alloc(void **buf, size_t *bufsize, size_t newsize);
+/* Mark library internal functions as hidden */
+#if defined(HAVE_VISIBILITY_ATTRIBUTE)
+# define hidden __attribute__((visibility("hidden")))
+#else
+# define hidden /* hidden */
+#endif
+
+hidden int high_water_alloc(void **buf, size_t *bufsize, size_t newsize);
 
-extern const char *quote(const char *str, const char *quote_chars);
-extern char *unquote(char *str);
+hidden const char *quote(const char *str, const char *quote_chars);
+hidden char *unquote(char *str);
 
-extern char *next_line(FILE *file);
+hidden char *next_line(FILE *file);
 
 #ifdef ENABLE_NLS
 # include <libintl.h>
diff --git a/libacl/libobj.h b/libacl/libobj.h
index 5480a0e..c41d5f9 100644
--- a/libacl/libobj.h
+++ b/libacl/libobj.h
@@ -20,14 +20,7 @@
 
 #include <stdlib.h>
 
-#include "config.h"
-
-/* Mark library internal functions as hidden */
-#if defined(HAVE_VISIBILITY_ATTRIBUTE)
-# define hidden __attribute__((visibility("hidden")))
-#else
-# define hidden /* hidden */
-#endif
+#include "misc.h"
 
 /* Ugly pointer manipulation */
 
-- 
2.5.2

++++++ 0022-add-__acl_-prefixes-to-internal-symbols.patch ++++++
>From a2c4d71c2e84419a49db503ed59de4d3d1dca7dd Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Tue, 12 Aug 2014 08:37:25 -0400
Subject: [PATCH 22/34] add __acl_ prefixes to internal symbols

When static linking libacl, people sometimes run into symbol collisions
because their own code defines symbols like "quote".  So for acl internal
symbols, use an __acl_ prefix.
---
 exports                    | 12 ++----------
 include/misc.h             |  8 ++++----
 libacl/__acl_to_any_text.c |  4 ++--
 libacl/acl_from_text.c     |  4 ++--
 libmisc/high_water_alloc.c |  2 +-
 libmisc/next_line.c        |  6 +++---
 libmisc/quote.c            |  4 ++--
 libmisc/unquote.c          |  2 +-
 tools/getfacl.c            |  4 ++--
 tools/parse.c              | 14 +++++++-------
 tools/setfacl.c            |  4 ++--
 11 files changed, 28 insertions(+), 36 deletions(-)

diff --git a/exports b/exports
index 7d8e69e..bf15d84 100644
--- a/exports
+++ b/exports
@@ -59,22 +59,14 @@ ACL_1.0 {
        acl_to_any_text;
 
     local:
-       # Library internal stuff
+       # Library internal stuff
        __new_var_obj_p;
        __new_obj_p_here;
        __free_obj_p;
        __check_obj_p;
        __ext2int_and_check;
-       __acl_reorder_entry_obj_p;
-       __acl_reorder_obj_p;
-       __acl_init_obj;
-       __acl_create_entry_obj;
-       __acl_free_acl_obj;
-       __acl_to_any_text;
+       __acl_*;
        __apply_mask_to_mode;
-
-       quote;
-       unquote;
 };
 
 ACL_1.1 {
diff --git a/include/misc.h b/include/misc.h
index f5c0dae..24b65d2 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -29,12 +29,12 @@
 # define hidden /* hidden */
 #endif
 
-hidden int high_water_alloc(void **buf, size_t *bufsize, size_t newsize);
+hidden int __acl_high_water_alloc(void **buf, size_t *bufsize, size_t newsize);
 
-hidden const char *quote(const char *str, const char *quote_chars);
-hidden char *unquote(char *str);
+hidden const char *__acl_quote(const char *str, const char *quote_chars);
+hidden char *__acl_unquote(char *str);
 
-hidden char *next_line(FILE *file);
+hidden char *__acl_next_line(FILE *file);
 
 #ifdef ENABLE_NLS
 # include <libintl.h>
diff --git a/libacl/__acl_to_any_text.c b/libacl/__acl_to_any_text.c
index 1d10e81..de3925e 100644
--- a/libacl/__acl_to_any_text.c
+++ b/libacl/__acl_to_any_text.c
@@ -159,7 +159,7 @@ acl_entry_to_any_str(const acl_entry_t entry_d, char 
*text_p, ssize_t size,
                                if (options & TEXT_NUMERIC_IDS)
                                        str = NULL;
                                else
-                                       str = quote(user_name(
+                                       str = __acl_quote(user_name(
                                                entry_obj_p->eid.qid), ":, 
\t\n\r");
                                if (str != NULL) {
                                        strncpy(text_p, str, size);
@@ -182,7 +182,7 @@ acl_entry_to_any_str(const acl_entry_t entry_d, char 
*text_p, ssize_t size,
                                if (options & TEXT_NUMERIC_IDS)
                                        str = NULL;
                                else
-                                       str = quote(group_name(
+                                       str = __acl_quote(group_name(
                                                entry_obj_p->eid.qid), ":, 
\t\n\r");
                                if (str != NULL) {
                                        strncpy(text_p, str, size);
diff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c
index c08bd3b..83a4d21 100644
--- a/libacl/acl_from_text.c
+++ b/libacl/acl_from_text.c
@@ -212,7 +212,7 @@ parse_acl_entry(const char **text_p, acl_t *acl_p)
                        str = get_token(text_p);
                        if (str) {
                                entry_obj.etag = ACL_USER;
-                               error = get_uid(unquote(str),
+                               error = get_uid(__acl_unquote(str),
                                                &entry_obj.eid.qid);
                                free(str);
                                if (error) {
@@ -231,7 +231,7 @@ parse_acl_entry(const char **text_p, acl_t *acl_p)
                        str = get_token(text_p);
                        if (str) {
                                entry_obj.etag = ACL_GROUP;
-                               error = get_gid(unquote(str),
+                               error = get_gid(__acl_unquote(str),
                                                &entry_obj.eid.qid);
                                free(str);
                                if (error) {
diff --git a/libmisc/high_water_alloc.c b/libmisc/high_water_alloc.c
index c127dc1..951f4bb 100644
--- a/libmisc/high_water_alloc.c
+++ b/libmisc/high_water_alloc.c
@@ -21,7 +21,7 @@
 #include <stdlib.h>
 #include "misc.h"
 
-int high_water_alloc(void **buf, size_t *bufsize, size_t newsize)
+int __acl_high_water_alloc(void **buf, size_t *bufsize, size_t newsize)
 {
 #define CHUNK_SIZE     256
        /*
diff --git a/libmisc/next_line.c b/libmisc/next_line.c
index 0566d7a..126a364 100644
--- a/libmisc/next_line.c
+++ b/libmisc/next_line.c
@@ -23,7 +23,7 @@
 
 #define LINE_SIZE getpagesize()
 
-char *next_line(FILE *file)
+char *__acl_next_line(FILE *file)
 {
        static char *line;
        static size_t line_size;
@@ -31,7 +31,7 @@ char *next_line(FILE *file)
        int eol = 0;
 
        if (!line) {
-               if (high_water_alloc((void **)&line, &line_size, LINE_SIZE))
+               if (__acl_high_water_alloc((void **)&line, &line_size, 
LINE_SIZE))
                        return NULL;
        }
        c = line;
@@ -47,7 +47,7 @@ char *next_line(FILE *file)
                if (feof(file))
                        break;
                if (!eol) {
-                       if (high_water_alloc((void **)&line, &line_size,
+                       if (__acl_high_water_alloc((void **)&line, &line_size,
                                             2 * line_size))
                                return NULL;
                        c = strrchr(line, '\0');
diff --git a/libmisc/quote.c b/libmisc/quote.c
index bf8f9eb..a28800c 100644
--- a/libmisc/quote.c
+++ b/libmisc/quote.c
@@ -23,7 +23,7 @@
 #include <string.h>
 #include "misc.h"
 
-const char *quote(const char *str, const char *quote_chars)
+const char *__acl_quote(const char *str, const char *quote_chars)
 {
        static char *quoted_str;
        static size_t quoted_str_len;
@@ -40,7 +40,7 @@ const char *quote(const char *str, const char *quote_chars)
        if (nonpr == 0)
                return str;
 
-       if (high_water_alloc((void **)&quoted_str, &quoted_str_len,
+       if (__acl_high_water_alloc((void **)&quoted_str, &quoted_str_len,
                             (s - (unsigned char *)str) + nonpr * 3 + 1))
                return NULL;
        for (s = (unsigned char *)str, q = quoted_str; *s != '\0'; s++) {
diff --git a/libmisc/unquote.c b/libmisc/unquote.c
index bffebf9..4f4ce7c 100644
--- a/libmisc/unquote.c
+++ b/libmisc/unquote.c
@@ -22,7 +22,7 @@
 #include <ctype.h>
 #include "misc.h"
 
-char *unquote(char *str)
+char *__acl_unquote(char *str)
 {
        unsigned char *s, *t;
 
diff --git a/tools/getfacl.c b/tools/getfacl.c
index 22cc1c7..679affa 100644
--- a/tools/getfacl.c
+++ b/tools/getfacl.c
@@ -89,7 +89,7 @@ int opt_numeric;  /* don't convert id's to symbolic names */
 
 static const char *xquote(const char *str, const char *quote_chars)
 {
-       const char *q = quote(str, quote_chars);
+       const char *q = __acl_quote(str, quote_chars);
        if (q == NULL) {
                fprintf(stderr, "%s: %s\n", progname, strerror(errno));
                exit(1);
@@ -717,7 +717,7 @@ int main(int argc, char *argv[])
        do {
                if (optind == argc ||
                    strcmp(argv[optind], "-") == 0) {
-                       while ((line = next_line(stdin)) != NULL) {
+                       while ((line = __acl_next_line(stdin)) != NULL) {
                                if (*line == '\0')
                                        continue;
 
diff --git a/tools/parse.c b/tools/parse.c
index df69c26..823bfeb 100644
--- a/tools/parse.c
+++ b/tools/parse.c
@@ -226,7 +226,7 @@ user_entry:
                        str = get_token(text_p);
                        if (str) {
                                cmd->c_tag = ACL_USER;
-                               error = get_uid(unquote(str), &cmd->c_id);
+                               error = get_uid(__acl_unquote(str), &cmd->c_id);
                                free(str);
                                if (error) {
                                        *text_p = backup;
@@ -245,7 +245,7 @@ user_entry:
                        str = get_token(text_p);
                        if (str) {
                                cmd->c_tag = ACL_GROUP;
-                               error = get_gid(unquote(str), &cmd->c_id); 
+                               error = get_gid(__acl_unquote(str), &cmd->c_id);
                                free(str);
                                if (error) {
                                        *text_p = backup;
@@ -447,7 +447,7 @@ read_acl_comments(
                if (lineno)
                        (*lineno)++;
 
-               line = next_line(file);
+               line = __acl_next_line(file);
                if (line == NULL)
                        break;
                
@@ -465,7 +465,7 @@ read_acl_comments(
                if (strncmp(cp, "file:", 5) == 0) {
                        cp += 5;
                        SKIP_WS(cp);
-                       cp = unquote(cp);
+                       cp = __acl_unquote(cp);
                        
                        if (path_p) {
                                if (*path_p)
@@ -482,7 +482,7 @@ read_acl_comments(
                        if (uid_p) {
                                if (*uid_p != ACL_UNDEFINED_ID)
                                        goto fail;
-                               if (get_uid(unquote(cp), uid_p) != 0)
+                               if (get_uid(__acl_unquote(cp), uid_p) != 0)
                                        continue;
                        }
                } else if (strncmp(cp, "group:", 6) == 0) {
@@ -492,7 +492,7 @@ read_acl_comments(
                        if (gid_p) {
                                if (*gid_p != ACL_UNDEFINED_ID)
                                        goto fail;
-                               if (get_gid(unquote(cp), gid_p) != 0)
+                               if (get_gid(__acl_unquote(cp), gid_p) != 0)
                                        continue;
                        }
                } else if (strncmp(cp, "flags:", 6) == 0) {
@@ -548,7 +548,7 @@ read_acl_seq(
        if (which)
                *which = -1;
 
-       while ((line = next_line(file))) {
+       while ((line = __acl_next_line(file))) {
                if (lineno)
                        (*lineno)++;
 
diff --git a/tools/setfacl.c b/tools/setfacl.c
index b0ddedf..880bd1e 100644
--- a/tools/setfacl.c
+++ b/tools/setfacl.c
@@ -91,7 +91,7 @@ int promote_warning;
 
 static const char *xquote(const char *str, const char *quote_chars)
 {
-       const char *q = quote(str, quote_chars);
+       const char *q = __acl_quote(str, quote_chars);
        if (q == NULL) {
                fprintf(stderr, "%s: %s\n", progname, strerror(errno));
                exit(1);
@@ -310,7 +310,7 @@ int next_file(const char *arg, seq_t seq)
        args.seq = seq;
 
        if (strcmp(arg, "-") == 0) {
-               while ((line = next_line(stdin)))
+               while ((line = __acl_next_line(stdin)))
                        errors = walk_tree(line, walk_flags, 0, do_set, &args);
                if (!feof(stdin)) {
                        fprintf(stderr, _("%s: Standard input: %s\n"),
-- 
2.5.2

++++++ 0023-cp.test-Check-permissions-of-the-right-file.patch ++++++
>From 62ce6354ef5a8eb5644908748f79c8cd18474d4c Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <agr...@linbit.com>
Date: Wed, 13 Aug 2014 01:25:12 +0200
Subject: [PATCH 23/34] cp.test: Check permissions of the right file

After "cp -p", the cp.test case was checking the permissions
of the source file instead of the target file.

Reported by: Nic <nic.he...@versity.com>
---
 test/cp.test | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/cp.test b/test/cp.test
index a927195..449e2eb 100644
--- a/test/cp.test
+++ b/test/cp.test
@@ -14,7 +14,7 @@ The cp utility should only copy ACLs if `-p' is given.
        
        $ rm g
        $ cp -p f g
-       $ ls -l f | awk -- '{ print $1 }'
+       $ ls -l g | awk -- '{ print $1 }'
        > -rw-rw-r--+
        
        $ mkdir h
-- 
2.5.2

++++++ 0024-libacl-acl_set_file-Remove-unnecesary-racy-check.patch ++++++
>From 124e431e677f5ed3c45f71105a6770ceb96199dd Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <andreas.gruenbac...@gmail.com>
Date: Mon, 13 Apr 2015 11:56:05 +0200
Subject: [PATCH 24/34] libacl: acl_set_file: Remove unnecesary racy check

Only directories can have default acls.  This is checked in the kernel, and
unnecessarily also in acl_set_file. There is a window between checking the file
type and setting the acl, so the check in acl_set_file isn't even safe.  Remove
it.

Reported by Lennart Poettering <lpoet...@redhat.com>.
---
 libacl/acl_set_file.c | 13 -------------
 1 file changed, 13 deletions(-)

diff --git a/libacl/acl_set_file.c b/libacl/acl_set_file.c
index 6821851..a7e368f 100644
--- a/libacl/acl_set_file.c
+++ b/libacl/acl_set_file.c
@@ -54,19 +54,6 @@ acl_set_file(const char *path_p, acl_type_t type, acl_t acl)
                        return -1;
        }
 
-       if (type == ACL_TYPE_DEFAULT) {
-               struct stat st;
-
-               if (stat(path_p, &st) != 0)
-                       return -1;
-
-               /* Only directories may have default ACLs. */
-               if (!S_ISDIR(st.st_mode)) {
-                       errno = EACCES;
-                       return -1;
-               }
-       }
-
        ext_acl_p = __acl_to_xattr(acl_obj_p, &size);
        if (!ext_acl_p)
                return -1;
-- 
2.5.2

++++++ 0025-fix-compilation-with-latest-xattr-git.patch ++++++
>From 79f563779b9b9ba89cc2352d70e3cdf27acff513 Mon Sep 17 00:00:00 2001
From: Brice De Bruyne <bric...@gmail.com>
Date: Mon, 27 Apr 2015 14:57:56 +0200
Subject: [PATCH 25/34] fix compilation with latest xattr git

The attr package has <attr/xattr.h> removed, but acl has not been adapted yet.

I took the liberty to cook up this patch that includes <sys/xattr.h> instead of
<attr/xattr.h> in affected c files and I added errno.h plus a define of ENOATTR
to c files where needed.

I also removed the AC_PACKAGE_NEED_ATTR_XATTR_H definition from
package_attrdev.m4, and changed configure to skip this test.

Further changes by Andreas: Move the ENOATTR check into libacl.h.
---
 configure.ac                        |  1 -
 libacl/__acl_extended_file.c        |  3 +--
 libacl/acl_delete_def_file.c        |  4 ++--
 libacl/acl_extended_fd.c            |  3 +--
 libacl/acl_extended_file.c          |  2 +-
 libacl/acl_extended_file_nofollow.c |  2 +-
 libacl/acl_get_fd.c                 |  3 +--
 libacl/acl_get_file.c               |  3 +--
 libacl/acl_set_fd.c                 |  2 +-
 libacl/acl_set_file.c               |  2 +-
 libacl/libacl.h                     |  5 +++++
 m4/package_attrdev.m4               | 11 -----------
 12 files changed, 15 insertions(+), 26 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2182e81..cd3c680 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,7 +44,6 @@ dnl Automatically increment the revision for every release.
 LT_REVISION=$(echo "${PACKAGE_VERSION}" | tr -d .)
 AC_SUBST(LT_REVISION)
 
-AC_PACKAGE_NEED_ATTR_XATTR_H
 AC_PACKAGE_NEED_ATTR_ERROR_H
 AC_PACKAGE_NEED_GETXATTR_LIBATTR
 
diff --git a/libacl/__acl_extended_file.c b/libacl/__acl_extended_file.c
index 3e45abd..c81dc8f 100644
--- a/libacl/__acl_extended_file.c
+++ b/libacl/__acl_extended_file.c
@@ -20,14 +20,13 @@
 */
 
 #include <unistd.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "libacl.h"
 
 #include "byteorder.h"
 #include "acl_ea.h"
 #include "__acl_extended_file.h"
 
-
 int
 __acl_extended_file(const char *path_p,
                    ssize_t (*fun)(const char *, const char *,
diff --git a/libacl/acl_delete_def_file.c b/libacl/acl_delete_def_file.c
index fae4460..845940c 100644
--- a/libacl/acl_delete_def_file.c
+++ b/libacl/acl_delete_def_file.c
@@ -20,11 +20,11 @@
 */
 
 #include <sys/types.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "byteorder.h"
 #include "acl_ea.h"
 #include "config.h"
-
+#include "libacl.h"
 
 /* 23.4.8 */
 int
diff --git a/libacl/acl_extended_fd.c b/libacl/acl_extended_fd.c
index f19ad7b..bbf9055 100644
--- a/libacl/acl_extended_fd.c
+++ b/libacl/acl_extended_fd.c
@@ -20,13 +20,12 @@
 */
 
 #include <unistd.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "libacl.h"
 
 #include "byteorder.h"
 #include "acl_ea.h"
 
-
 int
 acl_extended_fd(int fd)
 {
diff --git a/libacl/acl_extended_file.c b/libacl/acl_extended_file.c
index f417784..87f8e6e 100644
--- a/libacl/acl_extended_file.c
+++ b/libacl/acl_extended_file.c
@@ -20,7 +20,7 @@
 */
 
 #include <unistd.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "libacl.h"
 
 #include "__acl_extended_file.h"
diff --git a/libacl/acl_extended_file_nofollow.c 
b/libacl/acl_extended_file_nofollow.c
index c253e4d..a15b076 100644
--- a/libacl/acl_extended_file_nofollow.c
+++ b/libacl/acl_extended_file_nofollow.c
@@ -20,7 +20,7 @@
 */
 
 #include <unistd.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "libacl.h"
 
 #include "__acl_extended_file.h"
diff --git a/libacl/acl_get_fd.c b/libacl/acl_get_fd.c
index f2525ef..15e3880 100644
--- a/libacl/acl_get_fd.c
+++ b/libacl/acl_get_fd.c
@@ -23,7 +23,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <stdio.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include <acl/libacl.h>
 #include "libacl.h"
 #include "__acl_from_xattr.h"
@@ -31,7 +31,6 @@
 #include "byteorder.h"
 #include "acl_ea.h"
 
-
 /* 23.4.15 */
 acl_t
 acl_get_fd(int fd)
diff --git a/libacl/acl_get_file.c b/libacl/acl_get_file.c
index 110ef2e..d3131bc 100644
--- a/libacl/acl_get_file.c
+++ b/libacl/acl_get_file.c
@@ -23,7 +23,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <stdio.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include <acl/libacl.h>
 #include "libacl.h"
 #include "__acl_from_xattr.h"
@@ -31,7 +31,6 @@
 #include "byteorder.h"
 #include "acl_ea.h"
 
-
 /* 23.4.16 */
 acl_t
 acl_get_file(const char *path_p, acl_type_t type)
diff --git a/libacl/acl_set_fd.c b/libacl/acl_set_fd.c
index e6413ad..38dcd4a 100644
--- a/libacl/acl_set_fd.c
+++ b/libacl/acl_set_fd.c
@@ -20,7 +20,7 @@
 */
 
 #include <unistd.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "libacl.h"
 #include "__acl_to_xattr.h"
 
diff --git a/libacl/acl_set_file.c b/libacl/acl_set_file.c
index a7e368f..c234b4a 100644
--- a/libacl/acl_set_file.c
+++ b/libacl/acl_set_file.c
@@ -22,7 +22,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
 #include "libacl.h"
 #include "__acl_to_xattr.h"
 
diff --git a/libacl/libacl.h b/libacl/libacl.h
index e79575d..08ba905 100644
--- a/libacl/libacl.h
+++ b/libacl/libacl.h
@@ -17,8 +17,13 @@
 
 #include <errno.h>
 #include <sys/acl.h>
+#include <errno.h>
 #include "libobj.h"
 
+#ifndef ENOATTR
+# define ENOATTR ENODATA
+#endif
+
 typedef unsigned int permset_t;
 
 #define ACL_PERM_NONE          (0x0000)
diff --git a/m4/package_attrdev.m4 b/m4/package_attrdev.m4
index 92c9135..1891bb2 100644
--- a/m4/package_attrdev.m4
+++ b/m4/package_attrdev.m4
@@ -12,17 +12,6 @@ dnl GNU General Public License for more details.
 dnl
 dnl You should have received a copy of the GNU General Public License
 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
-AC_DEFUN([AC_PACKAGE_NEED_ATTR_XATTR_H],
-  [ AC_CHECK_HEADERS([attr/xattr.h])
-    if test "$ac_cv_header_attr_xattr_h" != "yes"; then
-        echo
-        echo 'FATAL ERROR: attr/xattr.h does not exist.'
-        echo 'Install the extended attributes (attr) development package.'
-        echo 'Alternatively, run "make install-dev" from the attr source.'
-        exit 1
-    fi
-  ])
-
 AC_DEFUN([AC_PACKAGE_NEED_ATTR_ERROR_H],
   [ AC_CHECK_HEADERS([attr/error_context.h])
     if test "$ac_cv_header_attr_error_context_h" != "yes"; then
-- 
2.5.2

++++++ 0026-getfacl-Fix-memory-leak.patch ++++++
>From 5d8de21bef5ee62ebca93ae81515b6065626e559 Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <andreas.gruenbac...@gmail.com>
Date: Thu, 16 Jul 2015 14:04:20 +0200
Subject: [PATCH 26/34] getfacl: Fix memory leak

Reported by Andreas Stieger <astie...@suse.com>
(https://bugzilla.suse.com/show_bug.cgi?id=929108): Fix a memory leak in
getfacl (allocated acl not being freed).
---
 tools/getfacl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/getfacl.c b/tools/getfacl.c
index 679affa..e44b572 100644
--- a/tools/getfacl.c
+++ b/tools/getfacl.c
@@ -477,7 +477,7 @@ int do_print(const char *path_p, const struct stat *st, int 
walk_flags, void *un
 
        if (opt_skip_base &&
            (!acl || acl_equiv_mode(acl, NULL) == 0) && !default_acl)
-               return 0;
+               goto cleanup;
 
        if (opt_print_acl && opt_print_default_acl)
                default_prefix = "default:";
-- 
2.5.2

++++++ 0027-Fix-the-display-block-nesting-in-acl.5.patch ++++++
>From 226e93f4d17b68f4cca02fb7b34f22fd9a7ab237 Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <andreas.gruenbac...@gmail.com>
Date: Wed, 26 Aug 2015 12:16:38 +0200
Subject: [PATCH 27/34] Fix the display block nesting in acl.5

---
 man/man5/acl.5 | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/man/man5/acl.5 b/man/man5/acl.5
index 1e44a31..c045726 100644
--- a/man/man5/acl.5
+++ b/man/man5/acl.5
@@ -217,12 +217,12 @@ access is denied.
 .Sy if
 the ACL_GROUP_OBJ entry contains the requested permissions,
 access is granted,
-.Ed
 .Pp
 .Sy else
 access is denied.
-.Pp
 .Ed
+.Ed
+.Pp
 .It
 .Sy else if
 the ACL_OTHER entry contains the requested permissions, access is granted.
-- 
2.5.2

++++++ 0028-setfacl-man-page-Minor-wording-improvements.patch ++++++
>From f05131d8d16751dbb586058fabc8cb404dec23a2 Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <andreas.gruenbac...@gmail.com>
Date: Tue, 1 Sep 2015 22:37:17 +0200
Subject: [PATCH 28/34] setfacl man page: Minor wording improvements

---
 man/man1/setfacl.1 | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/man/man1/setfacl.1 b/man/man1/setfacl.1
index 0c7c046..a73d122 100644
--- a/man/man1/setfacl.1
+++ b/man/man1/setfacl.1
@@ -37,17 +37,17 @@ This utility sets Access Control Lists (ACLs) of files and 
directories.
 On the command line, a sequence of commands is followed by a sequence of
 files (which in turn can be followed by another sequence of commands, ...).
 
-The options
-.I \-m,
+The
+.I \-m
 and
 .I \-x
-expect an ACL on the command line. Multiple ACL entries are separated
-by comma characters (`,'). The options
-.I \-M,
+options expect an ACL on the command line. Multiple ACL entries are separated
+by comma characters (`,'). The
+.I \-M
 and
 .I \-X
-read an ACL from a file or from standard input. The ACL entry format is 
described in Section
-ACL ENTRIES.
+options read an ACL from a file or from standard input. The ACL entry format is
+described in Section ACL ENTRIES.
 
 The
 .IR "\-\-set" " and " "\-\-set-file"
@@ -68,7 +68,7 @@ does not exist.  Only ACL entries without the
 field are accepted as parameters, unless POSIXLY_CORRECT is defined.
 
 When reading from files using the 
-.I \-M,
+.I \-M
 and
 .IR \-X
 options, setfacl accepts the output getfacl produces.
-- 
2.5.2

++++++ 0029-getfacl-Fix-minor-resource-leak.patch ++++++
>From 519e3932898baba1e7eeb0d9d89acee796da61f5 Mon Sep 17 00:00:00 2001
From: Andreas Gruenbacher <agrue...@redhat.com>
Date: Tue, 8 Sep 2015 14:23:58 +0200
Subject: [PATCH 29/34] getfacl: Fix minor resource leak

The return value of of acl_get_qualifier needs to be acl_freed.

Reported by Jaska Uimonen <jaska.uimo...@helsinki.fi>.
---
 tools/getfacl.c | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/tools/getfacl.c b/tools/getfacl.c
index e44b572..3d8f1b8 100644
--- a/tools/getfacl.c
+++ b/tools/getfacl.c
@@ -125,7 +125,7 @@ struct name_list *get_list(const struct stat *st, acl_t acl)
                return NULL;
        while (ret > 0) {
                acl_tag_t e_type;
-               const id_t *id_p;
+               id_t *id_p;
                const char *name = "";
                int len;
 
@@ -137,8 +137,10 @@ struct name_list *get_list(const struct stat *st, acl_t 
acl)
 
                        case ACL_USER:
                                id_p = acl_get_qualifier(ent);
-                               if (id_p != NULL)
+                               if (id_p != NULL) {
                                        name = user_name(*id_p, opt_numeric);
+                                       acl_free(id_p);
+                               }
                                break;
 
                        case ACL_GROUP_OBJ:
@@ -147,8 +149,10 @@ struct name_list *get_list(const struct stat *st, acl_t 
acl)
 
                        case ACL_GROUP:
                                id_p = acl_get_qualifier(ent);
-                               if (id_p != NULL)
+                               if (id_p != NULL) {
                                        name = group_name(*id_p, opt_numeric);
+                                       acl_free(id_p);
+                               }
                                break;
                }
                name = xquote(name, "\t\n\r");
@@ -378,19 +382,24 @@ int do_show(FILE *stream, const char *path_p, const 
struct stat *st,
                        continue;
                } else {
                        if (acl_tag == ACL_USER || acl_tag == ACL_GROUP) {
-                               id_t  *acl_id_p = NULL, *dacl_id_p = NULL;
-                               if (acl_ent)
-                                       acl_id_p = acl_get_qualifier(acl_ent);
-                               if (dacl_ent)
-                                       dacl_id_p = acl_get_qualifier(dacl_ent);
+                               int id_cmp = 0;
+
+                               if (acl_ent && dacl_ent) {
+                                       id_t *acl_id_p = 
acl_get_qualifier(acl_ent);
+                                       id_t *dacl_id_p = 
acl_get_qualifier(dacl_ent);
+
+                                       id_cmp = (*acl_id_p > *dacl_id_p) -
+                                                (*acl_id_p < *dacl_id_p);
+                                       acl_free(acl_id_p);
+                                       acl_free(dacl_id_p);
+                               }
                                
-                               if (acl && (!dacl || *acl_id_p < *dacl_id_p)) {
+                               if (acl && (!dacl || id_cmp < 0)) {
                                        show_line(stream, &acl_names, acl,
                                                  &acl_ent, acl_mask,
                                                  NULL, NULL, NULL, NULL);
                                        continue;
-                               } else if (dacl &&
-                                       (!acl || *dacl_id_p < *acl_id_p)) {
+                               } else if (dacl && (!acl || id_cmp > 0)) {
                                        show_line(stream, NULL, NULL, NULL,
                                                  NULL, &dacl_names, dacl,
                                                  &dacl_ent, dacl_mask);
-- 
2.5.2

++++++ 0030-Do-not-export-symbols-that-are-not-supposed-to-be-ex.patch ++++++
>From fc027ffa5eefe6d563328059348a8929c4789c17 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <l...@altlinux.org>
Date: Tue, 15 Sep 2015 19:47:54 +0300
Subject: [PATCH 30/34] Do not export symbols that are not supposed to be
 exported

As all symbols that are part of public interface are explicitly exported
with corresponding versioning, mark all remaining symbols as local.
---
 exports | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/exports b/exports
index bf15d84..830a2b9 100644
--- a/exports
+++ b/exports
@@ -60,13 +60,7 @@ ACL_1.0 {
 
     local:
        # Library internal stuff
-       __new_var_obj_p;
-       __new_obj_p_here;
-       __free_obj_p;
-       __check_obj_p;
-       __ext2int_and_check;
-       __acl_*;
-       __apply_mask_to_mode;
+       *;
 };
 
 ACL_1.1 {
-- 
2.5.2

++++++ 0031-walk_tree-mark-internal-variables-as-static.patch ++++++
>From 4a5140636e487aeb1a8a43dbecae3ab395d31392 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <l...@altlinux.org>
Date: Tue, 15 Sep 2015 23:03:08 +0300
Subject: [PATCH 31/34] walk_tree: mark internal variables as static

walk_tree.c internal variables should not be exposed to libmisc users.
---
 libmisc/walk_tree.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libmisc/walk_tree.c b/libmisc/walk_tree.c
index a93a662..d753dc7 100644
--- a/libmisc/walk_tree.c
+++ b/libmisc/walk_tree.c
@@ -37,13 +37,13 @@ struct entry_handle {
        long pos;
 };
 
-struct entry_handle head = {
+static struct entry_handle head = {
        .next = &head,
        .prev = &head,
        /* The other fields are unused. */
 };
-struct entry_handle *closed = &head;
-unsigned int num_dir_handles;
+static struct entry_handle *closed = &head;
+static unsigned int num_dir_handles;
 
 static int walk_tree_visited(dev_t dev, ino_t ino)
 {
-- 
2.5.2

++++++ 0032-ignore-configure.lineno.patch ++++++
>From fa03d2475682e4ab345c9a63bd6b88117bd45f0f Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Mon, 21 Sep 2015 17:07:11 -0400
Subject: [PATCH 32/34] ignore configure.lineno

Newer autoconf sometimes generates this file.
---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index 7a19031..71d529c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,6 +21,7 @@
 /build-aux/
 /config.*
 /configure
+/configure.lineno
 /libtool
 /m4/
 Makefile
-- 
2.5.2

++++++ acl-2.2.52-tests.patch ++++++
--- /var/tmp/diff_new_pack.La8A80/_old  2016-02-08 09:46:57.000000000 +0100
+++ /var/tmp/diff_new_pack.La8A80/_new  2016-02-08 09:46:57.000000000 +0100
@@ -76,105 +76,3 @@
 1.7.1
 
 
-From 3720a8a3cf55e295eca55457fad8177f6277f620 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <kdu...@redhat.com>
-Date: Mon, 20 May 2013 15:00:47 +0200
-Subject: [PATCH 2/2] test: fix insufficient quoting of '\'
-
-This is a follow-up to 7f2c91b8369242a8dbc2b304a5b71b2a85f5b855, which
-caused sbits-restore.test to fail in the following way in case SELinux
-was disabled:
-
-*** sbits-restore.test ***
-[3] $ umask 022 -- ok
-[4] $ mkdir d -- ok
-[5] $ touch d/g -- ok
-[6] $ touch d/u -- ok
-[7] $ chmod u+s d/u -- ok
-[8] $ chmod g+s d/g -- ok
-[9] $ chmod +t d -- ok
-[10] $ getfacl -R d > d.acl -- ok
-[11] $ rm -R d -- ok
-[12] $ mkdir d -- ok
-[13] $ touch d/g -- ok
-[14] $ touch d/u -- ok
-[15] $ setfacl --restore d.acl -- ok
-[16] $ ls -dl d | awk '{print $1}' | sed 's/.$//g' -- failed
-drwxr-xr-                             != drwxr-xr-t
-[18] $ ls -dl d/u | awk '{print $1}' | sed 's/.$//g' -- failed
--rwSr--r-                             != -rwSr--r--
-[20] $ ls -dl d/g | awk '{print $1}' | sed 's/.$//g' -- failed
--rw-r-Sr-                             != -rw-r-Sr--
-[22] $ rm -Rf d -- ok
-17 commands (14 passed, 3 failed)
----
- test/cp.test            |    2 +-
- test/misc.test          |    6 +++---
- test/sbits-restore.test |    6 +++---
- 3 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/test/cp.test b/test/cp.test
-index 0867f63..a927195 100644
---- a/test/cp.test
-+++ b/test/cp.test
-@@ -9,7 +9,7 @@ The cp utility should only copy ACLs if `-p' is given.
-       > -rw-rw-r--+
-       
-       $ cp f g
--      $ ls -l g | awk -- '{ print $1 }' | sed 's/\.$//g'
-+      $ ls -l g | awk -- '{ print $1 }' | sed 's/\\.$//g'
-       > -rw-r--r--
-       
-       $ rm g
-diff --git a/test/misc.test b/test/misc.test
-index 6e98053..29372b7 100644
---- a/test/misc.test
-+++ b/test/misc.test
-@@ -254,7 +254,7 @@ Add some users and groups
- Symlink in directory with default ACL?
-        
-       $ ln -s d d/l
--      $ ls -dl d/l | awk '{print $1}' | sed 's/\.$//g'
-+      $ ls -dl d/l | awk '{print $1}' | sed 's/\\.$//g'
-       > lrwxrwxrwx
- 
-       $ ls -dl -L d/l | awk '{print $1}'
-@@ -343,7 +343,7 @@ Remove the default ACL
- Reset to base entries
-        
-       $ setfacl -b d
--      $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
-+      $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
-       > drwxr-x---
- 
-       $ getfacl --omit-header d
-@@ -355,7 +355,7 @@ Reset to base entries
- Now, chmod should change the group_obj entry
-        
-       $ chmod 775 d
--      $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
-+      $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
-       > drwxrwxr-x
-       
-       $ getfacl --omit-header d
-diff --git a/test/sbits-restore.test b/test/sbits-restore.test
-index de21340..5899b0a 100644
---- a/test/sbits-restore.test
-+++ b/test/sbits-restore.test
-@@ -13,10 +13,10 @@ Ensure setting of SUID/SGID/sticky via --restore works
-       $ touch d/g
-       $ touch d/u
-       $ setfacl --restore d.acl
--      $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
-+      $ ls -dl d | awk '{print $1}' | sed 's/\\.$//g'
-       > drwxr-xr-t
--      $ ls -dl d/u | awk '{print $1}' | sed 's/\.$//g'
-+      $ ls -dl d/u | awk '{print $1}' | sed 's/\\.$//g'
-       > -rwSr--r--
--      $ ls -dl d/g | awk '{print $1}' | sed 's/\.$//g'
-+      $ ls -dl d/g | awk '{print $1}' | sed 's/\\.$//g'
-       > -rw-r-Sr--
-       $ rm -Rf d
--- 
-1.7.1
-

++++++ acl-2.2.52.src.tar.gz -> acl-2.2.52.tar.bz2 ++++++
++++ 37198 lines of diff (skipped)


Reply via email to