tar/tar-1.15.1-xattrs.patch
2007-01-03 09:36:49 +00:00

4875 lines
157 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--- tar-1.15.1/config/config.sub.xattrs 2004-12-15 09:55:00.000000000 +0100
+++ tar-1.15.1/config/config.sub 2006-10-04 11:52:36.000000000 +0200
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2004-08-29'
+timestamp='2003-06-18'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -70,7 +70,7 @@
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -118,8 +118,7 @@
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -145,7 +144,7 @@
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
+ -apple | -axis)
os=
basic_machine=$1
;;
@@ -229,15 +228,14 @@
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | ip2k \
+ | m32r | m68000 | m68k | m88k | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -249,7 +247,6 @@
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
@@ -260,6 +257,7 @@
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
+ | s390 | s390x \
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
@@ -300,15 +298,15 @@
| avr-* \
| bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
+ | clipper-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
+ | ip2k-* \
+ | m32r-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
@@ -322,18 +320,17 @@
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
- | mmix-* \
| msp430-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
+ | s390-* | s390x-* \
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
@@ -364,9 +361,6 @@
basic_machine=a29k-amd
os=-udi
;;
- abacus)
- basic_machine=abacus-unknown
- ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -384,9 +378,6 @@
amd64)
basic_machine=x86_64-pc
;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -446,27 +437,12 @@
basic_machine=j90-cray
os=-unicos
;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
crds | unos)
basic_machine=m68k-crds
;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
da30 | da30-*)
basic_machine=m68k-da30
;;
@@ -667,6 +643,10 @@
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
+ mmix*)
+ basic_machine=mmix-knuth
+ os=-mmixware
+ ;;
monitor)
basic_machine=m68k-rom68k
os=-coff
@@ -747,6 +727,10 @@
np1)
basic_machine=np1-gould
;;
+ nv1)
+ basic_machine=nv1-cray
+ os=-unicosmp
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -758,10 +742,6 @@
basic_machine=or32-unknown
os=-coff
;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
@@ -853,12 +833,6 @@
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
sa29200)
basic_machine=a29k-amd
os=-udi
@@ -982,10 +956,6 @@
tower | tower-32)
basic_machine=m68k-ncr
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -1059,9 +1029,6 @@
romp)
basic_machine=romp-ibm
;;
- mmix)
- basic_machine=mmix-knuth
- ;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -1157,20 +1124,19 @@
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1194,9 +1160,6 @@
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
@@ -1209,9 +1172,6 @@
-opened*)
os=-openedition
;;
- -os400*)
- os=-os400
- ;;
-wince*)
os=-wince
;;
@@ -1233,9 +1193,6 @@
-atheos*)
os=-atheos
;;
- -syllable*)
- os=-syllable
- ;;
-386bsd)
os=-bsd
;;
@@ -1258,9 +1215,6 @@
-sinix*)
os=-sysv4
;;
- -tpf*)
- os=-tpf
- ;;
-triton*)
os=-sysv3
;;
@@ -1328,9 +1282,9 @@
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
@@ -1377,9 +1331,6 @@
*-ibm)
os=-aix
;;
- *-knuth)
- os=-mmixware
- ;;
*-wec)
os=-proelf
;;
@@ -1512,15 +1463,9 @@
-mvs* | -opened*)
vendor=ibm
;;
- -os400*)
- vendor=ibm
- ;;
-ptx*)
vendor=sequent
;;
- -tpf*)
- vendor=ibm
- ;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
--- tar-1.15.1/config/config.guess.xattrs 2004-12-15 09:55:00.000000000 +0100
+++ tar-1.15.1/config/config.guess 2006-10-04 11:52:36.000000000 +0200
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2004-10-25'
+timestamp='2003-06-17'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -53,7 +53,7 @@
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -136,6 +136,13 @@
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+## for Red Hat Linux
+if test -f /etc/redhat-release ; then
+ VENDOR=redhat ;
+else
+ VENDOR= ;
+fi
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -197,21 +204,15 @@
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit 0 ;;
- amd64:OpenBSD:*:*)
- echo x86_64-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- cats:OpenBSD:*:*)
- echo arm-unknown-openbsd${UNAME_RELEASE}
+ arc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- luna88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -227,33 +228,25 @@
mvmeppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ pmax:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
sgi:OpenBSD:*:*)
- echo mips64-unknown-openbsd${UNAME_RELEASE}
+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ wgrisc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
+ if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
+ fi
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
@@ -291,12 +284,14 @@
"EV7.9 (21364A)")
UNAME_MACHINE="alphaev79" ;;
esac
- # A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ Alpha*:OpenVMS:*:*)
+ echo alpha-hp-vms
exit 0 ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
@@ -319,9 +314,6 @@
*:OS/390:*:*)
echo i370-ibm-openedition
exit 0 ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
@@ -342,7 +334,7 @@
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ DRS?6000:UNIX_SV:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7 && exit 0 ;;
esac ;;
@@ -414,9 +406,6 @@
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit 0 ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
@@ -752,7 +741,7 @@
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
@@ -760,11 +749,6 @@
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
@@ -774,8 +758,19 @@
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
+ # Determine whether the default compiler uses glibc.
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #if __GLIBC__ >= 2
+ LIBC=gnu
+ #else
+ LIBC=
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
exit 0 ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
@@ -808,13 +803,8 @@
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
- # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit 0 ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit 0 ;;
@@ -824,17 +814,8 @@
cris:Linux:*:*)
echo cris-axis-linux-gnu
exit 0 ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit 0 ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit 0 ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu
exit 0 ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -878,10 +859,10 @@
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-${VENDOR:-unknown}-linux-gnu
exit 0 ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-${VENDOR:-unknown}-linux-gnu
exit 0 ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -909,7 +890,7 @@
echo hppa64-unknown-linux-gnu
exit 0 ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu
exit 0 ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -921,7 +902,7 @@
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo x86_64-${VENDOR:-unknown}-linux-gnu
exit 0 ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
@@ -971,12 +952,9 @@
LIBC=gnuaout
#endif
#endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;;
i*86:DYNIX/ptx:4*:*)
@@ -1004,9 +982,6 @@
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit 0 ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit 0 ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
@@ -1076,9 +1051,9 @@
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
exit 0 ;;
- M68*:*:R3V[5678]*:*)
+ M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -1176,10 +1151,9 @@
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
+ case `uname -p` in
*86) UNAME_PROCESSOR=i686 ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
+ powerpc) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit 0 ;;
@@ -1194,7 +1168,7 @@
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
- NSR-?:NONSTOP_KERNEL:*:*)
+ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
*:NonStop-UX:*:*)
@@ -1238,19 +1212,6 @@
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
exit 0 ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms && exit 0 ;;
- I*) echo ia64-dec-vms && exit 0 ;;
- V*) echo vax-dec-vms && exit 0 ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
--- tar-1.15.1/tests/Makefile.in.xattrs 2004-12-21 14:31:03.000000000 +0100
+++ tar-1.15.1/tests/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -21,8 +21,6 @@
# François Pinard <pinard@iro.umontreal.ca>, 1988.
# Sergey Poznyakoff <gray@mirddin.farlep.net>, 2004.
-SOURCES = $(genfile_SOURCES)
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
--- tar-1.15.1/doc/tar.texi.xattrs 2004-12-18 20:20:19.000000000 +0100
+++ tar-1.15.1/doc/tar.texi 2006-10-04 11:52:36.000000000 +0200
@@ -7012,6 +7012,8 @@
Notice, that currently @acronym{GNU} extensions are not
allowed with this format. Following is the list of options that
cannot be used with @value{op-format-posix}:
+This is the only format that can store ACLs, SELinux context and extended
+attributes.
@itemize @bullet
@item @value{op-label}, when used with @value{op-create}.
@@ -7501,6 +7503,51 @@
@FIXME{I do not see the purpose of such an option. (Neither I. FP.)}
+@opindex acls
+@item --acls
+This option causes @command{tar} to store each file's ACLs in the archive.
+
+The @option{--acls} option has no equivalent short option name.
+
+@opindex selinux
+@item --selinux
+This option causes @command{tar} to store each file's SELinux security context
+information in the archive.
+
+The @option{--selinux} option has no equivalent short option name.
+
+@opindex xattrs
+@item --xattrs
+This option causes @command{tar} to store each file's extended attributes in
+the archive. This option also enables @option{--acls} and @option{--selinux} if they haven't been set already, due to the fact that the data for those are
+stored in special xattrs.
+
+The @option{--xattrs} option has no equivalent short option name.
+
+@opindex no-acls
+@item --no-acls
+This option causes @command{tar} not to store each file's ACLs in the archive
+and not to extract any ACL information in an archive.
+
+The @option{--acls} option has no equivalent short option name.
+
+@opindex no-selinux
+@item --no-selinux
+This option causes @command{tar} not to store each file's SELinux security
+context information in the archive and not to extract any SELinux information in
+an archive.
+
+The @option{--selinux} option has no equivalent short option name.
+
+@opindex no-xattrs
+@item --no-xattrs
+This option causes @command{tar} not to store each file's extended attributes in
+the archive and not to extract any extended attributes in an archive. This
+option also enables @option{--no-acls} and @option{--no-selinux} if
+they haven't been set already.
+
+The @option{--xattrs} option has no equivalent short option name.
+
@end table
@node Standard
--- tar-1.15.1/doc/Makefile.in.xattrs 2004-12-21 14:30:58.000000000 +0100
+++ tar-1.15.1/doc/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -300,9 +300,11 @@
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
am__cwd=`pwd` && cd $(srcdir) && \
rm -rf $$backupdir && mkdir $$backupdir && \
- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
- done; \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
cd "$$am__cwd"; \
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-o $@ $<; \
@@ -361,10 +363,11 @@
maintainer-clean-vti:
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
.dvi.ps:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
$(DVIPS) -o $@ $<
uninstall-info-am:
- $(PRE_UNINSTALL)
+ @$(PRE_UNINSTALL)
@if (install-info --version && \
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
@@ -380,7 +383,7 @@
relfile=`echo "$$file" | sed 's|^.*/||'`; \
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
(if cd "$(DESTDIR)$(infodir)"; then \
- echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
else :; fi); \
done
--- tar-1.15.1/doc/header.texi.xattrs 2004-04-04 11:53:48.000000000 +0200
+++ tar-1.15.1/doc/header.texi 2006-10-04 11:52:36.000000000 +0200
@@ -265,6 +265,14 @@
size_t numbytes;
@};
+/* Information about xattrs for a file. */
+struct xattr_array
+ @{
+ char *xkey;
+ char *xval_ptr;
+ size_t xval_len;
+ @};
+
struct tar_stat_info
@{
char *orig_file_name; /* name of file read from the archive header */
@@ -278,6 +286,15 @@
unsigned int devmajor; /* device major number */
char *uname; /* user name of owner */
char *gname; /* group name of owner */
+
+ char *cntx_name; /* SELinux context for the current archive entry. */
+
+ char *acls_a_ptr; /* Access ACLs for the current archive entry. */
+ size_t acls_a_len; /* Access ACLs for the current archive entry. */
+
+ char *acls_d_ptr; /* Default ACLs for the current archive entry. */
+ size_t acls_d_len; /* Default ACLs for the current archive entry. */
+
struct stat stat; /* regular filesystem stat */
/* Nanosecond parts of file timestamps (if available) */
@@ -294,7 +311,10 @@
sparse_map array. Zero if the file is
not sparse */
size_t sparse_map_size; /* Size of the sparse map */
- struct sp_array *sparse_map;
+ struct sp_array *sparse_map;
+
+ size_t xattr_map_size; /* Size of the xattr map */
+ struct xattr_array *xattr_map;
@};
union block
--- tar-1.15.1/doc/stamp-vti.xattrs 2004-12-21 14:33:12.000000000 +0100
+++ tar-1.15.1/doc/stamp-vti 2006-10-04 11:52:36.000000000 +0200
@@ -1,4 +1,4 @@
-@set UPDATED 18 December 2004
-@set UPDATED-MONTH December 2004
+@set UPDATED 23 September 2006
+@set UPDATED-MONTH September 2006
@set EDITION 1.15.1
@set VERSION 1.15.1
--- tar-1.15.1/doc/version.texi.xattrs 2004-12-21 14:03:18.000000000 +0100
+++ tar-1.15.1/doc/version.texi 2006-10-04 11:52:36.000000000 +0200
@@ -1,4 +1,4 @@
-@set UPDATED 18 December 2004
-@set UPDATED-MONTH December 2004
+@set UPDATED 23 September 2006
+@set UPDATED-MONTH September 2006
@set EDITION 1.15.1
@set VERSION 1.15.1
--- tar-1.15.1/doc/tar.info.xattrs 2004-12-21 14:03:19.000000000 +0100
+++ tar-1.15.1/doc/tar.info 2006-10-04 11:52:36.000000000 +0200
@@ -1,6 +1,6 @@
-This is tar.info, produced by makeinfo version 4.7 from tar.texi.
+This is tar.info, produced by makeinfo version 4.8 from tar.texi.
- This manual is for GNU `tar' (version 1.15.1, 18 December 2004),
+ This manual is for GNU `tar' (version 1.15.1, 23 September 2006),
which creates and extracts files from archives.
Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
@@ -35,7 +35,7 @@
GNU tar: an archiver tool
*************************
-This manual is for GNU `tar' (version 1.15.1, 18 December 2004), which
+This manual is for GNU `tar' (version 1.15.1, 23 September 2006), which
creates and extracts files from archives.
Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
@@ -6354,7 +6354,8 @@
A POSIX conformant archive will be created if `tar' was given
`--format=posix' option. Notice, that currently GNU extensions are not
allowed with this format. Following is the list of options that cannot
-be used with `--format=posix':
+be used with `--format=posix': This is the only format that can store
+ACLs, SELinux context and extended attributes.
* `--label=ARCHIVE-LABEL' (`-V ARCHIVE-LABEL'), when used with
`--create' (`-c').
@@ -6797,6 +6798,46 @@
is equivalent to `--same-permissions' (`--preserve-permissions',
`-p') plus `--same-order' (`--preserve-order', `-s').
+`--acls'
+ This option causes `tar' to store each file's ACLs in the archive.
+
+ The `--acls' option has no equivalent short option name.
+
+`--selinux'
+ This option causes `tar' to store each file's SELinux security
+ context information in the archive.
+
+ The `--selinux' option has no equivalent short option name.
+
+`--xattrs'
+ This option causes `tar' to store each file's extended attributes
+ in the archive. This option also enables `--acls' and `--selinux'
+ if+they haven't been set already, due to the fact that the data
+ for those are stored in special xattrs.
+
+ The `--xattrs' option has no equivalent short option name.
+
+`--no-acls'
+ This option causes `tar' not to store each file's ACLs in the
+ archive and not to extract any ACL information in an archive.
+
+ The `--acls' option has no equivalent short option name.
+
+`--no-selinux'
+ This option causes `tar' not to store each file's SELinux security
+ context information in the archive and not to extract any SELinux
+ information in an archive.
+
+ The `--selinux' option has no equivalent short option name.
+
+`--no-xattrs'
+ This option causes `tar' not to store each file's extended
+ attributes in the archive and not to extract any extended
+ attributes in an archive. This option also enables `--acls' and
+ `--selinux' if they haven't been set already.
+
+ The `--xattrs' option has no equivalent short option name.
+

