SHA256
3
0
forked from pool/attr
OBS User unknown 2006-12-18 23:15:07 +00:00 committed by Git OBS Bridge
commit ab64523d89
11 changed files with 991 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

3
attr-2.4.28.src.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1ff1c464693c5e756b8047412f49e84c38c6385aa5b4e1230aafc81ea21f59e7
size 93657

248
attr.changes Normal file
View File

@ -0,0 +1,248 @@
-------------------------------------------------------------------
Mon Oct 16 17:55:45 CEST 2006 - agruen@suse.de
- Ignore Beagle index data when copying files.
-------------------------------------------------------------------
Wed Oct 4 15:26:41 CEST 2006 - agruen@suse.de
- /etc/xattr.conf: Allow to configure which attributes to skip
when copying, and which attributes contain file permissions.
-------------------------------------------------------------------
Sat Mar 18 09:12:03 CET 2006 - aj@suse.de
- Remove .la package that was introduced in last change and breaks
build of many packages.
-------------------------------------------------------------------
Fri Mar 17 19:09:00 CET 2006 - agruen@suse.de
- Fix symlinks in the -devel package (149945, Nathan Scott).
-------------------------------------------------------------------
Tue Mar 7 15:34:22 CET 2006 - agruen@suse.de
- xfs-cmds-25263a-fix-list_attr-segfault: Fix a possible segfault
in the attr_list compat function (155746).
-------------------------------------------------------------------
Sat Feb 18 18:37:35 CET 2006 - agruen@suse.de
- Add xfs-cmds-25211a-skip-DMF-attributes-on-copy-also patch from
SGI (151782).
-------------------------------------------------------------------
Wed Jan 25 21:29:56 CET 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
-------------------------------------------------------------------
Fri Jan 13 19:20:08 CET 2006 - mjancar@suse.cz
- update to 2.4.28
* Implement the IRIX list_attr interfaces
-------------------------------------------------------------------
Wed Nov 2 15:17:07 CET 2005 - schwab@suse.de
- Use RPM_OPT_FLAGS.
-------------------------------------------------------------------
Fri Aug 26 13:53:35 CEST 2005 - agruen@suse.de
- Update to version 2.4.24: integrates two patches we had
separately before; add a missing space in an error message;
an error path fix in setfattr. No API/ABI changes in libattr.
-------------------------------------------------------------------
Fri Aug 19 16:49:59 CEST 2005 - kukuk@suse.de
- Move devel files from / to /usr
- Don't generate filelist dynamic (fix broken attr statements)
-------------------------------------------------------------------
Mon Jun 6 14:08:08 CEST 2005 - agruen@suse.de
- Bump version number to 2.4.23.
-------------------------------------------------------------------
Thu Jun 2 18:47:31 CEST 2005 - agruen@suse.de
- reduce-verboseness.diff: attr_copy_{fd,file}: Don't report an
error for each attribute copy that fails with ENOSYS, but report
such failures only once (85646).
-------------------------------------------------------------------
Mon Feb 21 11:38:15 CET 2005 - agruen@suse.de
- Update to version 2.4.22. Various fixes.
-------------------------------------------------------------------
Fri Aug 13 18:00:01 CEST 2004 - mjancar@suse.cz
- update to 2.4.16
-------------------------------------------------------------------
Tue Jan 27 10:11:29 CET 2004 - kukuk@suse.de
- Don't include man2/*xattr.2 manual pages, use the copy from
the man-pages package (so we have documentation for the glibc
functions, too).
-------------------------------------------------------------------
Sat Jan 10 21:22:37 CET 2004 - adrian@suse.de
- build as user
-------------------------------------------------------------------
Thu Jan 1 15:14:58 CET 2004 - agruen@suse.de
- Update to version 2.4.12. Bug fix in directory tree walking
code.
-------------------------------------------------------------------
Wed Oct 22 08:30:45 CEST 2003 - kukuk@suse.de
- Fix provides/requires for update case
-------------------------------------------------------------------
Thu Aug 28 13:26:04 CEST 2003 - agruen@suse.de
- Fix a bug with error handling while walking directory trees.
-------------------------------------------------------------------
Thu Aug 28 01:48:43 CEST 2003 - ro@suse.de
- fix patch-depth in specfile
-------------------------------------------------------------------
Wed Aug 27 00:50:55 CEST 2003 - agruen@suse.de
- Fix SIGSEGV if the quote function.
-------------------------------------------------------------------
Fri Aug 15 14:22:46 CEST 2003 - agruen@suse.de
- Update to 2.4.8: Fixes SIGSEGV if the quote/unquote functions
are passed NULL arguments.
-------------------------------------------------------------------
Sat Jul 26 20:30:17 CEST 2003 - agruen@suse.de
- Update to 2.4.6 + additional patch to be merged upstream.
-------------------------------------------------------------------
Mon Jun 16 19:09:14 CEST 2003 - jderfina@suse.cz
- File list fixed.
-------------------------------------------------------------------
Wed Apr 16 12:46:06 CEST 2003 - jderfina@suse.cz
- Update to 2.4.2
-------------------------------------------------------------------
Sun Apr 6 21:28:21 CEST 2003 - agruen@suse.de
- Update to 2.4.1.
-------------------------------------------------------------------
Thu Feb 27 05:20:41 CET 2003 - agruen@suse.de
- Fix broken attr_copy_check_permissions() function.
-------------------------------------------------------------------
Wed Feb 26 14:31:57 CET 2003 - agruen@suse.de
- Update to attr-2.4.0 which has our patches integrated.
-------------------------------------------------------------------
Mon Feb 24 12:11:20 CET 2003 - agruen@suse.de
- Increment libattr library version to 1.1.0.
- Fix [#24244] (prevent accidental acl copying on xfs).
- Add symbol level versioning for libattr.
-------------------------------------------------------------------
Thu Feb 13 21:57:56 CET 2003 - agruen@suse.de
- Fix an interface declaration in in the error_context.h header.
-------------------------------------------------------------------
Wed Jan 22 16:30:49 CET 2003 - agruen@suse.de
- Update to attr-2.2.0
- Add EA copying functions patch
- Let mls@suse.de add the following package alias in Autobuild
for building packages against older releases:
libattr-devel -> attr-devel [for <= 8.1]
-------------------------------------------------------------------
Tue Jan 21 14:02:36 CET 2003 - agruen@suse.de
- Remove (Prereq: /sbin/ldconfig) tag, and use %run_ldconfig
in %post and %postun instead.
- attr-devel was renamed to libattr-devel: add missing
`Obsoletes: attr-devel' tag to libattr-devel.
-------------------------------------------------------------------
Fri Dec 13 16:30:03 CET 2002 - schwab@suse.de
- Fix filelist generation.
-------------------------------------------------------------------
Thu Dec 12 17:56:03 CET 2002 - jderfina@suse.cz
- upgrading to version 2.1.1
- spliting attr to attr (binaries), libattr (libraries, only this package is
needed for other packages) and libattr-devel (development stuff). This
spliting follows SGI's release.
-------------------------------------------------------------------
Thu Sep 5 13:32:18 CEST 2002 - agruen@suse.de
- Update to version 2.0.11: Adds support for m68k and alpha, minor
corrections (see attr-2.0.11/doc/CHANGES for details).
-------------------------------------------------------------------
Thu Aug 15 10:06:57 CEST 2002 - agruen@suse.de
- Remove the suse_update_config macro and the config.* stuff.
(According to ro@suse.de this is not necessary.)
- Change the documentation path in builddefs.in instead of in
configure.in.
- Update to version 2.0.9
-------------------------------------------------------------------
Thu Jun 20 09:39:30 CEST 2002 - lmuelle@suse.de
- Remove DESTDIR patch, use DIST_ROOT of package instead
- Update to version 2.0.8
-------------------------------------------------------------------
Wed Jun 12 17:37:03 CEST 2002 - ro@suse.de
- fix for ppc64 (it's called powerpc64 in configure)
-------------------------------------------------------------------
Tue May 21 10:59:48 CEST 2002 - coolo@suse.de
- build also on archs without xattr syscalls
-------------------------------------------------------------------
Mon May 13 13:56:09 CEST 2002 - sf@suse.de
- changed configure.in to use */lib64 as pkg_slib_dir and
pkg_lib_dir on architectures with lib and lib64
-------------------------------------------------------------------
Wed Apr 24 17:52:15 MEST 2002 - mls@suse.de
- support for mips architecture
-------------------------------------------------------------------
Mon Feb 25 22:34:59 CET 2002 - ro@suse.de
- initial package (split from xfstools spec)

290
attr.spec Normal file
View File

@ -0,0 +1,290 @@
#
# spec file for package attr (Version 2.4.28)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: attr
Group: System/Filesystems
Autoreqprov: on
Summary: A Command to Manipulate File System Extended Attributes
Version: 2.4.28
Release: 26
Source: %{name}-%{version}.src.tar.bz2
Source1: xattr.conf
Patch0: builddefs.in.diff
Patch1: xfs-cmds-25211a-skip-DMF-attributes-on-copy-also
Patch2: xfs-cmds-25263a-fix-list_attr-segfault
Patch3: xattr_conf.diff
URL: ftp://oss.sgi.com/projects/xfs/cmd_tars
BuildRoot: %{_tmppath}/%{name}-%{version}-build
License: GPL, Other License(s), see package
Conflicts: xfsdump < 2.0.0
%description
A set of tools for manipulating extended attributes on file system
objects, in particular getfattr(1) and setfattr(1). An attr(1) command
is also provided, which is largely compatible with the SGI IRIX tool of
the same name.
Authors:
--------
Andreas Gruenbacher <a.gruenbacher@computer.org>
SGI
%package -n libattr
Summary: A dynamic library for filesystem extended attribute support
Autoreqprov: on
Group: System/Libraries
%description -n libattr
This package contains the libattr.so dynamic library.It contains the
extended attribute system calls and library functions.
Authors:
--------
Andreas Gruenbacher <a.gruenbacher@computer.org>
SGI
%package -n libattr-devel
Summary: Include Files and Libraries mandatory for Development
Autoreqprov: on
Group: Development/Libraries/C and C++
Provides: attr-devel
Obsoletes: attr-devel
Requires: libattr = %{version}
%description -n libattr-devel
This package contains the libraries and header files needed to develop
programs which make use of extended attributes. For Linux programs, the
documented system call API is the recommended interface, but an SGI
IRIX compatibility interface is also provided.
Authors:
--------
SGI
%prep
%setup
%patch0 -p1
%patch1 -p2
%patch2 -p2
%patch3 -p1
%build
export OPTIMIZER="$RPM_OPT_FLAGS -fPIC"
export DEBUG=-DNDEBUG
autoconf
CFLAGS="$RPM_OPT_FLAGS" \
./configure \
--prefix=/ \
--exec-prefix=/ \
--sbindir=/bin \
--bindir=%{_bindir} \
--mandir=%{_mandir} \
--includedir=%{_includedir} \
--libdir=/%{_lib} \
--datadir=/usr/share \
--libexecdir=/%{_libdir}
make
%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"
ln -sf /%{_lib}/$(readlink $RPM_BUILD_ROOT/%{_lib}/libattr.so) \
$RPM_BUILD_ROOT/%{_libdir}/libattr.so
rm -f $RPM_BUILD_ROOT/%{_lib}/libattr.{a,la,so}
rm -f $RPM_BUILD_ROOT%{_mandir}/man2/*xattr.2*
rm -f $RPM_BUILD_ROOT/%{_libdir}/libattr.la
install -d -m 755 $RPM_BUILD_ROOT/%{_sysconfdir}
install -m 644 %_sourcedir/xattr.conf $RPM_BUILD_ROOT/%{_sysconfdir}
%find_lang %name
%clean
rm -rf $RPM_BUILD_ROOT
%post -n libattr -p /sbin/ldconfig
%postun -n libattr -p /sbin/ldconfig
%files -f %{name}.lang
%defattr (-,root,root)
%dir %attr(755,root,root) /usr/share/doc/packages/attr
%dir %attr(755,root,root) /usr/share/doc/packages/attr/ea-conv
%doc %attr(644,root,root) /usr/share/doc/packages/attr/README
%doc %attr(644,root,root) /usr/share/doc/packages/attr/CHANGES.gz
%doc %attr(644,root,root) /usr/share/doc/packages/attr/COPYING
%doc %attr(644,root,root) /usr/share/doc/packages/attr/PORTING
%doc %attr(644,root,root) /usr/share/doc/packages/attr/ea-conv/README
%doc %attr(755,root,root) /usr/share/doc/packages/attr/ea-conv/ea-conv
%doc %attr(644,root,root) %{_mandir}/man1/attr.1.gz
%doc %attr(644,root,root) %{_mandir}/man1/getfattr.1.gz
%doc %attr(644,root,root) %{_mandir}/man1/setfattr.1.gz
%doc %attr(644,root,root) %{_mandir}/man5/attr.5.gz
%attr(755,root,root) %{_bindir}/attr
%attr(755,root,root) %{_bindir}/getfattr
%attr(755,root,root) %{_bindir}/setfattr
%files -n libattr-devel
%defattr(-,root,root)
%dir %attr(755,root,root) %{_includedir}/attr
%attr(644,root,root) %{_includedir}/attr/attributes.h
%attr(644,root,root) %{_includedir}/attr/error_context.h
%attr(644,root,root) %{_includedir}/attr/libattr.h
%attr(644,root,root) %{_includedir}/attr/xattr.h
%attr(644,root,root) %{_libdir}/libattr.a
%attr(755,root,root) %{_libdir}/libattr.so
%doc %attr(644,root,root) %{_mandir}/man3/attr_get.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_list.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_multi.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_remove.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_set.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_getf.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_listf.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_multif.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_removef.3.gz*
%doc %attr(644,root,root) %{_mandir}/man3/attr_setf.3.gz*
%files -n libattr
%defattr (755,root,root)
/%{_lib}/libattr.so.1*
%config %{_sysconfdir}/xattr.conf
%changelog -n attr
* Mon Oct 16 2006 - agruen@suse.de
- Ignore Beagle index data when copying files.
* Wed Oct 04 2006 - agruen@suse.de
- /etc/xattr.conf: Allow to configure which attributes to skip
when copying, and which attributes contain file permissions.
* Sat Mar 18 2006 - aj@suse.de
- Remove .la package that was introduced in last change and breaks
build of many packages.
* Fri Mar 17 2006 - agruen@suse.de
- Fix symlinks in the -devel package (149945, Nathan Scott).
* Tue Mar 07 2006 - agruen@suse.de
- xfs-cmds-25263a-fix-list_attr-segfault: Fix a possible segfault
in the attr_list compat function (155746).
* Sat Feb 18 2006 - agruen@suse.de
- Add xfs-cmds-25211a-skip-DMF-attributes-on-copy-also patch from
SGI (151782).
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Fri Jan 13 2006 - mjancar@suse.cz
- update to 2.4.28
* Implement the IRIX list_attr interfaces
* Wed Nov 02 2005 - schwab@suse.de
- Use RPM_OPT_FLAGS.
* Fri Aug 26 2005 - agruen@suse.de
- Update to version 2.4.24: integrates two patches we had
separately before; add a missing space in an error message;
an error path fix in setfattr. No API/ABI changes in libattr.
* Fri Aug 19 2005 - kukuk@suse.de
- Move devel files from / to /usr
- Don't generate filelist dynamic (fix broken attr statements)
* Mon Jun 06 2005 - agruen@suse.de
- Bump version number to 2.4.23.
* Thu Jun 02 2005 - agruen@suse.de
- reduce-verboseness.diff: attr_copy_{fd,file}: Don't report an
error for each attribute copy that fails with ENOSYS, but report
such failures only once (85646).
* Mon Feb 21 2005 - agruen@suse.de
- Update to version 2.4.22. Various fixes.
* Fri Aug 13 2004 - mjancar@suse.cz
- update to 2.4.16
* Tue Jan 27 2004 - kukuk@suse.de
- Don't include man2/*xattr.2 manual pages, use the copy from
the man-pages package (so we have documentation for the glibc
functions, too).
* Sat Jan 10 2004 - adrian@suse.de
- build as user
* Thu Jan 01 2004 - agruen@suse.de
- Update to version 2.4.12. Bug fix in directory tree walking
code.
* Wed Oct 22 2003 - kukuk@suse.de
- Fix provides/requires for update case
* Thu Aug 28 2003 - agruen@suse.de
- Fix a bug with error handling while walking directory trees.
* Thu Aug 28 2003 - ro@suse.de
- fix patch-depth in specfile
* Wed Aug 27 2003 - agruen@suse.de
- Fix SIGSEGV if the quote function.
* Fri Aug 15 2003 - agruen@suse.de
- Update to 2.4.8: Fixes SIGSEGV if the quote/unquote functions
are passed NULL arguments.
* Sat Jul 26 2003 - agruen@suse.de
- Update to 2.4.6 + additional patch to be merged upstream.
* Mon Jun 16 2003 - jderfina@suse.cz
- File list fixed.
* Wed Apr 16 2003 - jderfina@suse.cz
- Update to 2.4.2
* Sun Apr 06 2003 - agruen@suse.de
- Update to 2.4.1.
* Thu Feb 27 2003 - agruen@suse.de
- Fix broken attr_copy_check_permissions() function.
* Wed Feb 26 2003 - agruen@suse.de
- Update to attr-2.4.0 which has our patches integrated.
* Mon Feb 24 2003 - agruen@suse.de
- Increment libattr library version to 1.1.0.
- Fix [#24244] (prevent accidental acl copying on xfs).
- Add symbol level versioning for libattr.
* Thu Feb 13 2003 - agruen@suse.de
- Fix an interface declaration in in the error_context.h header.
* Wed Jan 22 2003 - agruen@suse.de
- Update to attr-2.2.0
- Add EA copying functions patch
- Let mls@suse.de add the following package alias in Autobuild
for building packages against older releases:
libattr-devel -> attr-devel [for <= 8.1]
* Tue Jan 21 2003 - agruen@suse.de
- Remove (Prereq: /sbin/ldconfig) tag, and use %%run_ldconfig
in %%post and %%postun instead.
- attr-devel was renamed to libattr-devel: add missing
`Obsoletes: attr-devel' tag to libattr-devel.
* Fri Dec 13 2002 - schwab@suse.de
- Fix filelist generation.
* Thu Dec 12 2002 - jderfina@suse.cz
- upgrading to version 2.1.1
- spliting attr to attr (binaries), libattr (libraries, only this package is
needed for other packages) and libattr-devel (development stuff). This
spliting follows SGI's release.
* Thu Sep 05 2002 - agruen@suse.de
- Update to version 2.0.11: Adds support for m68k and alpha, minor
corrections (see attr-2.0.11/doc/CHANGES for details).
* Thu Aug 15 2002 - agruen@suse.de
- Remove the suse_update_config macro and the config.* stuff.
(According to ro@suse.de this is not necessary.)
- Change the documentation path in builddefs.in instead of in
configure.in.
- Update to version 2.0.9
* Thu Jun 20 2002 - lmuelle@suse.de
- Remove DESTDIR patch, use DIST_ROOT of package instead
- Update to version 2.0.8
* Wed Jun 12 2002 - ro@suse.de
- fix for ppc64 (it's called powerpc64 in configure)
* Tue May 21 2002 - coolo@suse.de
- build also on archs without xattr syscalls
* Mon May 13 2002 - sf@suse.de
- changed configure.in to use */lib64 as pkg_slib_dir and
pkg_lib_dir on architectures with lib and lib64
* Wed Apr 24 2002 - mls@suse.de
- support for mips architecture
* Mon Feb 25 2002 - ro@suse.de
- initial package (split from xfstools spec)

11
builddefs.in.diff Normal file
View File

@ -0,0 +1,11 @@
--- attr-2.4.28/include/builddefs.in
+++ attr-2.4.28/include/builddefs.in
@@ -30,7 +30,7 @@
PKG_DEVLIB_DIR = @libexecdir@
PKG_INC_DIR = @includedir@/attr
PKG_MAN_DIR = @mandir@
-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
+PKG_DOC_DIR = @datadir@/doc/packages/@pkg_name@
PKG_LOCALE_DIR = @datadir@/locale
CC = @cc@

0
ready Normal file
View File

22
xattr.conf Normal file
View File

@ -0,0 +1,22 @@
# /etc/xattr.conf
#
# How to handle extended attributes when copying between files
#
# Format:
# <pattern> <action>
#
# Actions:
# permissions - copy when trying to preserve permissions.
# skip - do not copy.
system.nfs4_acl permissions
system.nfs4acl permissions
system.posix_acl_access permissions
system.posix_acl_default permissions
trusted.SGI_ACL_DEFAULT skip # xfs specific
trusted.SGI_ACL_FILE skip # xfs specific
trusted.SGI_CAP_FILE skip # xfs specific
trusted.SGI_DMI_* skip # xfs specific
trusted.SGI_MAC_FILE skip # xfs specific
xfsroot.* skip # xfs specific; obsolete
user.Beagle.* skip # ignore Beagle index data

281
xattr_conf.diff Normal file
View File

@ -0,0 +1,281 @@
Index: attr-2.4.28/libattr/Makefile
===================================================================
--- attr-2.4.28.orig/libattr/Makefile
+++ attr-2.4.28/libattr/Makefile
@@ -13,7 +13,7 @@ LT_CURRENT = 2
LT_REVISION = 0
LT_AGE = 1
-CFILES = libattr.c syscalls.c attr_copy_fd.c attr_copy_file.c attr_copy_check.c
+CFILES = libattr.c syscalls.c attr_copy_fd.c attr_copy_file.c attr_copy_check.c attr_copy_action.c
HFILES = libattr.h
LCFLAGS = -include libattr.h
Index: attr-2.4.28/libattr/attr_copy_action.c
===================================================================
--- /dev/null
+++ attr-2.4.28/libattr/attr_copy_action.c
@@ -0,0 +1,163 @@
+/* Copyright (C) 2006 Andreas Gruenbacher <agruen@suse.de>, SuSE Linux AG.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include <alloca.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <stdarg.h>
+#include <fnmatch.h>
+
+#include "attr/libattr.h"
+#define ERROR_CONTEXT_MACROS
+#include "error_context.h"
+
+#define ATTR_CONF "/etc/xattr.conf"
+
+struct attr_action {
+ struct attr_action *next;
+ char *pattern;
+ int action;
+};
+
+static struct attr_action *attr_actions;
+
+static void
+free_attr_actions(void)
+{
+ struct attr_action *tmp;
+
+ while (attr_actions) {
+ tmp = attr_actions->next;
+ free(attr_actions->pattern);
+ free(attr_actions);
+ attr_actions = tmp;
+ }
+}
+
+static int
+attr_parse_attr_conf(struct error_context *ctx)
+{
+ char *text, *t;
+ size_t size_guess = 4096, len;
+ FILE *file;
+ char *pattern = NULL;
+ struct attr_action *new;
+ int action;
+
+ if (attr_actions)
+ return 0;
+
+repeat:
+ text = malloc(size_guess + 1);
+ if (!text)
+ goto fail;
+
+ if ((file = fopen(ATTR_CONF, "r")) == NULL) {
+ if (errno == ENOENT)
+ return 0;
+ goto fail;
+ }
+ len = fread(text, 1, size_guess, file);
+ if (ferror(file))
+ goto fail;
+ if (!feof(file)) {
+ fclose(file);
+ file = NULL;
+ free(text);
+ size_guess *= 2;
+ goto repeat;
+ }
+ fclose(file);
+ file = NULL;
+
+ text[len] = 0;
+ t = text;
+ for (;;) {
+ t += strspn(t, " \t\n");
+ len = strcspn(t, " \t\n#");
+ if (t[len] == '#') {
+ if (len)
+ goto parse_error;
+ t += strcspn(t, "\n");
+ continue;
+ } else if (t[len] == 0)
+ break;
+ else if (t[len] == '\n')
+ goto parse_error;
+ pattern = strndup(t, len);
+ if (!pattern)
+ goto fail;
+ t += len;
+
+ t += strspn(t, " \t");
+ len = strcspn(t, " \t\n#");
+ if (len == 4 && !strncmp(t, "skip", 4))
+ action = ATTR_ACTION_SKIP;
+ else if (len == 11 && !strncmp(t, "permissions", 11))
+ action = ATTR_ACTION_PERMISSIONS;
+ else
+ goto parse_error;
+ t += len;
+ t += strspn(t, " \t");
+ if (*t != '#' && *t != '\n')
+ goto parse_error;
+
+ new = malloc(sizeof(struct attr_action));
+ if (!new)
+ goto parse_error;
+ new->next = attr_actions;
+ new->pattern = pattern;
+ new->action = action;
+ attr_actions = new;
+
+ t += strcspn(t, "\n");
+ }
+ return 0;
+
+parse_error:
+ errno = EINVAL;
+
+fail:
+ {
+ const char *q = quote (ctx, ATTR_CONF);
+ error (ctx, "%s", q);
+ quote_free (ctx, q);
+ }
+
+ free(pattern);
+ if (file)
+ fclose(file);
+ free(text);
+ free_attr_actions();
+ return -1;
+}
+
+int
+attr_copy_action(const char *name, struct error_context *ctx)
+{
+ struct attr_action *action = attr_actions;
+
+ if (!attr_parse_attr_conf(ctx)) {
+ for (action = attr_actions; action; action = action->next) {
+ if (!fnmatch(action->pattern, name, 0))
+ return action->action;
+ }
+ }
+ return 0;
+}
Index: attr-2.4.28/libattr/attr_copy_fd.c
===================================================================
--- attr-2.4.28.orig/libattr/attr_copy_fd.c
+++ attr-2.4.28/libattr/attr_copy_fd.c
@@ -120,7 +120,7 @@ attr_copy_fd(const char *src_path, int s
quote_free (ctx, qname);
quote_free (ctx, qpath);
ret = -1;
- continue; /* may not have permission to access */
+ continue;
}
value = (char *) realloc (old_value = value, size);
if (size != 0 && value == NULL) {
@@ -137,6 +137,7 @@ attr_copy_fd(const char *src_path, int s
quote_free (ctx, qname);
quote_free (ctx, qpath);
ret = -1;
+ continue;
}
if (fsetxattr (dst_fd, name, value, size, 0) != 0) {
if (errno == ENOTSUP)
Index: attr-2.4.28/libattr/attr_copy_file.c
===================================================================
--- attr-2.4.28.orig/libattr/attr_copy_file.c
+++ attr-2.4.28/libattr/attr_copy_file.c
@@ -118,7 +118,7 @@ attr_copy_file(const char *src_path, con
quote_free (ctx, qname);
quote_free (ctx, qpath);
ret = -1;
- continue; /* may not have permission to access */
+ continue;
}
value = (char *) realloc (old_value = value, size);
if (size != 0 && value == NULL) {
@@ -135,6 +135,7 @@ attr_copy_file(const char *src_path, con
quote_free (ctx, qname);
quote_free (ctx, qpath);
ret = -1;
+ continue;
}
if (lsetxattr (dst_path, name, value, size, 0) != 0) {
if (errno == ENOTSUP)
Index: attr-2.4.28/libattr/attr_copy_check.c
===================================================================
--- attr-2.4.28.orig/libattr/attr_copy_check.c
+++ attr-2.4.28/libattr/attr_copy_check.c
@@ -23,32 +23,6 @@
int
attr_copy_check_permissions(const char *name, struct error_context *ctx)
{
- /* Skip POSIX ACLs. */
- if (strncmp(name, "system.posix_acl_", 17) == 0 &&
- (strcmp(name+17, "access") == 0 ||
- strcmp(name+17, "default") == 0))
- return 0;
-
- /* Skip permissions attributes which are used on IRIX, and
- hence are part of the XFS ondisk format (incl. ACLs).
- Also skip SGI DMF attributes as they are inappropriate
- targets for copying over as well. */
- if (strncmp(name, "trusted.SGI_", 12) == 0 &&
- (strcmp(name+12, "ACL_DEFAULT") == 0 ||
- strcmp(name+12, "ACL_FILE") == 0 ||
- strcmp(name+12, "CAP_FILE") == 0 ||
- strcmp(name+12, "MAC_FILE") == 0 ||
- strncmp(name+12, "DMI_", 4) == 0))
- return 0;
-
- /* The xfsroot namespace mirrored attributes, some of which
- are also also available via the system.* and trusted.*
- namespaces. To avoid the problems this would cause,
- we skip xfsroot altogether.
- Note: xfsroot namespace has now been removed from XFS. */
- if (strncmp(name, "xfsroot.", 8) == 0)
- return 0;
-
- return 1;
+ return attr_copy_action(name, ctx) == 0;
}
Index: attr-2.4.28/include/libattr.h
===================================================================
--- attr-2.4.28.orig/include/libattr.h
+++ attr-2.4.28/include/libattr.h
@@ -14,9 +14,14 @@ extern int attr_copy_fd (const char *, i
int (*) (const char *, struct error_context *),
struct error_context *);
-/* The default check function used by attr_copy_{fd,file}. */
+/* Keep this function for backwards compatibility. */
extern int attr_copy_check_permissions(const char *, struct error_context *);
+#define ATTR_ACTION_SKIP 1
+#define ATTR_ACTION_PERMISSIONS 2
+
+extern int attr_copy_action(const char *, struct error_context *);
+
#ifdef __cplusplus
}
#endif

View File

@ -0,0 +1,31 @@
Date: Thu, Feb 16 2006 14:16:37 +1100
From: Nathan Scott <nathans@sgi.com>
References: 151782, SGI:PV948880
Subject: skip DMF attributes on copy also
Do not copy SGI DMI (data migration) attributes as well.
===========================================================================
Index: attr/libattr/attr_copy_check.c
===========================================================================
--- a/attr/libattr/attr_copy_check.c 2006-02-16 13:47:35.000000000 +1100
+++ b/attr/libattr/attr_copy_check.c 2006-02-16 13:47:35.000000000 +1100
@@ -30,12 +30,15 @@ attr_copy_check_permissions(const char *
return 0;
/* Skip permissions attributes which are used on IRIX, and
- hence are part of the XFS ondisk format (incl. ACLs). */
+ hence are part of the XFS ondisk format (incl. ACLs).
+ Also skip SGI DMF attributes as they are inappropriate
+ targets for copying over as well. */
if (strncmp(name, "trusted.SGI_", 12) == 0 &&
(strcmp(name+12, "ACL_DEFAULT") == 0 ||
strcmp(name+12, "ACL_FILE") == 0 ||
strcmp(name+12, "CAP_FILE") == 0 ||
- strcmp(name+12, "MAC_FILE") == 0))
+ strcmp(name+12, "MAC_FILE") == 0 ||
+ strncmp(name+12, "DMI_", 4) == 0))
return 0;
/* The xfsroot namespace mirrored attributes, some of which

View File

@ -0,0 +1,81 @@
Date: Wed, Feb 22 2006 13:56:35 +1100
From: Nathan Scott <nathans@sgi.com>
References: SGI:PV949977
Subject: fix list_attr segfault
Fix a possible segfault from the attr list compat interfaces,
thanks to Simon Munton.
===========================================================================
Index: attr/libattr/libattr.c
===========================================================================
--- a/attr/libattr/libattr.c 2006-02-22 13:28:37.000000000 +1100
+++ b/attr/libattr/libattr.c 2006-02-22 13:28:37.000000000 +1100
@@ -268,7 +268,7 @@ attr_list(const char *path, char *buffer
attrlist_cursor_t *cursor)
{
const char *l;
- int length, count = 0;
+ int length, vlength, count = 0;
char lbuf[MAXLISTLEN];
char name[MAXNAMELEN+16];
unsigned int start_offset, end_offset;
@@ -293,14 +293,14 @@ attr_list(const char *path, char *buffer
if (api_unconvert(name, l, flags))
continue;
if (flags & ATTR_DONTFOLLOW)
- length = lgetxattr(path, l, NULL, 0);
+ vlength = lgetxattr(path, l, NULL, 0);
else
- length = getxattr(path, l, NULL, 0);
- if (length < 0 && (errno == ENOATTR || errno == ENOTSUP))
+ vlength = getxattr(path, l, NULL, 0);
+ if (vlength < 0 && (errno == ENOATTR || errno == ENOTSUP))
continue;
if (count++ < cursor->opaque[0])
continue;
- if (attr_list_pack(name, length, buffer, buffersize,
+ if (attr_list_pack(name, vlength, buffer, buffersize,
&start_offset, &end_offset)) {
cursor->opaque[0] = count;
break;
@@ -314,7 +314,7 @@ attr_listf(int fd, char *buffer, const i
attrlist_cursor_t *cursor)
{
const char *l;
- int c, count = 0;
+ int length, vlength, count = 0;
char lbuf[MAXLISTLEN];
char name[MAXNAMELEN+16];
unsigned int start_offset, end_offset;
@@ -325,22 +325,22 @@ attr_listf(int fd, char *buffer, const i
}
bzero(buffer, sizeof(attrlist_t));
- c = flistxattr(fd, lbuf, sizeof(lbuf));
- if (c < 0)
- return c;
+ length = flistxattr(fd, lbuf, sizeof(lbuf));
+ if (length < 0)
+ return length;
start_offset = sizeof(attrlist_t);
end_offset = buffersize & ~(8-1); /* 8 byte align */
- for (l = lbuf; l != lbuf + c; l = strchr(l, '\0') + 1) {
+ for (l = lbuf; l != lbuf + length; l = strchr(l, '\0') + 1) {
if (api_unconvert(name, l, flags))
continue;
- c = fgetxattr(fd, l, NULL, 0);
- if (c < 0 && (errno == ENOATTR || errno == ENOTSUP))
+ vlength = fgetxattr(fd, l, NULL, 0);
+ if (vlength < 0 && (errno == ENOATTR || errno == ENOTSUP))
continue;
if (count++ < cursor->opaque[0])
continue;
- if (attr_list_pack(name, c, buffer, buffersize,
+ if (attr_list_pack(name, vlength, buffer, buffersize,
&start_offset, &end_offset)) {
cursor->opaque[0] = count;
break;