File: tar.info, Node: Standard, Next: Extensions, Prev: Attributes, Up: Formats
@@ -7123,6 +7164,14 @@
size_t numbytes;
};
+ /* Information about xattrs for a file. */
+ struct xattr_array
+ {
+ char *xkey;
+ char *xval_ptr;
+ size_t xval_len;
+ };
+
struct tar_stat_info
{
char *orig_file_name; /* name of file read from the archive header */
@@ -7136,6 +7185,15 @@
unsigned int devmajor; /* device major number */
char *uname; /* user name of owner */
char *gname; /* group name of owner */
+
+ char *cntx_name; /* SELinux context for the current archive entry. */
+
+ char *acls_a_ptr; /* Access ACLs for the current archive entry. */
+ size_t acls_a_len; /* Access ACLs for the current archive entry. */
+
+ char *acls_d_ptr; /* Default ACLs for the current archive entry. */
+ size_t acls_d_len; /* Default ACLs for the current archive entry. */
+
struct stat stat; /* regular filesystem stat */
/* Nanosecond parts of file timestamps (if available) */
@@ -7153,6 +7211,9 @@
not sparse */
size_t sparse_map_size; /* Size of the sparse map */
struct sp_array *sparse_map;
+
+ size_t xattr_map_size; /* Size of the xattr map */
+ struct xattr_array *xattr_map;
};
union block
@@ -9271,6 +9332,7 @@
* -suffix: backup. (line 68)
* abbreviations for months: Calendar date items. (line 38)
* absolute file names: Remote Tape Server. (line 17)
+* acls: Attributes. (line 118)
* Adding archives to an archive: concatenate. (line 6)
* Adding files to an Archive: appending files. (line 8)
* ADMINISTRATOR: General-Purpose Variables.
@@ -9446,6 +9508,9 @@
(line 6)
* next DAY: Day of week items. (line 15)
* next in date strings: General date syntax. (line 26)
+* no-acls: Attributes. (line 137)
+* no-selinux: Attributes. (line 143)
+* no-xattrs: Attributes. (line 150)
* noon in date strings: Time of day items. (line 21)
* now in date strings: Relative items in date strings.
(line 33)
@@ -9494,6 +9559,7 @@
* Running out of space: Reading. (line 6)
* Running out of space during extraction: Scarce. (line 6)
* Salz, Rich: Authors of get_date. (line 6)
+* selinux: Attributes. (line 123)
* simple backup method: backup. (line 64)
* SIMPLE_BACKUP_SUFFIX: backup. (line 68)
* SLEEP_MESSAGE: General-Purpose Variables.
@@ -9555,6 +9621,7 @@
* Working directory, specifying: directory. (line 6)
* Writing extracted files to standard output: Writing. (line 6)
* Writing new archives: file. (line 36)
+* xattrs: Attributes. (line 129)
* XLIST: General-Purpose Variables.
(line 80)
* year in date strings: Relative items in date strings.
@@ -9565,172 +9632,172 @@

Tag Table:
-Node: Top1264
-Node: Introduction9089
-Node: Book Contents9948
-Node: Definitions12120
-Node: What tar Does13921
-Node: Naming tar Archives16686
-Node: Current status17413
-Node: Authors19471
-Node: Reports21176
-Node: Tutorial21535
-Node: assumptions22348
-Node: stylistic conventions24827
-Node: basic tar options25270
-Node: frequent operations28909
-Node: Two Frequent Options29561
-Node: file tutorial30192
-Node: verbose tutorial31275
-Node: help tutorial33009
-Node: create33363
-Node: prepare for examples34864
-Node: Creating the archive36578
-Node: create verbose39377
-Node: short create40198
-Node: create dir43095
-Node: list45701
-Node: list dir48222
-Node: extract49211
-Node: extracting archives50413
-Node: extracting files50903
-Node: extract dir53003
-Node: extracting untrusted archives55386
-Node: failing commands56265
-Node: going further57350
-Node: tar invocation57500
-Node: Synopsis58997
-Node: using tar options63416
-Node: Styles66021
-Node: Mnemonic Options67830
-Node: Short Options70030
-Ref: Short Options-Footnote-171838
-Node: Old Options72055
-Ref: Old Options-Footnote-175007
-Node: Mixing75177
-Ref: Mixing-Footnote-177543
-Node: All Options77667
-Node: Operation Summary78272
-Node: Option Summary79533
-Ref: Option Summary-Footnote-1101314
-Node: Short Option Summary101377
-Node: help103153
-Ref: help-Footnote-1106597
-Node: verbose106806
-Node: interactive111072
-Node: operations113151
-Node: Basic tar113410
-Ref: Basic tar-Footnote-1116723
-Node: Advanced tar116867
-Node: Operations117712
-Node: append119670
-Ref: append-Footnote-1122850
-Node: appending files123016
-Node: multiple124794
-Node: update127495
-Node: how to update128503
-Node: concatenate130286
-Node: delete133562
-Node: compare135552
-Node: create options137206
-Node: Ignore Failed Read137608
-Node: extract options137811
-Node: Reading138722
-Node: read full records140309
-Node: Ignore Zeros140645
-Node: Writing141656
-Node: Dealing with Old Files142124
-Node: Overwrite Old Files144550
-Node: Keep Old Files146007
-Node: Keep Newer Files146525
-Node: Unlink First146814
-Node: Recursive Unlink147218
-Node: Modification Times147766
-Node: Setting Access Permissions148544
-Node: Writing to Standard Output149168
-Node: remove files150600
-Node: Scarce150789
-Node: Starting File151037
-Node: Same Order151867
-Node: backup152703
-Node: Applications156385
-Node: looking ahead157647
-Node: Backups158472
-Node: Full Dumps161478
-Node: Inc Dumps166991
-Node: incremental and listed-incremental168276
-Node: Backup Levels172728
-Node: Backup Parameters175085
-Node: General-Purpose Variables176262
-Node: Magnetic Tape Control180941
-Node: User Hooks182273
-Node: backup-specs example183584
-Node: Scripted Backups184727
-Ref: Scripted Backups-Footnote-1187468
-Node: Scripted Restoration187850
-Node: Choosing190347
-Node: file191289
-Node: Selecting Archive Members194938
-Node: files196281
-Node: nul197885
-Node: exclude199267
-Node: controlling pattern-patching with exclude201156
-Node: problems with exclude203204
-Node: Wildcards205415
-Node: after207948
-Node: recurse211056
-Node: one213679
-Node: directory215315
-Node: absolute218390
-Node: Date input formats221535
-Node: General date syntax223851
-Node: Calendar date items226556
-Node: Time of day items228553
-Node: Time zone items230605
-Node: Day of week items231839
-Node: Relative items in date strings232828
-Node: Pure numbers in date strings235630
-Node: Seconds since the Epoch236611
-Node: Specifying time zone rules238236
-Node: Authors of get_date240600
-Node: Formats241352
-Node: Portability246068
-Node: Portable Names247368
-Node: dereference248073
-Node: old249466
-Node: ustar250543
-Node: gnu251133
-Node: posix252420
-Node: Checksumming253124
-Node: Large or Negative Values255048
-Node: Compression257034
-Node: gzip257346
-Node: sparse262234
-Ref: sparse-Footnote-1267514
-Node: Attributes267810
-Node: Standard273223
-Node: Extensions299111
-Node: cpio301663
-Node: Media306411
-Node: Device308372
-Node: Remote Tape Server313411
-Node: Common Problems and Solutions317236
-Node: Blocking317628
-Node: Format Variations324240
-Node: Blocking Factor325177
-Node: Many336857
-Node: Tape Positioning340651
-Node: mt342510
-Node: Using Multiple Tapes344350
-Node: Multi-Volume Archives349453
-Node: Tape Files353515
-Node: label354991
-Ref: label-Footnote-1358790
-Node: verify359025
-Node: Write Protection362404
-Node: Free Software Needs Free Documentation363234
-Node: Copying This Manual368203
-Node: GNU Free Documentation License368461
-Node: Index390867
+Node: Top1265
+Node: Introduction9091
+Node: Book Contents9950
+Node: Definitions12122
+Node: What tar Does13923
+Node: Naming tar Archives16688
+Node: Current status17415
+Node: Authors19473
+Node: Reports21178
+Node: Tutorial21537
+Node: assumptions22350
+Node: stylistic conventions24829
+Node: basic tar options25272
+Node: frequent operations28911
+Node: Two Frequent Options29563
+Node: file tutorial30194
+Node: verbose tutorial31277
+Node: help tutorial33011
+Node: create33365
+Node: prepare for examples34866
+Node: Creating the archive36580
+Node: create verbose39379
+Node: short create40200
+Node: create dir43097
+Node: list45703
+Node: list dir48224
+Node: extract49213
+Node: extracting archives50415
+Node: extracting files50905
+Node: extract dir53005
+Node: extracting untrusted archives55388
+Node: failing commands56267
+Node: going further57352
+Node: tar invocation57502
+Node: Synopsis58999
+Node: using tar options63418
+Node: Styles66023
+Node: Mnemonic Options67832
+Node: Short Options70032
+Ref: Short Options-Footnote-171840
+Node: Old Options72057
+Ref: Old Options-Footnote-175009
+Node: Mixing75179
+Ref: Mixing-Footnote-177545
+Node: All Options77669
+Node: Operation Summary78274
+Node: Option Summary79535
+Ref: Option Summary-Footnote-1101316
+Node: Short Option Summary101379
+Node: help103155
+Ref: help-Footnote-1106599
+Node: verbose106808
+Node: interactive111074
+Node: operations113153
+Node: Basic tar113412
+Ref: Basic tar-Footnote-1116725
+Node: Advanced tar116869
+Node: Operations117714
+Node: append119672
+Ref: append-Footnote-1122852
+Node: appending files123018
+Node: multiple124796
+Node: update127497
+Node: how to update128505
+Node: concatenate130288
+Node: delete133564
+Node: compare135554
+Node: create options137208
+Node: Ignore Failed Read137610
+Node: extract options137813
+Node: Reading138724
+Node: read full records140311
+Node: Ignore Zeros140647
+Node: Writing141658
+Node: Dealing with Old Files142126
+Node: Overwrite Old Files144552
+Node: Keep Old Files146009
+Node: Keep Newer Files146527
+Node: Unlink First146816
+Node: Recursive Unlink147220
+Node: Modification Times147768
+Node: Setting Access Permissions148546
+Node: Writing to Standard Output149170
+Node: remove files150602
+Node: Scarce150791
+Node: Starting File151039
+Node: Same Order151869
+Node: backup152705
+Node: Applications156387
+Node: looking ahead157649
+Node: Backups158474
+Node: Full Dumps161480
+Node: Inc Dumps166993
+Node: incremental and listed-incremental168278
+Node: Backup Levels172730
+Node: Backup Parameters175087
+Node: General-Purpose Variables176264
+Node: Magnetic Tape Control180943
+Node: User Hooks182275
+Node: backup-specs example183586
+Node: Scripted Backups184729
+Ref: Scripted Backups-Footnote-1187470
+Node: Scripted Restoration187852
+Node: Choosing190349
+Node: file191291
+Node: Selecting Archive Members194940
+Node: files196283
+Node: nul197887
+Node: exclude199269
+Node: controlling pattern-patching with exclude201158
+Node: problems with exclude203206
+Node: Wildcards205417
+Node: after207950
+Node: recurse211058
+Node: one213681
+Node: directory215317
+Node: absolute218392
+Node: Date input formats221537
+Node: General date syntax223853
+Node: Calendar date items226558
+Node: Time of day items228555
+Node: Time zone items230607
+Node: Day of week items231841
+Node: Relative items in date strings232830
+Node: Pure numbers in date strings235632
+Node: Seconds since the Epoch236613
+Node: Specifying time zone rules238238
+Node: Authors of get_date240602
+Node: Formats241354
+Node: Portability246070
+Node: Portable Names247370
+Node: dereference248075
+Node: old249468
+Node: ustar250545
+Node: gnu251135
+Node: posix252422
+Node: Checksumming253212
+Node: Large or Negative Values255136
+Node: Compression257122
+Node: gzip257434
+Node: sparse262322
+Ref: sparse-Footnote-1267602
+Node: Attributes267898
+Node: Standard274771
+Node: Extensions301343
+Node: cpio303895
+Node: Media308643
+Node: Device310604
+Node: Remote Tape Server315643
+Node: Common Problems and Solutions319468
+Node: Blocking319860
+Node: Format Variations326472
+Node: Blocking Factor327409
+Node: Many339089
+Node: Tape Positioning342883
+Node: mt344742
+Node: Using Multiple Tapes346582
+Node: Multi-Volume Archives351685
+Node: Tape Files355747
+Node: label357223
+Ref: label-Footnote-1361022
+Node: verify361257
+Node: Write Protection364636
+Node: Free Software Needs Free Documentation365466
+Node: Copying This Manual370435
+Node: GNU Free Documentation License370693
+Node: Index393099

End Tag Table
--- tar-1.15.1/lib/localedir.h.xattrs 2004-12-21 15:01:12.000000000 +0100
+++ tar-1.15.1/lib/localedir.h 2006-10-04 11:52:36.000000000 +0200
@@ -1,4 +1,4 @@
#define LOCALEDIR "/usr/share/locale"
#ifndef DEFAULT_RMT_COMMAND
-# define DEFAULT_RMT_COMMAND "/etc/rmt"
+# define DEFAULT_RMT_COMMAND "/sbin/rmt"
#endif
--- tar-1.15.1/lib/Makefile.in.xattrs 2004-12-21 14:31:00.000000000 +0100
+++ tar-1.15.1/lib/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -20,8 +20,6 @@
# Free Software Foundation, Inc.
-SOURCES = $(libtar_a_SOURCES)
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
--- tar-1.15.1/rmt/Makefile.in.xattrs 2004-12-21 14:31:01.000000000 +0100
+++ tar-1.15.1/rmt/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,8 +14,6 @@
@SET_MAKE@
-SOURCES = $(rmt_SOURCES)
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -304,7 +302,8 @@
f=`echo "$$p" | \
sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
for opt in --help --version; do \
- if "$(DESTDIR)$(rmtdir)/$$f" $$opt > c$${pid}_.out 2> c$${pid}_.err \
+ if "$(DESTDIR)$(rmtdir)/$$f" $$opt >c$${pid}_.out \
+ 2>c$${pid}_.err </dev/null \
&& test -n "`cat c$${pid}_.out`" \
&& test -z "`cat c$${pid}_.err`"; then :; \
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
--- tar-1.15.1/src/list.c.xattrs 2006-10-04 11:52:36.000000000 +0200
+++ tar-1.15.1/src/list.c 2006-10-04 11:52:36.000000000 +0200
@@ -563,6 +563,13 @@
stat_info->stat.st_atime = start_time;
stat_info->stat.st_ctime = start_time;
+ stat_info->acls_a_ptr = NULL;
+ stat_info->acls_a_len = 0;
+ stat_info->acls_d_ptr = NULL;
+ stat_info->acls_d_len = 0;
+ stat_info->cntx_name = NULL;
+ xheader_xattr_init(stat_info);
+
if (format == OLDGNU_FORMAT && incremental_option)
{
stat_info->stat.st_atime = TIME_FROM_HEADER (header->oldgnu_header.atime);
--- tar-1.15.1/src/extract.c.xattrs 2006-10-04 11:52:36.000000000 +0200
+++ tar-1.15.1/src/extract.c 2006-10-04 11:54:47.000000000 +0200
@@ -71,6 +71,13 @@
mode_t invert_permissions;
enum permstatus permstatus;
bool after_symlinks;
+ char *cntx_name;
+ char *acls_a_ptr;
+ size_t acls_a_len;
+ char *acls_d_ptr;
+ size_t acls_d_len;
+ size_t xattr_map_size; /* Size of the xattr map */
+ struct xattr_array *xattr_map;
char file_name[1];
};
@@ -95,6 +102,18 @@
hard-linked together. */
struct string_list *sources;
+ /* SELinux context */
+ char *cntx_name;
+
+ /* ACLs */
+ char *acls_a_ptr;
+ size_t acls_a_len;
+ char *acls_d_ptr;
+ size_t acls_d_len;
+
+ size_t xattr_map_size; /* Size of the xattr map */
+ struct xattr_array *xattr_map;
+
/* The desired target of the desired link. */
char target[1];
};
@@ -228,13 +247,13 @@
static void
set_stat (char const *file_name,
- struct stat const *stat_info,
+ struct tar_stat_info const *st,
struct stat const *cur_info,
mode_t invert_permissions, enum permstatus permstatus,
char typeflag)
{
struct utimbuf utimbuf;
-
+
if (typeflag != SYMTYPE)
{
/* We do the utime before the chmod because some versions of utime are
@@ -249,11 +268,11 @@
/* FIXME: incremental_option should set ctime too, but how? */
if (incremental_option)
- utimbuf.actime = stat_info->st_atime;
+ utimbuf.actime = st->stat.st_atime;
else
utimbuf.actime = start_time;
- utimbuf.modtime = stat_info->st_mtime;
+ utimbuf.modtime = st->stat.st_mtime;
if (utime (file_name, &utimbuf) < 0)
utime_error (file_name);
@@ -268,10 +287,14 @@
done, it is not possible anymore to change file permissions, so we
have to set permissions prior to possibly giving files away. */
- set_mode (file_name, stat_info, cur_info,
+ set_mode (file_name, &st->stat, cur_info,
invert_permissions, permstatus, typeflag);
}
+ xattrs_acls_set(st, file_name, typeflag);
+ xattrs_selinux_set(st, file_name, typeflag);
+ xattrs_xattrs_set(st, file_name, typeflag);
+
if (0 < same_owner_option && permstatus != INTERDIR_PERMSTATUS)
{
/* When lchown exists, it should be used to change the attributes of
@@ -282,22 +305,22 @@
if (typeflag == SYMTYPE)
{
#if HAVE_LCHOWN
- if (lchown (file_name, stat_info->st_uid, stat_info->st_gid) < 0)
+ if (lchown (file_name, st->stat.st_uid, st->stat.st_gid) < 0)
chown_error_details (file_name,
- stat_info->st_uid, stat_info->st_gid);
+ st->stat.st_uid, st->stat.st_gid);
#endif
}
else
{
- if (chown (file_name, stat_info->st_uid, stat_info->st_gid) < 0)
+ if (chown (file_name, st->stat.st_uid, st->stat.st_gid) < 0)
chown_error_details (file_name,
- stat_info->st_uid, stat_info->st_gid);
+ st->stat.st_uid, st->stat.st_gid);
/* On a few systems, and in particular, those allowing to give files
away, changing the owner or group destroys the suid or sgid bits.
So let's attempt setting these bits once more. */
- if (stat_info->st_mode & (S_ISUID | S_ISGID | S_ISVTX))
- set_mode (file_name, stat_info, 0,
+ if (st->stat.st_mode & (S_ISUID | S_ISGID | S_ISVTX))
+ set_mode (file_name, &st->stat, 0,
invert_permissions, permstatus, typeflag);
}
}
@@ -310,7 +333,7 @@
INVERT_PERMISSIONS bits from the file's current permissions.
PERMSTATUS specifies the status of the file's permissions. */
static void
-delay_set_stat (char const *file_name, struct stat const *stat_info,
+delay_set_stat (char const *file_name, struct tar_stat_info const *st,
mode_t invert_permissions, enum permstatus permstatus)
{
size_t file_name_len = strlen (file_name);
@@ -322,7 +345,24 @@
data->invert_permissions = invert_permissions;
data->permstatus = permstatus;
data->after_symlinks = 0;
- data->stat_info = *stat_info;
+ data->cntx_name = NULL;
+ assign_string (&data->cntx_name, st->cntx_name);
+ if (st->acls_a_ptr)
+ data->acls_a_ptr = xmemdup(st->acls_a_ptr, st->acls_a_len);
+ else
+ {
+ data->acls_a_ptr = NULL;
+ data->acls_a_len = 0;
+ }
+ if (st->acls_d_ptr)
+ data->acls_d_ptr = xmemdup(st->acls_d_ptr, st->acls_d_len);
+ else
+ {
+ data->acls_d_ptr = NULL;
+ data->acls_d_len = 0;
+ }
+ xheader_xattr_copy (st, &data->xattr_map, &data->xattr_map_size);
+ data->stat_info = st->stat;
data->next = delayed_set_stat_head;
delayed_set_stat_head = data;
}
@@ -404,7 +444,7 @@
invert_permissions is zero, because
repair_delayed_set_stat may need to update the struct. */
delay_set_stat (file_name,
- &current_stat_info.stat,
+ &current_stat_info,
invert_permissions, INTERDIR_PERMSTATUS);
print_for_mkdir (file_name, cursor - file_name, mode);
@@ -594,10 +634,27 @@
}
if (! skip_this_one)
- set_stat (data->file_name, &data->stat_info, cur_info,
- data->invert_permissions, data->permstatus, DIRTYPE);
+ {
+ struct tar_stat_info st1;
+ st1.stat = data->stat_info;
+ st1.cntx_name = data->cntx_name;
+ st1.acls_a_ptr = data->acls_a_ptr;
+ st1.acls_a_len = data->acls_a_len;
+ st1.acls_d_ptr = data->acls_d_ptr;
+ st1.acls_d_len = data->acls_d_len;
+ st1.xattr_map = data->xattr_map;
+ st1.xattr_map_size = data->xattr_map_size;
+
+ set_stat (data->file_name, &st1, cur_info,
+ data->invert_permissions, data->permstatus, DIRTYPE);
+ }
+
delayed_set_stat_head = data->next;
+ xheader_xattr_free (data->xattr_map, data->xattr_map_size);
+ free (data->cntx_name);
+ free (data->acls_a_ptr);
+ free (data->acls_d_ptr);
free (data);
}
}
@@ -800,7 +857,7 @@
undo_last_backup ();
}
- set_stat (file_name, &current_stat_info.stat, 0, 0,
+ set_stat (file_name, &current_stat_info, 0, 0,
(old_files_option == OVERWRITE_OLD_FILES
? UNKNOWN_PERMSTATUS
: ARCHIVED_PERMSTATUS),
@@ -822,7 +879,7 @@
break;
if (status == 0)
- set_stat (file_name, &current_stat_info.stat, 0, 0, 0, SYMTYPE);
+ set_stat (file_name, &current_stat_info, 0, 0, 0, SYMTYPE);
else
symlink_error (current_stat_info.link_name, file_name);
}
@@ -865,6 +922,14 @@
+ strlen (file_name) + 1);
p->sources->next = 0;
strcpy (p->sources->string, file_name);
+ p->cntx_name = NULL;
+ assign_string (&p->cntx_name, current_stat_info.cntx_name);
+ p->acls_a_ptr = NULL;
+ p->acls_a_len = 0;
+ p->acls_d_ptr = NULL;
+ p->acls_d_len = 0;
+ p->xattr_map = NULL;
+ p->xattr_map_size = 0;
strcpy (p->target, current_stat_info.link_name);
h = delayed_set_stat_head;
@@ -995,7 +1060,7 @@
undo_last_backup ();
break;
};
- set_stat (file_name, &current_stat_info.stat, 0, 0,
+ set_stat (file_name, &current_stat_info, 0, 0,
ARCHIVED_PERMSTATUS, typeflag);
break;
#endif
@@ -1011,7 +1076,7 @@
break;
if (status == 0)
- set_stat (file_name, &current_stat_info.stat, NULL, 0,
+ set_stat (file_name, &current_stat_info, NULL, 0,
ARCHIVED_PERMSTATUS, typeflag);
else
{
@@ -1090,11 +1155,11 @@
|| old_files_option == OVERWRITE_OLD_FILES)
{
if (status == 0)
- delay_set_stat (file_name, &current_stat_info.stat,
+ delay_set_stat (file_name, &current_stat_info,
MODE_RWX & (mode ^ current_stat_info.stat.st_mode),
ARCHIVED_PERMSTATUS);
else /* For an already existing directory, invert_perms must be 0 */
- delay_set_stat (file_name, &current_stat_info.stat,
+ delay_set_stat (file_name, &current_stat_info,
0,
UNKNOWN_PERMSTATUS);
}
@@ -1168,10 +1233,19 @@
symlink_error (ds->target, source);
else
{
+ struct tar_stat_info st1;
+
valid_source = source;
- st.st_uid = ds->uid;
- st.st_gid = ds->gid;
- set_stat (source, &st, 0, 0, 0, SYMTYPE);
+ st1.stat.st_uid = ds->uid;
+ st1.stat.st_gid = ds->gid;
+ st1.cntx_name = ds->cntx_name;
+ st1.acls_a_ptr = ds->acls_a_ptr;
+ st1.acls_a_len = ds->acls_a_len;
+ st1.acls_d_ptr = ds->acls_d_ptr;
+ st1.acls_d_len = ds->acls_d_len;
+ st1.xattr_map = ds->xattr_map;
+ st1.xattr_map_size = ds->xattr_map_size;
+ set_stat (source, &st1, 0, 0, 0, SYMTYPE);
}
}
}
--- tar-1.15.1/src/misc.c.xattrs 2004-09-13 10:12:05.000000000 +0200
+++ tar-1.15.1/src/misc.c 2006-10-04 11:52:36.000000000 +0200
@@ -545,7 +545,7 @@
/* Report an error associated with the system call CALL and the
optional name NAME. */
-static void
+void
call_arg_error (char const *call, char const *name)
{
int e = errno;
@@ -563,7 +563,7 @@
/* Report a warning associated with the system call CALL and
the optional file name NAME. */
-static void
+void
call_arg_warn (char const *call, char const *name)
{
int e = errno;
--- /dev/null 2006-10-03 09:18:45.784834250 +0200
+++ tar-1.15.1/src/xattrs.h 2006-10-04 11:52:36.000000000 +0200
@@ -0,0 +1,14 @@
+
+extern void xattrs_acls_get(struct tar_stat_info *st,
+ char const *file_name, int fd);
+extern void xattrs_selinux_get(struct tar_stat_info *st,
+ char const *file_name, int fd);
+extern void xattrs_xattrs_get(struct tar_stat_info *st,
+ char const *file_name, int fd);
+
+extern void xattrs_acls_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag);
+extern void xattrs_selinux_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag);
+extern void xattrs_xattrs_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag);
--- tar-1.15.1/src/Makefile.am.xattrs 2004-10-25 16:55:49.000000000 +0200
+++ tar-1.15.1/src/Makefile.am 2006-10-04 11:52:36.000000000 +0200
@@ -20,7 +20,7 @@
bin_PROGRAMS = tar
-noinst_HEADERS = arith.h common.h tar.h
+noinst_HEADERS = arith.h common.h tar.h xattrs.h
tar_SOURCES = \
buffer.c\
compare.c\
@@ -37,7 +37,8 @@
system.c\
tar.c\
update.c\
- utf8.c
+ utf8.c\
+ xattrs.c
INCLUDES = -I$(top_srcdir)/lib -I../ -I../lib
@@ -45,4 +46,4 @@
LDADD = ../lib/libtar.a $(LIBINTL) $(LIBICONV)
-tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+tar_LDADD = $(LIBS) $(LDADD) $(LIB_CLOCK_GETTIME)
--- /dev/null 2006-10-03 09:18:45.784834250 +0200
+++ tar-1.15.1/src/xattrs.c 2006-10-04 11:54:47.000000000 +0200
@@ -0,0 +1,402 @@
+/* Create a tar archive.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ Written by James Antill, on 2006-07-27.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+ Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <system.h>
+
+#include <quotearg.h>
+
+#include "common.h"
+
+
+#ifndef HAVE_SELINUX_SELINUX_H
+# undef HAVE_LIBSELINUX
+#endif
+
+#ifndef HAVE_ATTR_XATTR_H
+# undef HAVE_XATTRS
+#endif
+
+#ifndef HAVE_SYS_ACL_H
+# undef HAVE_LIBACL
+#endif
+
+#ifdef HAVE_SELINUX_SELINUX_H
+# include <selinux/selinux.h>
+#endif
+
+#ifdef HAVE_ATTR_XATTR_H
+# include <attr/xattr.h>
+#endif
+
+#ifdef HAVE_SYS_ACL_H
+# include <sys/acl.h>
+#endif
+
+
+#if 0 /* unused by xattr's atm. */
+static void xattrs__fd_get(struct tar_stat_info *st,
+ char const *file_name, int fd, const char *attr,
+ char **ret_ptr, size_t *ret_len)
+{
+#ifdef HAVE_XATTRS
+ static ssize_t asz = 1024;
+ ssize_t ret = 0;
+ static char *val = NULL;
+
+ if (!val) val = xmalloc (asz);
+
+ while (((ret = fgetxattr (fd, attr, val, asz)) == -1) &&
+ (errno == ERANGE))
+ {
+ asz <<= 1;
+ val = xrealloc (val, asz);
+ }
+
+ if (ret != -1)
+ {
+ *ret_ptr = xmemdup (val, ret);
+ *ret_len = ret;
+ }
+ else if (errno != ENOATTR)
+ call_arg_warn ("fgetxattr", file_name);
+#endif
+}
+#endif
+
+static void xattrs__acls_get_a(struct tar_stat_info *st,
+ char const *file_name, int fd,
+ char **ret_ptr, size_t *ret_len)
+{ /* "system.posix_acl_access" */
+#ifdef HAVE_LIBACL
+ char *val = NULL;
+ acl_t acl;
+
+ if (fd != -1)
+ {
+ if ((acl = acl_get_fd (fd)) == (acl_t)NULL)
+ {
+ if (errno != ENOTSUP)
+ call_arg_warn ("acl_get_fd", file_name);
+ return;
+ }
+ }
+ else if ((acl = acl_get_file (file_name, ACL_TYPE_ACCESS)) == (acl_t)NULL)
+ {
+ if (errno != ENOTSUP)
+ call_arg_warn ("acl_get_file", file_name);
+ return;
+ }
+
+
+ val = acl_to_text(acl, NULL);
+ acl_free (acl);
+
+ if (val == NULL)
+ {
+ call_arg_warn ("acl_to_text", file_name);
+ return;
+ }
+
+ *ret_ptr = xstrdup (val);
+ *ret_len = strlen (val);
+
+ acl_free (val);
+#endif
+}
+
+static void xattrs__acls_get_d(struct tar_stat_info *st,
+ char const *file_name,
+ char **ret_ptr, size_t *ret_len)
+{ /* "system.posix_acl_default" */
+#ifdef HAVE_LIBACL
+ char *val = NULL;
+ acl_t acl;
+
+ if ((acl = acl_get_file (file_name, ACL_TYPE_DEFAULT)) == (acl_t)NULL)
+ {
+ if (errno != ENOTSUP)
+ call_arg_warn ("acl_get_file", file_name);
+ return;
+ }
+
+ val = acl_to_text(acl, NULL);
+ acl_free (acl);
+
+ if (val == NULL)
+ {
+ call_arg_warn ("acl_to_text", file_name);
+ return;
+ }
+
+ *ret_ptr = xstrdup (val);
+ *ret_len = strlen (val);
+
+ acl_free (val);
+#endif
+}
+
+void xattrs_acls_get(struct tar_stat_info *st, char const *file_name, int fd)
+{
+ if (acls_option > 0)
+ {
+ xattrs__acls_get_a (st, file_name, fd,
+ &st->acls_a_ptr, &st->acls_a_len);
+ if (fd == -1) /* Hack: default is on directories only */
+ xattrs__acls_get_d (st, file_name,
+ &st->acls_d_ptr, &st->acls_d_len);
+ }
+}
+
+void xattrs_selinux_get(struct tar_stat_info *st, char const *file_name, int fd)
+{
+#ifdef HAVE_LIBSELINUX
+ if (selinux_context_option > 0)
+ if (fd == -1)
+ {
+ if (lgetfilecon (file_name, &st->cntx_name) == -1)
+ call_arg_warn ("lgetfilecon", file_name);
+ }
+ else if (fgetfilecon (fd, &st->cntx_name) == -1)
+ call_arg_warn ("fgetfilecon", file_name);
+#endif
+}
+
+void xattrs_xattrs_get(struct tar_stat_info *st, char const *file_name, int fd)
+{
+#ifdef HAVE_XATTRS
+ if (xattrs_option > 0)
+ { /* get all xattrs ... this include security.* and system.* if
+ available. We filter them here, but we have to filter them
+ in xattrs_xattrs_set() anyway.
+ */
+ static ssize_t xsz = 1024;
+ static char *xatrs = NULL;
+ ssize_t xret = -1;
+
+ if (!xatrs) xatrs = xmalloc (xsz);
+
+ while (((fd == -1) ?
+ ((xret = listxattr (file_name, xatrs, xsz)) == -1) :
+ ((xret = flistxattr (fd, xatrs, xsz)) == -1)) &&
+ (errno == ERANGE))
+ {
+ xsz <<= 1;
+ xatrs = xrealloc (xatrs, xsz);
+ }
+
+ if (xret == -1)
+ call_arg_warn ((fd == -1) ? "listxattrs" : "flistxattrs", file_name);
+ else
+ {
+ const char *attr = xatrs;
+ static ssize_t asz = 1024;
+ static char *val = NULL;
+
+ if (!val) val = xmalloc (asz);
+
+ while (xret > 0)
+ {
+ size_t len = strlen (attr);
+ ssize_t aret = 0;
+
+ if (strncmp (attr, "user.", strlen("user.")) &&
+ strncmp (attr, "root.", strlen("root.")))
+ goto next_attr; /* only store normal xattrs */
+
+ while (((fd == -1) ?
+ ((aret = getxattr (file_name, attr, val, asz)) == -1) :
+ ((aret = fgetxattr (fd, attr, val, asz)) == -1)) &&
+ (errno == ERANGE))
+ {
+ asz <<= 1;
+ val = xrealloc (val, asz);
+ }
+
+ if (aret != -1)
+ xheader_xattr_add (st, attr, val, aret);
+ else if (errno != ENOATTR)
+ call_arg_warn ("fgetxattr", file_name);
+
+ next_attr:
+ attr += len + 1;
+ xret -= len + 1;
+ }
+ }
+ }
+#endif
+}
+
+static void xattrs__fd_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag,
+ const char *attr,
+ const char *ptr, size_t len)
+{
+#ifdef HAVE_XATTRS
+ if (ptr)
+ {
+ const char *sysname = "setxattr";
+ int ret = -1;
+
+ if (typeflag != SYMTYPE)
+ ret = setxattr (file_name, attr, ptr, len, 0);
+ else
+ {
+ sysname = "lsetxattr";
+ ret = lsetxattr (file_name, attr, ptr, len, 0);
+ }
+
+ if ((ret == -1) && (errno == EPERM))
+ call_arg_warn(sysname, file_name);
+ else if ((ret == -1) && (errno != EOPNOTSUPP))
+ call_arg_error(sysname, file_name);
+ }
+#endif
+}
+
+/* convert unix permissions into an ACL ... needed due to "default" ACLs */
+#ifdef HAVE_LIBACL
+static acl_t perms2acl(int perms)
+{
+ char val[] = "user::---,group::---,other::---";
+ /* 0123456789 123456789 123456789 123456789 */
+
+ /* user */
+ if (perms & 0400) val[ 6] = 'r';
+ if (perms & 0200) val[ 7] = 'w';
+ if (perms & 0100) val[ 8] = 'x';
+
+ /* group */
+ if (perms & 0040) val[17] = 'r';
+ if (perms & 0020) val[18] = 'w';
+ if (perms & 0010) val[19] = 'x';
+
+ /* other */
+ if (perms & 0004) val[28] = 'r';
+ if (perms & 0002) val[29] = 'w';
+ if (perms & 0001) val[30] = 'x';
+
+ return (acl_from_text (val));
+}
+#endif
+
+static void xattrs__acls_set(struct tar_stat_info const *st,
+ char const *file_name, int type,
+ const char *ptr, size_t len)
+{ /* "system.posix_acl_access" */
+#ifdef HAVE_LIBACL
+ acl_t acl;
+
+ if (ptr)
+ {
+ /* assert (strlen (ptr) == len); */
+ acl = acl_from_text (ptr);
+ acls_option = 1;
+ }
+ else if (acls_option > 0)
+ acl = perms2acl (st->stat.st_mode);
+ else
+ return; /* don't call acl functions unless we first hit an ACL, or
+ --acls was passed explicitly */
+
+ if (acl == (acl_t)NULL)
+ {
+ call_arg_warn ("acl_from_text", file_name);
+ return;
+ }
+
+ if (acl_set_file (file_name, type, acl) == -1)
+ {
+ if (errno != ENOTSUP)
+ call_arg_warn ("acl_set_file", file_name);
+ }
+ acl_free (acl);
+#endif
+}
+
+void xattrs_acls_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag)
+{
+ if ((acls_option >= 0) && (typeflag != SYMTYPE))
+ {
+#ifdef HAVE_LIBACL
+ xattrs__acls_set (st, file_name, ACL_TYPE_ACCESS,
+ st->acls_a_ptr, st->acls_a_len);
+ if (S_ISDIR (st->stat.st_mode))
+ xattrs__acls_set (st, file_name, ACL_TYPE_DEFAULT,
+ st->acls_d_ptr, st->acls_d_len);
+#endif
+ }
+}
+
+void xattrs_selinux_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag)
+{
+#ifdef HAVE_LIBSELINUX
+ if ((selinux_context_option >= 0) && st->cntx_name)
+ {
+ const char *sysname = "setfilecon";
+ int ret = -1;
+
+ if (typeflag != SYMTYPE)
+ ret = setfilecon (file_name, st->cntx_name);
+ else
+ {
+ sysname = "lsetfilecon";
+ ret = lsetfilecon (file_name, st->cntx_name);
+ }
+
+ if ((ret == -1) && (errno == EPERM))
+ call_arg_warn(sysname, file_name);
+ else if ((ret == -1) && (errno != EOPNOTSUPP))
+ call_arg_error(sysname, file_name);
+ }
+#endif
+}
+
+void xattrs_xattrs_set(struct tar_stat_info const *st,
+ char const *file_name, char typeflag)
+{
+#ifdef HAVE_XATTRS
+ if ((xattrs_option >= 0) && st->xattr_map_size)
+ {
+ size_t scan = 0;
+
+ while (scan < st->xattr_map_size)
+ {
+ char *keyword = st->xattr_map[scan].xkey;
+
+ /* assert (!memcpy (keyword, "SCHILY.xattr.", strlen("SCHILY.xattr."))); */
+ keyword += strlen("SCHILY.xattr.");
+
+ if (strncmp (keyword, "user.", strlen("user.")) &&
+ strncmp (keyword, "root.", strlen("root.")))
+ continue; /* don't try and set anything but normal xattrs */
+
+ /* should we ignore root.* EPERM errors when not root ? */
+ xattrs__fd_set (st, file_name, typeflag, keyword,
+ st->xattr_map[scan].xval_ptr,
+ st->xattr_map[scan].xval_len);
+
+ ++scan;
+ }
+ }
+#endif
+}
+
--- tar-1.15.1/src/Makefile.in.xattrs 2004-12-21 14:31:02.000000000 +0100
+++ tar-1.15.1/src/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -20,8 +20,6 @@
# Software Foundation, Inc.
-SOURCES = $(tar_SOURCES)
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -113,12 +111,14 @@
delete.$(OBJEXT) extract.$(OBJEXT) xheader.$(OBJEXT) \
incremen.$(OBJEXT) list.$(OBJEXT) mangle.$(OBJEXT) \
misc.$(OBJEXT) names.$(OBJEXT) sparse.$(OBJEXT) \
- system.$(OBJEXT) tar.$(OBJEXT) update.$(OBJEXT) utf8.$(OBJEXT)
+ system.$(OBJEXT) tar.$(OBJEXT) update.$(OBJEXT) utf8.$(OBJEXT) \
+ xattrs.$(OBJEXT)
tar_OBJECTS = $(am_tar_OBJECTS)
am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = ../lib/libtar.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
-tar_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+tar_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
@@ -246,7 +246,7 @@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
-noinst_HEADERS = arith.h common.h tar.h
+noinst_HEADERS = arith.h common.h tar.h xattrs.h
tar_SOURCES = \
buffer.c\
compare.c\
@@ -263,11 +263,12 @@
system.c\
tar.c\
update.c\
- utf8.c
+ utf8.c\
+ xattrs.c
INCLUDES = -I$(top_srcdir)/lib -I../ -I../lib
LDADD = ../lib/libtar.a $(LIBINTL) $(LIBICONV)
-tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+tar_LDADD = $(LIBS) $(LDADD) $(LIB_CLOCK_GETTIME)
all: all-am
.SUFFIXES:
@@ -333,7 +334,8 @@
f=`echo "$$p" | \
sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
for opt in --help --version; do \
- if "$(DESTDIR)$(bindir)/$$f" $$opt > c$${pid}_.out 2> c$${pid}_.err \
+ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
+ 2>c$${pid}_.err </dev/null \
&& test -n "`cat c$${pid}_.out`" \
&& test -z "`cat c$${pid}_.err`"; then :; \
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
@@ -364,6 +366,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tar.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattrs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xheader.Po@am__quote@
.c.o:
--- tar-1.15.1/src/xheader.c.xattrs 2006-10-04 11:52:36.000000000 +0200
+++ tar-1.15.1/src/xheader.c 2006-10-04 11:52:36.000000000 +0200
@@ -414,6 +414,74 @@
global_header_count++;
}
+void xheader_xattr_init(struct tar_stat_info *st)
+{
+ st->xattr_map = NULL;
+ st->xattr_map_size = 0;
+}
+
+void xheader_xattr_free(struct xattr_array *xattr_map, size_t xattr_map_size)
+{
+ size_t scan = 0;
+
+ while (scan < xattr_map_size)
+ {
+ free (xattr_map[scan].xkey);
+ free (xattr_map[scan].xval_ptr);
+
+ ++scan;
+ }
+ free (xattr_map);
+}
+
+static void xheader_xattr__add(struct xattr_array **xattr_map,
+ size_t *xattr_map_size,
+ const char *key, const char *val, size_t len)
+{
+ size_t pos = (*xattr_map_size)++;
+
+ *xattr_map = xrealloc (*xattr_map,
+ *xattr_map_size * sizeof(struct xattr_array));
+ (*xattr_map)[pos].xkey = xstrdup (key);
+ (*xattr_map)[pos].xval_ptr = xmemdup (val, len);
+ (*xattr_map)[pos].xval_len = len;
+}
+
+void xheader_xattr_add(struct tar_stat_info *st,
+ const char *key, const char *val, size_t len)
+{
+ size_t klen = strlen (key);
+ char *xkey = xmalloc (strlen("SCHILY.xattr.") + klen + 1);
+ char *tmp = xkey;
+
+ tmp = stpcpy (tmp, "SCHILY.xattr.");
+ tmp = stpcpy (tmp, key);
+
+ xheader_xattr__add (&st->xattr_map, &st->xattr_map_size, xkey, val, len);
+
+ free (xkey);
+}
+
+void xheader_xattr_copy(const struct tar_stat_info *st,
+ struct xattr_array **xattr_map, size_t *xattr_map_size)
+{
+ size_t scan = 0;
+
+ *xattr_map = NULL;
+ *xattr_map_size = 0;
+
+ while (scan < st->xattr_map_size)
+ {
+ char *key = st->xattr_map[scan].xkey;
+ char *val = st->xattr_map[scan].xval_ptr;
+ size_t len = st->xattr_map[scan].xval_len;
+
+ xheader_xattr__add(xattr_map, xattr_map_size, key, val, len);
+
+ ++scan;
+ }
+}
+
/* General Interface */
@@ -421,9 +489,10 @@
{
char const *keyword;
void (*coder) (struct tar_stat_info const *, char const *,
- struct xheader *, void *data);
- void (*decoder) (struct tar_stat_info *, char const *);
+ struct xheader *, void const *data);
+ void (*decoder) (struct tar_stat_info *, char const *, char const *, size_t);
bool protect;
+ bool prefix;
};
/* This declaration must be extern, because ISO C99 section 6.9.2
@@ -440,8 +509,17 @@
struct xhdr_tab const *p;
for (p = xhdr_tab; p->keyword; p++)
- if (strcmp (p->keyword, keyword) == 0)
- return p;
+ if (p->prefix)
+ {
+ if (strncmp (p->keyword, keyword, strlen(p->keyword)) == 0)
+ return p;
+ }
+ else
+ {
+ if (strcmp (p->keyword, keyword) == 0)
+ return p;
+ }
+
return NULL;
}
@@ -451,7 +529,7 @@
struct xhdr_tab const *p;
for (p = xhdr_tab; p->keyword; p++)
- if (p->protect && fnmatch (pattern, p->keyword, 0) == 0)
+ if (!p->prefix && p->protect && fnmatch (pattern, p->keyword, 0) == 0)
return true;
return false;
}
@@ -462,7 +540,7 @@
struct xhdr_tab const *p;
for (p = xhdr_tab; p->keyword; p++)
- if (p->protect && strcmp (p->keyword, keyword) == 0)
+ if (!p->prefix && p->protect && strcmp (p->keyword, keyword) == 0)
return true;
return false;
}
@@ -522,7 +600,7 @@
{
struct xhdr_tab const *t = locate_handler (kp->pattern);
if (t)
- t->decoder (st, kp->value);
+ t->decoder (st, t->keyword, kp->value, strlen (kp->value));
}
}
@@ -538,7 +616,10 @@
t = locate_handler (keyword);
if (t)
- t->decoder (st, value);
+ t->decoder (st, keyword, value, strlen (value));
+ else
+ ERROR((0, 0, _("Ignoring unknown extended header keyword `%s'"),
+ keyword));
}
void
@@ -665,9 +746,10 @@
}
static void
-xheader_print (struct xheader *xhdr, char const *keyword, char const *value)
+xheader_print_n (struct xheader *xhdr, char const *keyword, char const *value,
+ size_t val_len)
{
- size_t len = strlen (keyword) + strlen (value) + 3; /* ' ' + '=' + '\n' */
+ size_t len = strlen (keyword) + val_len + 3; /* ' ' + '=' + '\n' */
size_t p, n = 0;
char nbuf[100];
@@ -683,10 +765,16 @@
obstack_1grow (xhdr->stk, ' ');
obstack_grow (xhdr->stk, keyword, strlen (keyword));
obstack_1grow (xhdr->stk, '=');
- obstack_grow (xhdr->stk, value, strlen (value));
+ obstack_grow (xhdr->stk, value, val_len);
obstack_1grow (xhdr->stk, '\n');
}
+static void
+xheader_print (struct xheader *xhdr, char const *keyword, char const *value)
+{
+ xheader_print_n (xhdr, keyword, value, strlen (value));
+}
+
void
xheader_finish (struct xheader *xhdr)
{
@@ -813,38 +901,44 @@
dummy_coder (struct tar_stat_info const *st __attribute__ ((unused)),
char const *keyword __attribute__ ((unused)),
struct xheader *xhdr __attribute__ ((unused)),
- void *data __attribute__ ((unused)))
+ const void *data __attribute__ ((unused)))
{
}
static void
dummy_decoder (struct tar_stat_info *st __attribute__ ((unused)),
- char const *arg __attribute__ ((unused)))
+ char const *keyword __attribute__ ((unused)),
+ char const *arg __attribute__ ((unused)),
+ size_t size __attribute__((unused)))
{
}
static void
atime_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_time (st->stat.st_atime, st->atime_nsec, keyword, xhdr);
}
static void
-atime_decoder (struct tar_stat_info *st, char const *arg)
+atime_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__((unused)))
{
decode_time (arg, &st->stat.st_atime, &st->atime_nsec);
}
static void
gid_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_num (st->stat.st_gid, keyword, xhdr);
}
static void
-gid_decoder (struct tar_stat_info *st, char const *arg)
+gid_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (gid_t), "gid"))
@@ -853,65 +947,75 @@
static void
gname_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_string (st->gname, keyword, xhdr);
}
static void
-gname_decoder (struct tar_stat_info *st, char const *arg)
+gname_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
decode_string (&st->gname, arg);
}
static void
linkpath_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_string (st->link_name, keyword, xhdr);
}
static void
-linkpath_decoder (struct tar_stat_info *st, char const *arg)
+linkpath_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
decode_string (&st->link_name, arg);
}
static void
ctime_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_time (st->stat.st_ctime, st->ctime_nsec, keyword, xhdr);
}
static void
-ctime_decoder (struct tar_stat_info *st, char const *arg)
+ctime_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
decode_time (arg, &st->stat.st_ctime, &st->ctime_nsec);
}
static void
mtime_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_time (st->stat.st_mtime, st->mtime_nsec, keyword, xhdr);
}
static void
-mtime_decoder (struct tar_stat_info *st, char const *arg)
+mtime_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
decode_time (arg, &st->stat.st_mtime, &st->mtime_nsec);
}
static void
path_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_string (st->file_name, keyword, xhdr);
}
static void
-path_decoder (struct tar_stat_info *st, char const *arg)
+path_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
decode_string (&st->orig_file_name, arg);
decode_string (&st->file_name, arg);
@@ -920,13 +1024,15 @@
static void
size_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_num (st->stat.st_size, keyword, xhdr);
}
static void
-size_decoder (struct tar_stat_info *st, char const *arg)
+size_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), "size"))
@@ -935,13 +1041,15 @@
static void
uid_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_num (st->stat.st_uid, keyword, xhdr);
}
static void
-uid_decoder (struct tar_stat_info *st, char const *arg)
+uid_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (uid_t), "uid"))
@@ -950,26 +1058,31 @@
static void
uname_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data __attribute__ ((unused)))
+ struct xheader *xhdr, const void *data __attribute__ ((unused)))
{
code_string (st->uname, keyword, xhdr);
}
static void
-uname_decoder (struct tar_stat_info *st, char const *arg)
+uname_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)), char const *arg,
+ size_t size __attribute__ ((unused)))
{
decode_string (&st->uname, arg);
}
static void
sparse_size_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data)
+ struct xheader *xhdr, const void *data)
{
size_coder (st, keyword, xhdr, data);
}
static void
-sparse_size_decoder (struct tar_stat_info *st, char const *arg)
+sparse_size_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)),
+ char const *arg,
+ size_t size __attribute__ ((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), "GNU.sparse.size"))
@@ -979,13 +1092,16 @@
static void
sparse_numblocks_coder (struct tar_stat_info const *st, char const *keyword,
struct xheader *xhdr,
- void *data __attribute__ ((unused)))
+ const void *data __attribute__ ((unused)))
{
code_num (st->sparse_map_avail, keyword, xhdr);
}
static void
-sparse_numblocks_decoder (struct tar_stat_info *st, char const *arg)
+sparse_numblocks_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)),
+ char const *arg,
+ size_t size __attribute__ ((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, SIZE_MAX, "GNU.sparse.numblocks"))
@@ -998,14 +1114,17 @@
static void
sparse_offset_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data)
+ struct xheader *xhdr, const void *data)
{
size_t i = *(size_t*)data;
code_num (st->sparse_map[i].offset, keyword, xhdr);
}
static void
-sparse_offset_decoder (struct tar_stat_info *st, char const *arg)
+sparse_offset_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)),
+ char const *arg,
+ size_t size __attribute__ ((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), "GNU.sparse.offset"))
@@ -1020,14 +1139,17 @@
static void
sparse_numbytes_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void *data)
+ struct xheader *xhdr, const void *data)
{
size_t i = *(size_t*)data;
code_num (st->sparse_map[i].numbytes, keyword, xhdr);
}
static void
-sparse_numbytes_decoder (struct tar_stat_info *st, char const *arg)
+sparse_numbytes_decoder (struct tar_stat_info *st,
+ char const *keyword __attribute__ ((unused)),
+ char const *arg,
+ size_t size __attribute__ ((unused)))
{
uintmax_t u;
if (decode_num (&u, arg, SIZE_MAX, "GNU.sparse.numbytes"))
@@ -1041,28 +1163,94 @@
}
}
+static void
+xattr_selinux_coder (struct tar_stat_info const *st, char const *keyword,
+ struct xheader *xhdr, void const *data)
+{
+ code_string (st->cntx_name, keyword, xhdr);
+}
+
+static void
+xattr_selinux_decoder (struct tar_stat_info *st,
+ char const *keyword, char const *arg, size_t size)
+{
+ decode_string (&st->cntx_name, arg);
+}
+
+static void
+xattr_acls_a_coder (struct tar_stat_info const *st , char const *keyword,
+ struct xheader *xhdr, void const *data)
+{
+ xheader_print_n (xhdr, keyword, st->acls_a_ptr, st->acls_a_len);
+}
+
+static void
+xattr_acls_a_decoder (struct tar_stat_info *st,
+ char const *keyword, char const *arg, size_t size)
+{
+ st->acls_a_ptr = xmemdup (arg, size);
+ st->acls_a_len = size;
+}
+
+static void
+xattr_acls_d_coder (struct tar_stat_info const *st , char const *keyword,
+ struct xheader *xhdr, void const *data)
+{
+ xheader_print_n (xhdr, keyword, st->acls_d_ptr, st->acls_d_len);
+}
+
+static void
+xattr_acls_d_decoder (struct tar_stat_info *st,
+ char const *keyword, char const *arg, size_t size)
+{
+ st->acls_d_ptr = xmemdup (arg, size);
+ st->acls_d_len = size;
+}
+
+static void
+xattr_coder (struct tar_stat_info const *st , char const *keyword,
+ struct xheader *xhdr, void const *data)
+{
+ struct xattr_array *xattr_map = st->xattr_map;
+ const size_t *off = data;
+ xheader_print_n (xhdr, keyword,
+ xattr_map[*off].xval_ptr, xattr_map[*off].xval_len);
+}
+
+static void
+xattr_decoder (struct tar_stat_info *st,
+ char const *keyword, char const *arg, size_t size)
+{
+ char *xstr = NULL;
+
+ xstr = xmemdup(arg, size + 1);
+ xheader_xattr_add(st, keyword + strlen("SCHILY.xattr."), xstr, size);
+ free(xstr);
+}
+
+
struct xhdr_tab const xhdr_tab[] = {
- { "atime", atime_coder, atime_decoder, false },
- { "comment", dummy_coder, dummy_decoder, false },
- { "charset", dummy_coder, dummy_decoder, false },
- { "ctime", ctime_coder, ctime_decoder, false },
- { "gid", gid_coder, gid_decoder, false },
- { "gname", gname_coder, gname_decoder, false },
- { "linkpath", linkpath_coder, linkpath_decoder, false },
- { "mtime", mtime_coder, mtime_decoder, false },
- { "path", path_coder, path_decoder, false },
- { "size", size_coder, size_decoder, false },
- { "uid", uid_coder, uid_decoder, false },
- { "uname", uname_coder, uname_decoder, false },
+ { "atime", atime_coder, atime_decoder, false, false },
+ { "comment", dummy_coder, dummy_decoder, false, false },
+ { "charset", dummy_coder, dummy_decoder, false, false },
+ { "ctime", ctime_coder, ctime_decoder, false, false },
+ { "gid", gid_coder, gid_decoder, false, false },
+ { "gname", gname_coder, gname_decoder, false, false },
+ { "linkpath", linkpath_coder, linkpath_decoder, false, false },
+ { "mtime", mtime_coder, mtime_decoder, false, false },
+ { "path", path_coder, path_decoder, false, false },
+ { "size", size_coder, size_decoder, false, false },
+ { "uid", uid_coder, uid_decoder, false, false },
+ { "uname", uname_coder, uname_decoder, false, false },
/* Sparse file handling */
- { "GNU.sparse.size", sparse_size_coder, sparse_size_decoder, true },
+ { "GNU.sparse.size", sparse_size_coder, sparse_size_decoder, true, false },
{ "GNU.sparse.numblocks", sparse_numblocks_coder, sparse_numblocks_decoder,
- true },
+ true, false },
{ "GNU.sparse.offset", sparse_offset_coder, sparse_offset_decoder,
- true },
+ true, false },
{ "GNU.sparse.numbytes", sparse_numbytes_coder, sparse_numbytes_decoder,
- true },
+ true, false },
#if 0 /* GNU private keywords (not yet implemented) */
@@ -1086,5 +1274,21 @@
{ "GNU.volume.offset", volume_offset_coder, volume_offset_decoder, false },
#endif
+ /* SELinux, use the star format... */
+ { "SCHILY.xattr.security.selinux",
+ xattr_selinux_coder, xattr_selinux_decoder, false, false },
+
+ /* ACLs, use the star format... */
+ { "SCHILY.xattr.system.posix_acl_access",
+ xattr_acls_a_coder, xattr_acls_a_decoder, false, false },
+
+ { "SCHILY.xattr.system.posix_acl_default",
+ xattr_acls_d_coder, xattr_acls_d_decoder, false, false },
+
+ /* xattr's, use the star format note we only save the user/root varients... */
+ { "SCHILY.xattr.user", xattr_coder, xattr_decoder, false, true },
+ { "SCHILY.xattr.root", xattr_coder, xattr_decoder, false, true },
+ { "SCHILY.xattr", dummy_coder, dummy_decoder, false, true },
+
{ NULL, NULL, NULL, false }
};
--- tar-1.15.1/src/common.h.xattrs 2004-12-21 15:31:58.000000000 +0100
+++ tar-1.15.1/src/common.h 2006-10-04 11:52:36.000000000 +0200
@@ -247,6 +247,15 @@
/* If positive, preserve permissions when extracting. */
GLOBAL int same_permissions_option;
+/* If positive, save the SELinux context. */
+GLOBAL int selinux_context_option;
+
+/* If positive, save the ACLs. */
+GLOBAL int acls_option;
+
+/* If positive, save the user and root xattrs. */
+GLOBAL int xattrs_option;
+
/* When set, strip the given number of file name components from the file name
before extracting */
GLOBAL size_t strip_name_components;
@@ -654,6 +663,9 @@
void update_archive (void);
+/* Module attrs.c. */
+#include "xattrs.h"
+
/* Module xheader.c. */
void xheader_decode (struct tar_stat_info *);
@@ -669,6 +681,12 @@
void xheader_write (char, char *, struct xheader *);
void xheader_write_global (void);
void xheader_set_option (char *string);
+void xheader_xattr_init(struct tar_stat_info *st);
+void xheader_xattr_free(struct xattr_array *vals, size_t sz);
+void xheader_xattr_copy(const struct tar_stat_info *st,
+ struct xattr_array **vals, size_t *sz);
+void xheader_xattr_add(struct tar_stat_info *st,
+ const char *key, const char *val, size_t len);
/* Module system.c */
@@ -703,3 +721,9 @@
/* Module utf8.c */
bool string_ascii_p (const char *str);
bool utf8_convert (bool to_utf, char const *input, char **output);
+
+/* backport externs ... */
+void
+call_arg_error (char const *call, char const *name);
+void
+call_arg_warn (char const *call, char const *name);
--- tar-1.15.1/src/tar.h.xattrs 2004-04-04 11:53:30.000000000 +0200
+++ tar-1.15.1/src/tar.h 2006-10-04 11:52:36.000000000 +0200
@@ -265,6 +265,14 @@
size_t numbytes;
};
+/* Information about xattrs for a file. */
+struct xattr_array
+ {
+ char *xkey;
+ char *xval_ptr;
+ size_t xval_len;
+ };
+
struct tar_stat_info
{
char *orig_file_name; /* name of file read from the archive header */
@@ -278,6 +286,15 @@
unsigned int devmajor; /* device major number */
char *uname; /* user name of owner */
char *gname; /* group name of owner */
+
+ char *cntx_name; /* SELinux context for the current archive entry. */
+
+ char *acls_a_ptr; /* Access ACLs for the current archive entry. */
+ size_t acls_a_len; /* Access ACLs for the current archive entry. */
+
+ char *acls_d_ptr; /* Default ACLs for the current archive entry. */
+ size_t acls_d_len; /* Default ACLs for the current archive entry. */
+
struct stat stat; /* regular filesystem stat */
/* Nanosecond parts of file timestamps (if available) */
@@ -294,7 +311,10 @@
sparse_map array. Zero if the file is
not sparse */
size_t sparse_map_size; /* Size of the sparse map */
- struct sp_array *sparse_map;
+ struct sp_array *sparse_map;
+
+ size_t xattr_map_size; /* Size of the xattr map */
+ struct xattr_array *xattr_map;
};
union block
--- tar-1.15.1/src/create.c.xattrs 2006-10-04 11:52:36.000000000 +0200
+++ tar-1.15.1/src/create.c 2006-10-04 11:54:47.000000000 +0200
@@ -753,6 +753,30 @@
GNAME_TO_CHARS (st->gname, header->header.gname);
}
+ if (archive_format == POSIX_FORMAT)
+ {
+ if (acls_option > 0)
+ {
+ if (st->acls_a_ptr)
+ xheader_store ("SCHILY.xattr.system.posix_acl_access", st, NULL);
+ if (st->acls_d_ptr)
+ xheader_store ("SCHILY.xattr.system.posix_acl_default", st, NULL);
+ }
+ if ((selinux_context_option > 0) && st->cntx_name)
+ xheader_store ("SCHILY.xattr.security.selinux", st, NULL);
+ if (xattrs_option > 0)
+ {
+ size_t scan_xattr = 0;
+ struct xattr_array *xattr_map = st->xattr_map;
+
+ while (scan_xattr < st->xattr_map_size)
+ {
+ xheader_store (xattr_map[scan_xattr].xkey, st, &scan_xattr);
+ ++scan_xattr;
+ }
+ }
+ }
+
return header;
}
@@ -980,6 +1004,10 @@
off_t block_ordinal = current_block_ordinal ();
st->stat.st_size = 0; /* force 0 size on dir */
+ xattrs_acls_get(st, st->orig_file_name, -1);
+ xattrs_selinux_get(st, st->orig_file_name, -1);
+ xattrs_xattrs_get(st, st->orig_file_name, -1);
+
blk = start_header (st);
if (!blk)
return;
@@ -1440,8 +1468,13 @@
}
}
else
- fd = -1;
+ fd = -1;
+ /* zero length files mean dumpable == no, *sigh* */
+ xattrs_acls_get(st, p, fd);
+ xattrs_selinux_get(st, p, fd);
+ xattrs_xattrs_get(st, p, fd);
+
if (fd != -1 && sparse_option && sparse_file_p (st))
{
status = sparse_dump_file (fd, st);
@@ -1500,6 +1533,7 @@
block_ordinal = current_block_ordinal ();
st->stat.st_size = 0; /* force 0 size on symlink */
+ xattrs_selinux_get(st, p, -1);
header = start_header (st);
if (!header)
return;
--- tar-1.15.1/src/tar.c.xattrs 2006-10-04 11:52:36.000000000 +0200
+++ tar-1.15.1/src/tar.c 2006-10-04 11:52:36.000000000 +0200
@@ -180,7 +180,8 @@
enum
{
- ANCHORED_OPTION = CHAR_MAX + 1,
+ ACLS_OPTION = CHAR_MAX + 1,
+ ANCHORED_OPTION,
ATIME_PRESERVE_OPTION,
BACKUP_OPTION,
CHECKPOINT_OPTION,
@@ -197,14 +198,17 @@
LICENSE_OPTION,
MODE_OPTION,
NEWER_MTIME_OPTION,
+ NO_ACLS_OPTION,
NO_ANCHORED_OPTION,
NO_IGNORE_CASE_OPTION,
NO_OVERWRITE_DIR_OPTION,
NO_RECURSION_OPTION,
NO_SAME_OWNER_OPTION,
NO_SAME_PERMISSIONS_OPTION,
+ NO_SELINUX_CONTEXT_OPTION,
NO_WILDCARDS_OPTION,
NO_WILDCARDS_MATCH_SLASH_OPTION,
+ NO_XATTR_OPTION,
NULL_OPTION,
NUMERIC_OWNER_OPTION,
OCCURRENCE_OPTION,
@@ -222,6 +226,7 @@
RMT_COMMAND_OPTION,
RSH_COMMAND_OPTION,
SAME_OWNER_OPTION,
+ SELINUX_CONTEXT_OPTION,
SHOW_DEFAULTS_OPTION,
SHOW_OMITTED_DIRS_OPTION,
STRIP_COMPONENTS_OPTION,
@@ -233,7 +238,8 @@
VERSION_OPTION,
VOLNO_FILE_OPTION,
WILDCARDS_OPTION,
- WILDCARDS_MATCH_SLASH_OPTION
+ WILDCARDS_MATCH_SLASH_OPTION,
+ XATTR_OPTION
};
const char *argp_program_version = "tar (" PACKAGE_NAME ") " VERSION;
@@ -326,6 +332,10 @@
{NULL, 0, NULL, 0,
N_("Handling of file attributes:"), 30 },
+ {"acls", ACLS_OPTION, 0, 0,
+ N_("Save the ACLs to the archive"), 31 },
+ {"no-acls", NO_ACLS_OPTION, 0, 0,
+ N_("Don't extract the ACLs from the archive"), 31 },
{"owner", OWNER_OPTION, N_("NAME"), 0,
N_("force NAME as owner for added files"), 31 },
{"group", GROUP_OPTION, N_("NAME"), 0,
@@ -350,6 +360,14 @@
{"preserve-order", 's', 0, 0,
N_("sort names to extract to match archive"), 31 },
{"same-order", 0, 0, OPTION_ALIAS, NULL, 31 },
+ {"selinux", SELINUX_CONTEXT_OPTION, 0, 0,
+ N_("Save the SELinux context to the archive"), 31 },
+ {"no-selinux", NO_SELINUX_CONTEXT_OPTION, 0, 0,
+ N_("Don't extract the SELinux context from the archive"), 31 },
+ {"xattrs", XATTR_OPTION, 0, 0,
+ N_("Save the user/root xattrs to the archive"), 31 },
+ {"no-xattrs", NO_XATTR_OPTION, 0, 0,
+ N_("Don't extract the user/root xattrs from the archive"), 31 },
{"preserve", PRESERVE_OPTION, 0, 0,
N_("same as both -p and -s"), 31 },
@@ -1157,6 +1175,37 @@
same_permissions_option = -1;
break;
+ case ACLS_OPTION:
+ set_archive_format ("posix");
+ acls_option = 1;
+ break;
+
+ case NO_ACLS_OPTION:
+ acls_option = -1;
+ break;
+
+ case SELINUX_CONTEXT_OPTION:
+ set_archive_format ("posix");
+ selinux_context_option = 1;
+ break;
+
+ case NO_SELINUX_CONTEXT_OPTION:
+ selinux_context_option = -1;
+ break;
+
+ case XATTR_OPTION:
+ set_archive_format ("posix");
+ if (!acls_option) acls_option = 1;
+ if (!selinux_context_option) selinux_context_option = 1;
+ xattrs_option = 1;
+ break;
+
+ case NO_XATTR_OPTION:
+ if (!acls_option) acls_option = -1;
+ if (!selinux_context_option) selinux_context_option = -1;
+ xattrs_option = -1;
+ break;
+
case RECURSION_OPTION:
recursion_option = FNM_LEADING_DIR;
break;
@@ -1545,6 +1594,29 @@
|| subcommand_option != LIST_SUBCOMMAND))
USAGE_ERROR ((0, 0, _("--pax-option can be used only on POSIX archives")));
+ /* star create's non-POSIX typed archives with xattr support, so allow the
+ extra headers */
+ if ((acls_option > 0)
+ && archive_format != POSIX_FORMAT
+ && (subcommand_option != EXTRACT_SUBCOMMAND
+ || subcommand_option != DIFF_SUBCOMMAND
+ || subcommand_option != LIST_SUBCOMMAND))
+ USAGE_ERROR ((0, 0, _("--acls can be used only on POSIX archives")));
+
+ if ((selinux_context_option > 0)
+ && archive_format != POSIX_FORMAT
+ && (subcommand_option != EXTRACT_SUBCOMMAND
+ || subcommand_option != DIFF_SUBCOMMAND
+ || subcommand_option != LIST_SUBCOMMAND))
+ USAGE_ERROR ((0, 0, _("--selinux can be used only on POSIX archives")));
+
+ if ((xattrs_option > 0)
+ && archive_format != POSIX_FORMAT
+ && (subcommand_option != EXTRACT_SUBCOMMAND
+ || subcommand_option != DIFF_SUBCOMMAND
+ || subcommand_option != LIST_SUBCOMMAND))
+ USAGE_ERROR ((0, 0, _("--xattrs can be used only on POSIX archives")));
+
/* If ready to unlink hierarchies, so we are for simpler files. */
if (recursive_unlink_option)
old_files_option = UNLINK_FIRST_OLD_FILES;
@@ -1729,11 +1801,15 @@
void
tar_stat_destroy (struct tar_stat_info *st)
{
+ xheader_xattr_free (st->xattr_map, st->xattr_map_size);
free (st->orig_file_name);
free (st->file_name);
free (st->link_name);
free (st->uname);
free (st->gname);
+ free (st->cntx_name);
+ free (st->acls_a_ptr);
+ free (st->acls_d_ptr);
free (st->sparse_map);
memset (st, 0, sizeof (*st));
}
--- tar-1.15.1/scripts/Makefile.in.xattrs 2004-12-21 14:31:01.000000000 +0100
+++ tar-1.15.1/scripts/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -299,7 +299,8 @@
esac; \
f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
for opt in --help --version; do \
- if "$(DESTDIR)$(libexecdir)/$$f" $$opt > c$${pid}_.out 2> c$${pid}_.err \
+ if "$(DESTDIR)$(libexecdir)/$$f" $$opt >c$${pid}_.out \
+ 2>c$${pid}_.err </dev/null \
&& test -n "`cat c$${pid}_.out`" \
&& test -z "`cat c$${pid}_.err`"; then :; \
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
@@ -332,7 +333,8 @@
esac; \
f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
for opt in --help --version; do \
- if "$(DESTDIR)$(sbindir)/$$f" $$opt > c$${pid}_.out 2> c$${pid}_.err \
+ if "$(DESTDIR)$(sbindir)/$$f" $$opt >c$${pid}_.out \
+ 2>c$${pid}_.err </dev/null \
&& test -n "`cat c$${pid}_.out`" \
&& test -z "`cat c$${pid}_.err`"; then :; \
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
--- tar-1.15.1/config.hin.xattrs 2004-12-21 14:33:11.000000000 +0100
+++ tar-1.15.1/config.hin 2006-10-04 11:52:36.000000000 +0200
@@ -76,6 +76,9 @@
includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
#undef HAVE_ALLOCA_H
+/* Define to 1 if you have the <attr/xattr.h> header file. */
+#undef HAVE_ATTR_XATTR_H
+
/* Define to 1 if you have the `btowc' function. */
#undef HAVE_BTOWC
@@ -222,9 +225,18 @@
/* Define to 1 if you have the <features.h> header file. */
#undef HAVE_FEATURES_H
+/* Define to 1 if you have the `fgetxattr' function. */
+#undef HAVE_FGETXATTR
+
+/* Define to 1 if you have the `flistxattr' function. */
+#undef HAVE_FLISTXATTR
+
/* Define to 1 if you have the `flockfile' function. */
#undef HAVE_FLOCKFILE
+/* Define to 1 if you have the `fsetxattr' function. */
+#undef HAVE_FSETXATTR
+
/* Define to 1 if you have the `fsync' function. */
#undef HAVE_FSYNC
@@ -252,6 +264,9 @@
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
+/* Define to 1 if you have the `getxattr' function. */
+#undef HAVE_GETXATTR
+
/* Define if you have the iconv() function. */
#undef HAVE_ICONV
@@ -280,12 +295,27 @@
/* Define to 1 if you have the `lchown' function. */
#undef HAVE_LCHOWN
+/* Define to 1 if you have the `lgetxattr' function. */
+#undef HAVE_LGETXATTR
+
+/* Define to 1 if you have the `acl' library (-lacl). */
+#undef HAVE_LIBACL
+
+/* Define to 1 if you have the `selinux' library (-lselinux). */
+#undef HAVE_LIBSELINUX
+
/* Define to 1 if you have the <linewrap.h> header file. */
#undef HAVE_LINEWRAP_H
/* Define to 1 if you have the <linux/fd.h> header file. */
#undef HAVE_LINUX_FD_H
+/* Define to 1 if you have the `listxattr' function. */
+#undef HAVE_LISTXATTR
+
+/* Define to 1 if you have the `llistxattr' function. */
+#undef HAVE_LLISTXATTR
+
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
@@ -298,6 +328,9 @@
/* Define if you have the 'long long' type. */
#undef HAVE_LONG_LONG
+/* Define to 1 if you have the `lsetxattr' function. */
+#undef HAVE_LSETXATTR
+
/* Define to 1 if you have the `lstat' function. */
#undef HAVE_LSTAT
@@ -358,12 +391,18 @@
/* Define to 1 if you have the <search.h> header file. */
#undef HAVE_SEARCH_H
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
+#undef HAVE_SELINUX_SELINUX_H
+
/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
+/* Define to 1 if you have the `setxattr' function. */
+#undef HAVE_SETXATTR
+
/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H
@@ -473,6 +512,9 @@
/* Define to 1 if you have the <sysexits.h> header file. */
#undef HAVE_SYSEXITS_H
+/* Define to 1 if you have the <sys/acl.h> header file. */
+#undef HAVE_SYS_ACL_H
+
/* Define to 1 if you have the <sys/buf.h> header file. */
#undef HAVE_SYS_BUF_H
@@ -580,6 +622,9 @@
/* Define to 1 if you have the `wmempcpy' function. */
#undef HAVE_WMEMPCPY
+/* Define if we have a working extended attributes */
+#undef HAVE_XATTRS
+
/* Define to 1 if the system has the type `_Bool'. */
#undef HAVE__BOOL
--- tar-1.15.1/configure.ac.xattrs 2004-12-21 14:29:02.000000000 +0100
+++ tar-1.15.1/configure.ac 2006-10-04 11:52:36.000000000 +0200
@@ -40,6 +40,9 @@
sys/inet.h sys/io/trioctl.h \
sys/mtio.h sys/time.h sys/tprintf.h sys/tape.h \
unistd.h locale.h)
+AC_CHECK_HEADERS(selinux/selinux.h)
+AC_CHECK_HEADERS(attr/xattr.h)
+AC_CHECK_HEADERS(sys/acl.h)
AC_CHECK_HEADERS([sys/buf.h], [], [],
[#if HAVE_SYS_PARAM_H
@@ -110,6 +113,12 @@
LIBS=$tar_save_LIBS
AC_CHECK_FUNCS(fsync lstat mkfifo readlink strerror symlink setlocale utimes)
+AC_CHECK_FUNCS(getxattr fgetxattr lgetxattr \
+ setxattr fsetxattr lsetxattr \
+ listxattr flistxattr llistxattr,
+ AC_DEFINE(HAVE_XATTRS,,[Define if we have a working extended attributes]),)
+AC_CHECK_LIB(selinux, getfilecon)
+AC_CHECK_LIB(acl, acl_get_fd)
AC_CHECK_DECLS([getgrgid],,, [#include <grp.h>])
AC_CHECK_DECLS([getpwuid],,, [#include <pwd.h>])
AC_CHECK_DECLS([time],,, [#include <time.h>])
--- tar-1.15.1/configure.xattrs 2006-10-04 11:52:36.000000000 +0200
+++ tar-1.15.1/configure 2006-10-04 11:52:36.000000000 +0200
@@ -5317,6 +5317,456 @@
done
+for ac_header in selinux/selinux.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to bug-tar@gnu.org ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in attr/xattr.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to bug-tar@gnu.org ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sys/acl.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to bug-tar@gnu.org ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in sys/buf.h
do
@@ -11470,20 +11920,20 @@
# dnl Persuade glibc <time.h> to declare these functions.
- # Solaris 2.5.1 needs -lposix4 to get the clock_gettyme function.
+ # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
# Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
# Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all*
# programs in the package would end up linked with that potentially-shared
# library, inducing unnecessary run-time overhead.
fetish_saved_libs=$LIBS
- echo "$as_me:$LINENO: checking for library containing clock_gettyme" >&5
-echo $ECHO_N "checking for library containing clock_gettyme... $ECHO_C" >&6
-if test "${ac_cv_search_clock_gettyme+set}" = set; then
+ echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5
+echo $ECHO_N "checking for library containing clock_gettime... $ECHO_C" >&6
+if test "${ac_cv_search_clock_gettime+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_func_search_save_LIBS=$LIBS
-ac_cv_search_clock_gettyme=no
+ac_cv_search_clock_gettime=no
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -11497,11 +11947,11 @@
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char clock_gettyme ();
+char clock_gettime ();
int
main ()
{
-clock_gettyme ();
+clock_gettime ();
;
return 0;
}
@@ -11528,7 +11978,7 @@
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_search_clock_gettyme="none required"
+ ac_cv_search_clock_gettime="none required"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -11536,7 +11986,7 @@
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_clock_gettyme" = no; then
+if test "$ac_cv_search_clock_gettime" = no; then
for ac_lib in rt posix4; do
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
@@ -11552,11 +12002,11 @@
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char clock_gettyme ();
+char clock_gettime ();
int
main ()
{
-clock_gettyme ();
+clock_gettime ();
;
return 0;
}
@@ -11583,7 +12033,7 @@
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_search_clock_gettyme="-l$ac_lib"
+ ac_cv_search_clock_gettime="-l$ac_lib"
break
else
echo "$as_me: failed program was:" >&5
@@ -11596,18 +12046,18 @@
fi
LIBS=$ac_func_search_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettyme" >&5
-echo "${ECHO_T}$ac_cv_search_clock_gettyme" >&6
-if test "$ac_cv_search_clock_gettyme" != no; then
- test "$ac_cv_search_clock_gettyme" = "none required" || LIBS="$ac_cv_search_clock_gettyme $LIBS"
- test "$ac_cv_search_clock_gettyme" = "none required" ||
- LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettyme
+echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5
+echo "${ECHO_T}$ac_cv_search_clock_gettime" >&6
+if test "$ac_cv_search_clock_gettime" != no; then
+ test "$ac_cv_search_clock_gettime" = "none required" || LIBS="$ac_cv_search_clock_gettime $LIBS"
+ test "$ac_cv_search_clock_gettime" = "none required" ||
+ LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime
fi
-for ac_func in clock_gettyme clock_settime
+for ac_func in clock_gettime clock_settime
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -20541,17 +20991,17 @@
# programs in the package would end up linked with that potentially-shared
# library, inducing unnecessary run-time overhead.
-# Solaris 2.5.1 needs -lposix4 to get the clock_gettyme function.
+# Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
# Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
tar_save_LIBS=$LIBS
LIB_CLOCK_GETTIME=
- echo "$as_me:$LINENO: checking for library containing clock_gettyme" >&5
-echo $ECHO_N "checking for library containing clock_gettyme... $ECHO_C" >&6
-if test "${ac_cv_search_clock_gettyme+set}" = set; then
+ echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5
+echo $ECHO_N "checking for library containing clock_gettime... $ECHO_C" >&6
+if test "${ac_cv_search_clock_gettime+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_func_search_save_LIBS=$LIBS
-ac_cv_search_clock_gettyme=no
+ac_cv_search_clock_gettime=no
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -20565,11 +21015,11 @@
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char clock_gettyme ();
+char clock_gettime ();
int
main ()
{
-clock_gettyme ();
+clock_gettime ();
;
return 0;
}
@@ -20596,7 +21046,7 @@
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_search_clock_gettyme="none required"
+ ac_cv_search_clock_gettime="none required"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -20604,7 +21054,7 @@
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_clock_gettyme" = no; then
+if test "$ac_cv_search_clock_gettime" = no; then
for ac_lib in rt posix4; do
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
@@ -20620,11 +21070,11 @@
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char clock_gettyme ();
+char clock_gettime ();
int
main ()
{
-clock_gettyme ();
+clock_gettime ();
;
return 0;
}
@@ -20651,7 +21101,7 @@
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_search_clock_gettyme="-l$ac_lib"
+ ac_cv_search_clock_gettime="-l$ac_lib"
break
else
echo "$as_me: failed program was:" >&5
@@ -20664,19 +21114,19 @@
fi
LIBS=$ac_func_search_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettyme" >&5
-echo "${ECHO_T}$ac_cv_search_clock_gettyme" >&6
-if test "$ac_cv_search_clock_gettyme" != no; then
- test "$ac_cv_search_clock_gettyme" = "none required" || LIBS="$ac_cv_search_clock_gettyme $LIBS"
+echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5
+echo "${ECHO_T}$ac_cv_search_clock_gettime" >&6
+if test "$ac_cv_search_clock_gettime" != no; then
+ test "$ac_cv_search_clock_gettime" = "none required" || LIBS="$ac_cv_search_clock_gettime $LIBS"
fi
- case "$ac_cv_search_clock_gettyme" in
- -l*) LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettyme;;
+ case "$ac_cv_search_clock_gettime" in
+ -l*) LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime;;
esac
-for ac_func in clock_gettyme
+for ac_func in clock_gettime
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -20888,6 +21338,270 @@
fi
done
+
+
+
+
+
+
+
+
+
+for ac_func in getxattr fgetxattr lgetxattr \
+ setxattr fsetxattr lsetxattr \
+ listxattr flistxattr llistxattr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_XATTRS
+_ACEOF
+
+fi
+done
+
+
+echo "$as_me:$LINENO: checking for getfilecon in -lselinux" >&5
+echo $ECHO_N "checking for getfilecon in -lselinux... $ECHO_C" >&6
+if test "${ac_cv_lib_selinux_getfilecon+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lselinux $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char getfilecon ();
+int
+main ()
+{
+getfilecon ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_selinux_getfilecon=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_selinux_getfilecon=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_getfilecon" >&5
+echo "${ECHO_T}$ac_cv_lib_selinux_getfilecon" >&6
+if test $ac_cv_lib_selinux_getfilecon = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSELINUX 1
+_ACEOF
+
+ LIBS="-lselinux $LIBS"
+
+fi
+
+
+echo "$as_me:$LINENO: checking for acl_get_fd in -lacl" >&5
+echo $ECHO_N "checking for acl_get_fd in -lacl... $ECHO_C" >&6
+if test "${ac_cv_lib_acl_acl_get_fd+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lacl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char acl_get_fd ();
+int
+main ()
+{
+acl_get_fd ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_acl_acl_get_fd=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_acl_acl_get_fd=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_acl_acl_get_fd" >&5
+echo "${ECHO_T}$ac_cv_lib_acl_acl_get_fd" >&6
+if test $ac_cv_lib_acl_acl_get_fd = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBACL 1
+_ACEOF
+
+ LIBS="-lacl $LIBS"
+
+fi
+
echo "$as_me:$LINENO: checking whether getgrgid is declared" >&5
echo $ECHO_N "checking whether getgrgid is declared... $ECHO_C" >&6
if test "${ac_cv_have_decl_getgrgid+set}" = set; then
--- tar-1.15.1/Makefile.in.xattrs 2004-12-21 14:31:04.000000000 +0100
+++ tar-1.15.1/Makefile.in 2006-10-04 11:52:36.000000000 +0200
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -311,7 +311,13 @@
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -323,7 +329,7 @@
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -331,7 +337,13 @@
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -352,7 +364,7 @@
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
--- tar-1.15.1/aclocal.m4.xattrs 2004-12-21 14:29:44.000000000 +0100
+++ tar-1.15.1/aclocal.m4 2006-10-04 11:52:36.000000000 +0200
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.9.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -11,23 +11,11 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# -*- Autoconf -*-
-# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-# Generated from amversion.in; do not edit by hand.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
@@ -40,26 +28,15 @@
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.9.3])])
-
-# AM_AUX_DIR_EXPAND
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ [AM_AUTOMAKE_VERSION([1.9.6])])
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
@@ -106,26 +83,16 @@
am_aux_dir=`cd $ac_aux_dir && pwd`
])
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+# AM_CONDITIONAL -*- Autoconf -*-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# serial 6
+# serial 7
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
@@ -149,26 +116,15 @@
Usually this means the macro was only invoked conditionally.]])
fi])])
-# serial 7 -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
+# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -177,7 +133,6 @@
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
@@ -317,27 +272,16 @@
AC_SUBST([AMDEPBACKSLASH])
])
-# Generate code to set up dependency tracking. -*- Autoconf -*-
+# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-#serial 2
+#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -396,30 +340,19 @@
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
-# Do all the work for Automake. -*- Autoconf -*-
+# Do all the work for Automake. -*- Autoconf -*-
-# This macro actually does too much some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# serial 12
-# serial 11
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
@@ -521,51 +454,27 @@
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"$am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
-# -*- Autoconf -*-
-# Copyright (C) 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# serial 1
+# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
@@ -580,26 +489,15 @@
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# Check to see how 'make' treats includes. -*- Autoconf -*-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# serial 2
+# serial 3
# AM_MAKE_INCLUDE()
# -----------------
@@ -643,27 +541,16 @@
rm -f confinc confmf
])
-# -*- Autoconf -*-
-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# serial 3
+# serial 4
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
@@ -689,27 +576,16 @@
fi
])
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
# AM_PROG_MKDIR_P
# ---------------
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
+#
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
# created by `make install' are always world readable, even if the
# installer happens to have an overly restrictive umask (e.g. 077).
@@ -763,26 +639,15 @@
fi
AC_SUBST([mkdir_p])])
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# Helper functions for option handling. -*- Autoconf -*-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# serial 2
+# serial 3
# _AM_MANGLE_OPTION(NAME)
# -----------------------
@@ -807,28 +672,16 @@
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-#
-# Check to make sure that the build environment is sane.
-#
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
-# serial 3
+# serial 4
# AM_SANITY_CHECK
# ---------------
@@ -871,25 +724,14 @@
fi
AC_MSG_RESULT(yes)])
-# AM_PROG_INSTALL_STRIP
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+# AM_PROG_INSTALL_STRIP
+# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
@@ -912,25 +754,13 @@
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 1
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+# serial 2
# _AM_PROG_TAR(FORMAT)
# --------------------