From e7d5b0a8142b3f378f09c6d2a7aeb0826d26f4f7 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Thu, 31 Oct 2013 09:47:02 +0100 Subject: [PATCH] redigest --- app-editors/xxe/Manifest | 2 +- app-editors/xxe/xxe-5.3.0.ebuild | 2 +- dev-libs/apr/ChangeLog | 685 +++++++++ dev-libs/apr/Manifest | 12 + dev-libs/apr/apr-1.4.6-r1.ebuild | 135 ++ .../apr/files/apr-1.4.5-xattr-build-1.patch | 159 +++ dev-libs/apr/files/apr-1.4.6-mint.patch | 27 + dev-libs/apr/files/apr-xattr-build.patch | 155 +++ dev-libs/apr/files/apr-xattr-headers.patch | 366 +++++ dev-libs/apr/files/apr-xattr-impl.patch | 1233 +++++++++++++++++ dev-libs/apr/files/apr-xattr-tests.patch | 542 ++++++++ dev-libs/apr/files/apxattr.c | 191 +++ dev-libs/apr/files/config.layout.patch | 25 + dev-libs/apr/metadata.xml | 12 + net-misc/nxplayer/Manifest | 3 + net-misc/nxplayer/nxplayer-4.0.181.5.ebuild | 50 + 16 files changed, 3597 insertions(+), 2 deletions(-) create mode 100644 dev-libs/apr/ChangeLog create mode 100644 dev-libs/apr/Manifest create mode 100644 dev-libs/apr/apr-1.4.6-r1.ebuild create mode 100644 dev-libs/apr/files/apr-1.4.5-xattr-build-1.patch create mode 100644 dev-libs/apr/files/apr-1.4.6-mint.patch create mode 100644 dev-libs/apr/files/apr-xattr-build.patch create mode 100644 dev-libs/apr/files/apr-xattr-headers.patch create mode 100644 dev-libs/apr/files/apr-xattr-impl.patch create mode 100644 dev-libs/apr/files/apr-xattr-tests.patch create mode 100644 dev-libs/apr/files/apxattr.c create mode 100644 dev-libs/apr/files/config.layout.patch create mode 100644 dev-libs/apr/metadata.xml create mode 100644 net-misc/nxplayer/Manifest create mode 100644 net-misc/nxplayer/nxplayer-4.0.181.5.ebuild diff --git a/app-editors/xxe/Manifest b/app-editors/xxe/Manifest index 238462a7..4ebd4a74 100644 --- a/app-editors/xxe/Manifest +++ b/app-editors/xxe/Manifest @@ -1,6 +1,6 @@ DIST xxe-eval-5_8_0.tar.gz 66877766 SHA256 3fbbc24e3e8964471a5bf4bd77881331c205f6097a92b7b142a3ca828e898428 SHA512 c3266501c10d60bf98d9b246ba60e44f1df715f1a32a4d2b843e4bce3583f755cab5d4c8cc09ab488b1dc4c4fdc5aaeca0968123e8d2100979675786d211e938 WHIRLPOOL 253c9d6d30e046985afdf70cd7647693c2fa90db8f00cbdb75e3698a78ebb296a4c1f444bd622216fb7895f1166c4e04fdd3855dec19d2e6b42fba64bec48c9a DIST xxe-perso-5_3_0.tar.gz 27324575 SHA256 1d7090f506855b787f160424efe86c66923853b83eaa5d6130d26b0235f04c96 SHA512 011824df5f88de3079181ce7f7e7a0844890e49e28b0fdb32858206d3e649cbeaa162d478f58e0b1c1e7748c78ff16eaf1d9bc692c85824528f060cc97d5fbc3 WHIRLPOOL ffc117399044eadd90f6f56f8761f28189a6d71c66273b8e96d623b9aabd45a7f311382fca556c145afddef41c9d5c17360b3a2af6efa7feebfd5b1af37a2b3a -EBUILD xxe-5.3.0.ebuild 2779 SHA256 7326966ac8cb7d7ecfdb1116b5dcca3d7ead973e025d0db430fe9e0c8b70ddac SHA512 29aa20a27468eca450daa4484065a34c19e3c419d64554080460ffa6003057241fde85cc7390b9d2469ff485a55c77364c05d25b9f023fdbb70a7e70959b68da WHIRLPOOL d1b62c64a3bc62f7bd48c58799928a9421a9529fd7f12fcbb52dbf1058007cf4d45b696942955e67ebaaaaf4e122ffd1af5383c83c4466b43770c44ea1c66db6 +EBUILD xxe-5.3.0.ebuild 2783 SHA256 94936aa51a45da2d84b552fd53749b47c613e751f0130cdf7b4a2df97b441f7c SHA512 30889e2d48a11623415b99107fbd44e583ffb9294c6e4aa66ccee676e60de8604122ca6134f48ce3662b4fc468eaf88b2da9d8979f4dc3341aa8cbd401e369bb WHIRLPOOL ab320ecf911e21f42f7c65c7b3d98d4d9df635c016c098fe123eaff33e81f440fb47cad99ef7a254884235d567b6f1c40d052a78276a7f28d45e5c3409d9fdcb EBUILD xxe-5.8.0.ebuild 2748 SHA256 375397a6d2144337dcacfbfcf80a452162c9e984b0909f57b9affd7f5112fcdc SHA512 cb4f935b94b1a83f703882f24d13450286489c056eba0161eef4880d86135ad22b118e00bbbb77c74bb7fd051c98f8d3aa793fc6b38af24c0e6dc5a56ca65227 WHIRLPOOL 995d50caacc3eb3e2a364838d2046ea555577f25f9cf686df088080d9df761c4205851eebe836f2742d299b73a4b91920fde2dd4b5640088cc9f529a14b2c3da MISC ChangeLog 2228 SHA256 92ffb9d99526d7ed2e855f4b56d90db652c9051c722f938ab2481b91cf30fea9 SHA512 b8283ec4938ca83f1a44b6da712b58a409754b7af0fdb4e385f9555bf560dd49f2792e6915763a4d3f0e0715643de571148d9b8a112b4057f4a7c37e0a321bcd WHIRLPOOL 47e3436b7465fa067bfea126a4f5124c7d2ee19934ee9e2551d14e5b86edc9fdb94df4fec7e7f6405e5d9a0fe717e36892c72ad1c2dc56a018d91f1e540d8082 MISC metadata.xml 205 SHA256 9fdfc9c91107d94feb8416adc2cec7734fa27084bff83ea859938b3216e028bc SHA512 ef3a39d2cd131cd29451ec2d009484e89b60e8cbeed5fc0f5f899cebb0c5f9867682ce603982e4de32004493944c6ff99a4c797e7ef2441d6049e5a616143a8b WHIRLPOOL 779e2cb116b19389f70acc6d49694358619116f9849f3b8e46f00df4e39b4476424b20990b9dabb4ba16605d1894d6b820eaeb930401d825265bfdca27f6fb96 diff --git a/app-editors/xxe/xxe-5.3.0.ebuild b/app-editors/xxe/xxe-5.3.0.ebuild index 3f41e08d..166598d9 100644 --- a/app-editors/xxe/xxe-5.3.0.ebuild +++ b/app-editors/xxe/xxe-5.3.0.ebuild @@ -12,7 +12,7 @@ HOMEPAGE="http://www.xmlmind.com/xmleditor/" MY_PV=$(replace_all_version_separators '_') MY_P="${PN}-perso-${MY_PV}" -SRC_URI="http://www.xmlmind.net/xmleditor/_download/${MY_P}.tar.gz" +SRC_URI="http://www.xmlmind.com/archive/xmleditor/${PV}/${MY_P}.tar.gz" LICENSE="xxe-perso" # license does not allow redistributing, and they seem to silently update # distfiles... diff --git a/dev-libs/apr/ChangeLog b/dev-libs/apr/ChangeLog new file mode 100644 index 00000000..c64f00ac --- /dev/null +++ b/dev-libs/apr/ChangeLog @@ -0,0 +1,685 @@ +# ChangeLog for dev-libs/apr +# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/apr/ChangeLog,v 1.188 2013/02/20 22:59:30 zmedico Exp $ + + 20 Feb 2013; Zac Medico apr-1.4.6-r1.ebuild: + Add ~arm-linux keyword. + + 29 Dec 2012; Sergey Popov apr-1.4.6-r1.ebuild: + Apply user patches, wrt bug #449048 + +*apr-1.4.6-r1 (28 Nov 2012) + + 28 Nov 2012; Christoph Junghans +apr-1.4.6-r1.ebuild, + +files/apr-1.4.6-mint.patch: + added prefix support + + 27 Nov 2012; Pacho Ramos metadata.xml: + Drop apache herd as discussed in http://www.gossamer- + threads.com/lists/gentoo/dev/262834 + + 09 May 2012; Alexis Ballier apr-1.4.6.ebuild: + keyword ~amd64-fbsd + +*apr-1.4.6 (28 Feb 2012) + + 28 Feb 2012; Christian Ruppert +apr-1.4.6.ebuild, + metadata.xml: + Version bump, CVE-2012-0840, bug 403731 + + 11 Nov 2011; Markos Chandras -apr-1.4.4.ebuild: + remove old ebuild + + 11 Nov 2011; Markos Chandras apr-1.4.5.ebuild: + Use EAPI=4. Add static-libs USE flag. Patch by Arfrever. + + 29 Oct 2011; Raúl Porcel apr-1.4.5.ebuild: + alpha/ia64/s390/sh/sparc stable wrt #385859 + + 24 Oct 2011; Markus Meier apr-1.4.5.ebuild: + x86 stable, bug #385859 + + 23 Oct 2011; Markus Meier apr-1.4.5.ebuild: + arm stable, bug #385859 + + 22 Oct 2011; Kacper Kowalik apr-1.4.5.ebuild: + ppc/ppc64 stable wrt #385859 + + 19 Oct 2011; Jeroen Roovers apr-1.4.5.ebuild: + Stable for HPPA (bug #385859). + + 19 Oct 2011; Tony Vroon apr-1.4.5.ebuild: + Marked stable on AMD64 based on arch testing by Agostino "ago" Sarubbo & Ian + "idella4" Delaney in security bug #385859. + +*apr-1.4.5 (07 Jul 2011) + + 07 Jul 2011; Markos Chandras +apr-1.4.5.ebuild: + Version bump. Requested by Arfrever + + 14 May 2011; Raúl Porcel apr-1.4.4.ebuild: + alpha/arm/ia64/s390/sh/sparc stable wrt #366903 + + 14 May 2011; Kacper Kowalik apr-1.4.4.ebuild: + ppc/ppc64 stable wrt #366903 + + 13 May 2011; Jeroen Roovers apr-1.4.4.ebuild: + Stable for HPPA (bug #366903). + + 12 May 2011; Thomas Kahle apr-1.4.4.ebuild: + x86 stable per bug 366903 + + 11 May 2011; Markos Chandras apr-1.4.4.ebuild: + Stable on amd64 wrt bug #366903 + +*apr-1.4.4 (09 May 2011) + + 09 May 2011; Arfrever Frehtes Taifersar Arahesis + +apr-1.4.4.ebuild: + Version bump. + +*apr-1.4.2-r1 (18 Feb 2011) + + 18 Feb 2011; Benedikt Böhm +apr-1.4.2-r1.ebuild, + +files/apr_ring_volatile.patch, metadata.xml: + fix UUID support (bug #320845) and gcc 4.5 support (bug #355171) + + 19 Sep 2010; Benedikt Böhm apr-1.4.2.ebuild: + fix CONFIG_SHELL wrt #335944 + + 01 Aug 2010; Raúl Porcel apr-1.4.2.ebuild: + ia64/s390/sh/sparc stable wrt #322681 + + 25 Jul 2010; Samuli Suominen apr-1.4.2.ebuild: + ppc64 stable wrt #322681 + + 25 Jul 2010; Tobias Klausmann apr-1.4.2.ebuild: + Stable on alpha, bug #322681 + + 22 Jul 2010; Markus Meier apr-1.4.2.ebuild: + arm stable, bug #322681 + + 26 Jun 2010; apr-1.4.2.ebuild: + ppc stable #322681 + + 22 Jun 2010; Jeroen Roovers apr-1.4.2.ebuild: + Stable for HPPA (bug #322681). + + 12 Jun 2010; Pawel Hajdan jr apr-1.4.2.ebuild: + x86 stable wrt bug #322681 + + 07 Jun 2010; Markos Chandras apr-1.4.2.ebuild: + Stable on amd64 wrt bug #322681 + + 02 Jun 2010; Arfrever Frehtes Taifersar Arahesis + apr-1.4.2.ebuild: + Properly fix build failure (bug #317527). + + 02 Jun 2010; Patrick Lauer apr-1.4.2.ebuild: + Fix for compilation failure, #317527. Thanks to Andrew Savchenko for the + patch + +*apr-1.4.2 (01 Apr 2010) + + 01 Apr 2010; Arfrever Frehtes Taifersar Arahesis + +apr-1.4.2.ebuild: + Version bump (bug #309625). + + 07 Mar 2010; Benedikt Böhm apr-1.3.8.ebuild, + apr-1.3.9.ebuild: + remove debug USE flag wrt #306651 + + 17 Nov 2009; Brent Baude apr-1.3.9.ebuild: + Marking apr-1.3.9 ppc64 for bug 290319 + + 14 Nov 2009; Raúl Porcel apr-1.3.9.ebuild: + arm/ia64/s390/sh/sparc stable wrt #290319 + + 08 Nov 2009; Tobias Klausmann apr-1.3.9.ebuild: + Stable on alpha, bug #290319 + + 04 Nov 2009; Arfrever Frehtes Taifersar Arahesis + apr-1.3.9.ebuild: + Use 'dohtml -r' for compatibility with Doxygen 1.6 (bug #287821). + + 01 Nov 2009; nixnut apr-1.3.9.ebuild: + ppc stable #290319 + + 30 Oct 2009; Markus Meier apr-1.3.9.ebuild: + amd64/x86 stable, bug #290319 + + 26 Oct 2009; Jeroen Roovers apr-1.3.9.ebuild: + Stable for HPPA (bug #290319). + +*apr-1.3.9 (24 Sep 2009) + + 24 Sep 2009; Arfrever Frehtes Taifersar Arahesis + +apr-1.3.9.ebuild: + Version bump. + + 20 Sep 2009; Benedikt Böhm -apr-1.3.5.ebuild, + -apr-1.3.6.ebuild, -apr-1.3.7.ebuild, apr-1.3.8.ebuild: + fix #274246; remove old ebuild + + 24 Aug 2009; Brent Baude apr-1.3.8.ebuild: + Marking apr-1.3.8 ppc64 for bug 280514 + + 23 Aug 2009; nixnut apr-1.3.8.ebuild: + ppc stable #280514 + + 14 Aug 2009; Raúl Porcel apr-1.3.8.ebuild: + arm/ia64/s390/sh/sparc stable wrt #280514 + + 11 Aug 2009; Jeroen Roovers apr-1.3.8.ebuild: + Stable for HPPA (bug #280514). + + 10 Aug 2009; Markus Meier apr-1.3.8.ebuild: + x86 stable, bug #280514 + + 10 Aug 2009; Arfrever Frehtes Taifersar Arahesis + apr-1.3.8.ebuild, metadata.xml: + Rename "cloexec" USE flag to "older-kernels-compatibility" (bug #280648). + + 10 Aug 2009; Tobias Klausmann apr-1.3.8.ebuild: + Stable on alpha, bug #280514 + + 10 Aug 2009; Tobias Klausmann ChangeLog: + Stable on alpha, bug #280514 + + 10 Aug 2009; Arfrever Frehtes Taifersar Arahesis + apr-1.3.8.ebuild, metadata.xml: + Add "cloexec" USE flag (bug #280648). + + 07 Aug 2009; Christian Faulhammer apr-1.3.8.ebuild: + revert stable keyword for x86 + + 06 Aug 2009; Markus Meier apr-1.3.8.ebuild: + x86 stable, bug #280514 + + 06 Aug 2009; Alex Legler apr-1.3.8.ebuild: + amd64 stable, security bug 280514. + +*apr-1.3.8 (06 Aug 2009) + + 06 Aug 2009; Arfrever Frehtes Taifersar Arahesis + -apr-1.2.11.ebuild, -apr-1.2.12.ebuild, -apr-1.3.0.ebuild, + -apr-1.3.2.ebuild, -apr-1.3.3.ebuild, +apr-1.3.8.ebuild: + Version bump. + +*apr-1.3.7 (24 Jul 2009) + + 24 Jul 2009; Arfrever Frehtes Taifersar Arahesis + +apr-1.3.7.ebuild: + Version bump. + +*apr-1.3.6 (07 Jul 2009) + + 07 Jul 2009; Arfrever Frehtes Taifersar Arahesis + +apr-1.3.6.ebuild: + Version bump. + + 21 Jun 2009; Brent Baude apr-1.3.5.ebuild: + Marking apr-1.3.5 ppc for bug 272260 + + 16 Jun 2009; Brent Baude apr-1.3.5.ebuild: + Marking apr-1.3.5 ppc64 for bug 272260 + + 16 Jun 2009; Raúl Porcel apr-1.3.5.ebuild: + arm/ia64/s390/sh/sparc stable wrt #272260 + + 11 Jun 2009; Tobias Klausmann apr-1.3.5.ebuild: + Stable on alpha, bug #272260 + + 11 Jun 2009; Markus Meier apr-1.3.5.ebuild: + amd64 stable, bug #272260 + + 10 Jun 2009; Christian Faulhammer apr-1.3.5.ebuild: + stable x86, security bug 272260 + + 09 Jun 2009; Jeroen Roovers apr-1.3.5.ebuild: + Stable for HPPA (bug #272260). + +*apr-1.3.5 (08 Jun 2009) + + 08 Jun 2009; Arfrever Frehtes Taifersar Arahesis + +apr-1.3.5.ebuild: + Version bump. + + 23 Jan 2009; Raúl Porcel apr-1.3.3.ebuild: + arm/ia64/s390/sh stable wrt #246003 + + 18 Jan 2009; Tobias Klausmann apr-1.3.3.ebuild: + Stable on alpha, bug #246003 + + 09 Jan 2009; Ferris McCormick apr-1.3.3.ebuild: + Sparc stable, Bug #246003. + + 09 Jan 2009; Brent Baude apr-1.3.3.ebuild: + Marking apr-1.3.3 ppc for bug 246003 + + 07 Jan 2009; Jeroen Roovers apr-1.3.3.ebuild: + Stable for HPPA (bug #246003). + + 07 Jan 2009; Brent Baude apr-1.3.3.ebuild: + Marking apr-1.3.3 ppc64 for bug 246003 + + 04 Jan 2009; Markus Meier apr-1.3.3.ebuild: + amd64/x86 stable, bug #246003 + + 25 Oct 2008; Benedikt Böhm apr-1.3.3.ebuild: + fix typo wrt #236156 + + 29 Aug 2008; Benedikt Böhm apr-1.3.3.ebuild: + defaulting to USE=urandom wrt #232951 + +*apr-1.3.3 (29 Aug 2008) + + 29 Aug 2008; Benedikt Böhm +apr-1.3.3.ebuild: + version bump wrt #235938 + + 16 Aug 2008; Jeroen Roovers apr-1.3.2.ebuild: + Stable for HPPA (bug #232671). + + 08 Aug 2008; nixnut apr-1.3.2.ebuild: + Stable on ppc wrt bug 232671 + + 08 Aug 2008; Markus Rothe apr-1.3.2.ebuild: + Stable on ppc64; bug #232671 + + 08 Aug 2008; Raúl Porcel apr-1.3.2.ebuild: + alpha/ia64/sparc/x86 stable wrt #232671 + + 07 Aug 2008; Thomas Anderson apr-1.3.2.ebuild: + stable amd64, bug 232671 + + 06 Aug 2008; Ulrich Mueller metadata.xml: + Add USE flag description to metadata wrt GLEP 56. + + 23 Jun 2008; Benedikt Böhm apr-1.3.2.ebuild: + remove unused ipv6 USE flag + +*apr-1.3.2 (23 Jun 2008) + + 23 Jun 2008; Benedikt Böhm +apr-1.3.2.ebuild: + version bump wrt #228953 + +*apr-1.3.0 (11 Jun 2008) + + 11 Jun 2008; Benedikt Böhm +apr-1.3.0.ebuild: + version bump wrt #225783 + + 01 Jun 2008; Benedikt Böhm apr-1.2.11.ebuild, + apr-1.2.12.ebuild: + fix #221653 + + 28 Jan 2008; Benedikt Böhm + -files/apr-0.9.12-linking.patch, -apr-0.9.12.ebuild, -apr-0.9.13.ebuild: + remove apr-0 wrt #203578 + +*apr-1.2.12 (15 Dec 2007) + + 15 Dec 2007; Benedikt Böhm -apr-1.2.8.ebuild, + -apr-1.2.9.ebuild, +apr-1.2.12.ebuild: + version bump; #200947 + + 16 Nov 2007; nixnut apr-1.2.11.ebuild: + Stable on ppc wrt bug 198866 + + 16 Nov 2007; Raúl Porcel apr-1.2.11.ebuild: + alpha/ia64 stable wrt #198866 + + 15 Nov 2007; Steve Dibb apr-1.2.11.ebuild: + amd64 stable, bug 198866 + + 13 Nov 2007; Dawid Węgliński apr-1.2.11.ebuild: + Stable on x86 (bug #198866) + + 13 Nov 2007; Markus Rothe apr-1.2.11.ebuild: + Stable on ppc64; bug #198866 + + 13 Nov 2007; Jeroen Roovers apr-1.2.11.ebuild: + Stable for HPPA (bug #198866). + + 12 Nov 2007; Ferris McCormick apr-1.2.11.ebuild: + Sparc stable --- Bug #198866 --- Good for two months. + + 09 Sep 2007; Benedikt Böhm apr-1.2.11.ebuild: + fix #188485 + +*apr-1.2.11 (08 Sep 2007) + + 08 Sep 2007; Benedikt Böhm +apr-1.2.11.ebuild: + version bump; #191733 + + 31 Jul 2007; Christian Heim apr-1.2.9.ebuild: + The version bump wasn't designed to go straight to stable. + +*apr-1.2.9 (30 Jul 2007) + + 30 Jul 2007; Benedikt Böhm +apr-1.2.9.ebuild: + version bump + + 27 Jun 2007; Lars Weiler apr-1.2.8.ebuild: + Stable on ppc; bug #178264. + + 27 Jun 2007; Jeroen Roovers apr-1.2.8.ebuild: + Stable for HPPA (bug #178264). + + 15 Jun 2007; Raúl Porcel apr-1.2.8.ebuild: + alpha stable wrt #178264 + + 13 Jun 2007; Gustavo Zacarias apr-1.2.8.ebuild: + Stable on sparc wrt #178264 + + 21 Apr 2007; Raúl Porcel apr-1.2.8.ebuild: + ia64 stable + + 15 Apr 2007; Markus Rothe apr-1.2.8.ebuild: + Stable on ppc64 + + 12 Apr 2007; Christian Faulhammer apr-1.2.8.ebuild: + stable amd64, bug 168287 + + 11 Apr 2007; Christian Heim apr-1.2.8.ebuild: + Fix WANT_AUTO*, according to #172978. + + 03 Mar 2007; Marius Mauch apr-0.9.12.ebuild, + apr-0.9.13.ebuild: + Replacing einfo with elog + + 25 Feb 2007; Christian Faulhammer apr-1.2.8.ebuild: + stable x86; bug 168287 + + 29 Jan 2007; Christian Heim apr-0.9.13.ebuild: + Reverting the KEYWORDS to ~arch, accidently commited straight to arch. + +*apr-0.9.13 (28 Jan 2007) + + 28 Jan 2007; Christian Heim +apr-0.9.13.ebuild: + Version bump, new upstream version. Cleaning up the ebuild a bit. + + 28 Jan 2007; Luca Longinotti metadata.xml, + -apr-0.9.6-r3.ebuild, -apr-0.9.6-r4.ebuild, -apr-0.9.7.ebuild, + -apr-1.2.2.ebuild, -apr-1.2.7.ebuild, -apr-1.2.7-r1.ebuild, + -apr-1.2.7-r2.ebuild, -apr-1.2.7-r3.ebuild: + Remove redundant versions. + +*apr-1.2.8 (21 Jan 2007) + + 21 Jan 2007; Christian Heim +apr-1.2.8.ebuild: + Version bump (thanks to Conrad Kostecki in #114232). + + 08 Jan 2007; Christian Heim apr-1.2.7-r1.ebuild, + apr-1.2.7-r2.ebuild, apr-1.2.7-r3.ebuild: + Setting WANT_AUTOCONF to shutup #161027. + + 18 Oct 2006; Roy Marples apr-0.9.12.ebuild: + Added ~sparc-fbsd keyword. + + 18 Oct 2006; Roy Marples apr-1.2.7-r3.ebuild: + Added ~sparc-fbsd keyword. + + 15 Oct 2006; Michael Stewart apr-0.9.12.ebuild, + apr-1.2.7-r3.ebuild: + Remove apr.exp as it's not used and causes collisions between SLOTs + + 10 Sep 2006; Javier Villavicencio + apr-1.2.7-r3.ebuild: + Add ~x86-fbsd keyword. + + 05 Sep 2006; Joshua Kinard apr-0.9.12.ebuild: + Marked stable on mips. + + 29 Jul 2006; Bryan Østergaard apr-0.9.12.ebuild: + Stable on alpha. + +*apr-1.2.7-r3 (07 Jul 2006) + + 07 Jul 2006; Michael Stewart + +files/config.layout.patch, +apr-1.2.7-r3.ebuild: + Use a config.layout instead of command line options to work around bug 139033. + + 28 Jun 2006; Tobias Scherbaum apr-0.9.12.ebuild: + ppc stable, #138011 + + 28 Jun 2006; Joshua Jackson apr-0.9.12.ebuild: + Stable x86; buf #138011 + + 27 Jun 2006; Marcus D. Hanwell apr-0.9.12.ebuild: + Marked stable on amd64, bug 138011. + + 27 Jun 2006; Guy Martin apr-0.9.12.ebuild: + Stable on hppa. + + 26 Jun 2006; Markus Rothe apr-0.9.12.ebuild: + Stable on ppc64; bug #138011 + + 26 Jun 2006; Gustavo Zacarias apr-0.9.12.ebuild: + Stable on sparc wrt #138011 + +*apr-1.2.7-r2 (07 Jun 2006) + + 07 Jun 2006; Michael Stewart +apr-1.2.7-r2.ebuild: + Always enable ipv6. Fixes bug 123320. + + 06 Jun 2006; Michael Stewart apr-1.2.7.ebuild: + Remove as-needed filtering + + 05 Jun 2006; Michael Stewart + +files/apr-0.9.12-linking.patch, apr-0.9.12.ebuild: + Add patch to allow correct linking with --as-needed + + 04 Jun 2006; Michael Stewart apr-1.2.7-r1.ebuild: + Remove hardcoding of .m4 files from configure.in. Fixes bug 135463 + +*apr-1.2.7-r1 (26 May 2006) + + 26 May 2006; Michael Stewart +apr-1.2.7-r1.ebuild: + Use the system's libtool instead of the bundled libtool. Fixes bug 81260 + Note that some software that hardcodes the APR libtool location (such as + Apache) may need to be recompiled. + + 18 May 2006; Michael Stewart apr-0.9.12.ebuild, + apr-1.2.7.ebuild: + Fix sem_open related sandbox violations. Resolves bug 133573. + +*apr-0.9.12 (16 Apr 2006) + + 16 Apr 2006; Michael Stewart +apr-0.9.12.ebuild: + Version bump + +*apr-1.2.7 (16 Apr 2006) + + 16 Apr 2006; Michael Stewart +apr-1.2.7.ebuild: + Version bump in preperation for the next version of apache 2.2.x + + 30 Mar 2006; Diego Pettenò apr-0.9.7.ebuild: + Add ~x86-fbsd keyword. + +*apr-1.2.2 (15 Feb 2006) + + 15 Feb 2006; Michael Stewart +apr-1.2.2.ebuild: + New version for apache 2.2 + + 15 Jan 2006; Marcus D. Hanwell apr-0.9.7.ebuild: + Stable on amd64, bug 117835. + + 13 Jan 2006; Tobias Scherbaum apr-0.9.7.ebuild: + ppc stable, bug #117835 + + 12 Jan 2006; Markus Rothe apr-0.9.7.ebuild: + Stable on ppc64; bug #117835 + + 10 Jan 2006; Gustavo Zacarias apr-0.9.7.ebuild: + Stable on sparc wrt #117835 + + 09 Jan 2006; Bryan Østergaard +apr-0.9.7.ebuild: + Version Bump + + 21 Oct 2005; Aaron Walker apr-0.9.6-r3.ebuild: + Stable on mips. + + 10 Oct 2005; Danny van Dyk apr-0.9.6-r4.ebuild: + Marked ~ppc-macos. + + 29 Sep 2005; MATSUU Takuto apr-0.9.6-r3.ebuild: + Stable on sh. + + 19 Sep 2005; Michael Hanselmann apr-0.9.6-r3.ebuild: + Stable on hppa and ppc. + + 18 Sep 2005; Marcus D. Hanwell apr-0.9.6-r3.ebuild: + Stable on amd64, bug 105516. + + 18 Sep 2005; Jason Wever apr-0.9.6-r3.ebuild: + Added ~sparc keyword wrt bug #105516. + + 18 Sep 2005; Michael Stewart -apr-0.9.5.ebuild, + -apr-0.9.5-r1.ebuild, -apr-0.9.5-r2.ebuild, -apr-0.9.5-r3.ebuild, + -apr-0.9.6.ebuild, -apr-0.9.6-r1.ebuild, -apr-0.9.6-r2.ebuild: + Removing old revisions that use broken LFS-support + +*apr-0.9.6-r4 (17 Sep 2005) + + 17 Sep 2005; Michael Stewart +apr-0.9.6-r4.ebuild: + Added support for using /dev/urandom instead of /dev/random if the urandom + USE-flag is set. Fixes bug 102587 + + 17 Sep 2005; Aron Griffis apr-0.9.6-r3.ebuild: + Mark 0.9.6-r3 stable on ia64 + + 11 Sep 2005; Markus Rothe apr-0.9.6-r3.ebuild: + Stable on ppc64 + + 10 Sep 2005; Aron Griffis apr-0.9.6-r3.ebuild: + Mark 0.9.6-r3 stable on alpha + + 10 Sep 2005; Michael Stewart apr-0.9.6-r3.ebuild: + Stable on x86 + + 10 Sep 2005; Aron Griffis apr-0.9.5.ebuild: + Mark 0.9.5 stable on alpha + + 17 Jul 2005; Kito apr-1.1.1.ebuild: + ~ppc-macos Keyword + + 13 Jul 2005; bret curtis apr-1.1.1.ebuild apr-0.9.6-r3: + added ~mips + + 10 May 2005; Bret Curtis apr-0.9.5.ebuild: + marked for testing, ~mips + +*apr-0.9.6-r3 (09 May 2005) +*apr-0.9.5-r3 (09 May 2005) + + 09 May 2005; Elfyn McBratney +apr-0.9.5-r3.ebuild, + +apr-0.9.6-r3.ebuild: + Rev bumps that remove LFS support from APR (has caused too many issues for + mid-release introduction). The Apache tool-stack (net-www/apache, + devs-libs/apr (this package) and dev-libs/apr-util) will need to be rebuilt + once emerging this update. + +*apr-1.1.1 (10 Apr 2005) + + 10 Apr 2005; Christian Parpart +apr-1.1.1.ebuild: + adding apr-1 (1.1.1) ebuilds to the series of apr versions which is the base + requirement for forthcoming apache httpd 2.1.x series ;) + + 31 Mar 2005; Aron Griffis apr-0.9.5.ebuild: + stable on ia64 + + 21 Mar 2005; Elfyn McBratney apr-0.9.5-r2.ebuild, + apr-0.9.6-r2.ebuild: + Add elibtoolize call for bug #77455. + +*apr-0.9.6-r2 (14 Mar 2005) + + 14 Mar 2005; Elfyn McBratney +apr-0.9.5-r2.ebuild, + +apr-0.9.6-r2.ebuild: + Rev bumps which specify which random device node (--with-devrandom) to use. + These two are hard masked in case this changes breaks stuff. + + 14 Mar 2005; Elfyn McBratney apr-0.9.5-r1.ebuild, + apr-0.9.5.ebuild: + Drop extranous 'ipv6' arg to use_enable. + + 05 Mar 2005; Markus Rothe apr-0.9.5.ebuild: + Stable on ppc64 + +*apr-0.9.6-r1 (05 Mar 2005) + + 05 Mar 2005; Elfyn McBratney +apr-0.9.5-r1.ebuild, + +apr-0.9.6-r1.ebuild: + LFS-enabled apr breaks Apache on sparc; disabling until fixed. + + 03 Mar 2005; Elfyn McBratney -apr-0.9.2.ebuild, + -apr-0.9.4.ebuild: + Remove old versions. + +*apr-0.9.6 (02 Mar 2005) + + 02 Mar 2005; Elfyn McBratney +apr-0.9.6.ebuild: + Version bump. + + 28 Feb 2005; Jeremy Huddleston apr-0.9.5.ebuild: + Killed einstall usage. Back to using econf to fix multilib problems. + + 20 Feb 2005; Aron Griffis apr-0.9.5.ebuild: + add ~ia64 #77455 + + 05 Feb 2005; Bryan Østergaard apr-0.9.5.ebuild: + ~alpha keyword, bug 77455. + + 28 Jan 2005; Michael Hanselmann apr-0.9.5.ebuild: + Added to ~ppc. + + 11 Jan 2005; Mike Doty apr-0.9.5.ebuild: + ~amd64 keyword added, bug 77455 + + 11 Jan 2005; Guy Martin apr-0.9.5.ebuild: + Added ~hppa to KEYWORDS. + + 11 Jan 2005; Markus Rothe apr-0.9.5.ebuild: + Added ~ppc64 to KEYWORDS + + 10 Jan 2005; Jason Wever apr-0.9.5.ebuild: + Added ~sparc keyword wrt bug #77455. + +*apr-0.9.5 (08 Jan 2005) + + 08 Jan 2005; Michael Stewart +metadata.xml, + +apr-0.9.5.ebuild: + Apache herd package refresh + + 22 Jul 2004; David Holm apr-0.9.4.ebuild: + Added to ~ppc. + + 20 Apr 2004; Daniel Black apr-0.9.2.ebuild: + QA - removed runtime dependance on autoconf and automake. More dependancy work + required + + 16 Apr 2004; Jason Wever apr-0.9.4.ebuild: + Added ~sparc keyword. + + 14 Mar 2004; Michael Sterrett apr-0.9.2.ebuild, + apr-0.9.4.ebuild: + Don't assign default to S; header fix + + 09 Feb 2004; Dylan Carlson apr-0.9.4.ebuild: + added amd64 keyword. + +*apr-0.9.4 (13 Oct 2003) + + 13 Oct 2003; Martin Holzer apr-0.9.4.ebuild: + Version bumped. Ebuild submitted by + Hattya in #30810. + +*apr-0.9.2 (29 Mar 2003) + + 29 Mar 2003; Dylan Carlson apr-0.9.2.ebuild: + Initial import. diff --git a/dev-libs/apr/Manifest b/dev-libs/apr/Manifest new file mode 100644 index 00000000..45285592 --- /dev/null +++ b/dev-libs/apr/Manifest @@ -0,0 +1,12 @@ +AUX apr-1.4.5-xattr-build-1.patch 5932 SHA256 f1d4cfe011c0e0e507f5bda965f78cbe2884249b06f231d8c7b7252be49ab0ff SHA512 eab5ca3b60feffb359b03a2d5a396a4c3533ffe1148abf9e250b76c2740631f91c990e008775ff9074139015d835d1f93820dd3cfc434c0f4a8f3daf7858facf WHIRLPOOL 26589926dd6a3120a5e9a9207e1aa43c69758be36fd007065fd2e7adfd3dce944ae44d7db35d3351975b90c3b3fbf0b4121949ff3ad129f6858d8be89baefccf +AUX apr-1.4.6-mint.patch 1200 SHA256 d1d8217efbf87f136ece47d06e224f23a585b1634d70a911c88778b8503b3d71 SHA512 531961bcd79850a4b6af59288a6aeb489632d64fd4a1bed80450d48e48f5ff3ea7c0d1e05d80a591c2d8d1a2c6f0c859ef8500b1f01614d83df74034782fd7bd WHIRLPOOL 52c98387ed240f94099f4587734b048fdc6899309d5b4b2f5b237fc7621ef5aa81f1a8b6602e7589ec55fbf391104db3e4451e62dbabdc55133530830dddecf1 +AUX apr-xattr-build.patch 5530 SHA256 ccda7d84d0a4c95507e82bcbf157dca91e420e7825c80cbd60894d2b047b2b1d SHA512 a7f8d2791222190302270f0a34412799f572e0230cc7687b2858c9143202b991da8c3f2f917a33016407092027797d79fa219535d8182236e33c387f6dd23b20 WHIRLPOOL 86320f68430097dac6cf84bf5a5acc2da61be639b79c54309ab3d8cc57b3b60fc8f8c79c1750a81636c3c1ceb428fbe9d66f274c2b26f2e260a7568b3cda7f8b +AUX apr-xattr-headers.patch 13791 SHA256 0d7068d1738dd2bedd8fffe7e95f0089e70b9730a81d35b2688c50e506f718ee SHA512 4ea5e37c7bfab2d44e9bdaf6cc32999e9f522a3516d2a284526f0198353636afc83bf62bd51eab4795cafa574dd59d8e1bf035c29a594a490f36c99696cebb04 WHIRLPOOL 54be7601b4b4325c4964ad3b6a33e8d2f35205631e3ac5f601c5e36d9f11143609171dc741d7ff98b24d59a285f3b3f33f109427e9c7419bf02c407fde8aa017 +AUX apr-xattr-impl.patch 38289 SHA256 3998baaad273f88bf3d82cf6522d7da88a5d03ffbc75bd5c781e1142b010fa13 SHA512 11c7773593808499d890d5ceaf813bed0ac0b213efc2dba4d9e3fb2866d930e5d43aab08ac45ee7c69327345afda25e93275274a05d8427e700966b8e7ef672d WHIRLPOOL 374652f300b307cc669dd9a0d7804a39cc3cbfd82c43121505829d6a8600a23abacc6a2fadcade18db8ca5e7d46a1d63b59f481b15c31934eb5eec80883c1b1a +AUX apr-xattr-tests.patch 17458 SHA256 14b0b7750c795734a1e71688e084c08e8af6db83acab0f8b135f08cfa92c080e SHA512 3482bc272225072121ab902f1fb95a2ba15ce38c37449ee78ac0e9450df60e1a292a02613b7d55060233dab214d88dc615e72b876fb68d3d1c8f9cb140178684 WHIRLPOOL 1246086a29aebc1faf745a6bff93ca79d7f6ee99dea8710ce87f0cc53711227d25e2c3c118ffe2da498fc416cb507e98e76ac1a350e93c08e380c3be1809516a +AUX apxattr.c 5948 SHA256 2e758eb18056cc619acaea550c8fd724f90d39f4b3fe29ab801d3eeaccf7164c SHA512 bf767cd448d6e7b4e945e43b5843825e0a7f8b0475a0fb0cd34d0844b17d19e37a5ac47ba8afa4b095b3aa39a6e1a34b1f81a91313768a2fabd63d135bdad552 WHIRLPOOL 1af5fcd3e3d2a1527be08f6105d3d554c6c57944f8740ba6fb1bebe8c4d2dde0be153af1e41a0ff7d7afcf29948e9b70f63726f967067b3adb233d85d5d158e3 +AUX config.layout.patch 818 SHA256 eeacaf654f23084e842bff02b97c083a8da5b5c056fd086166ba2d250edf3181 SHA512 4ff9a98c2a799c714d3b4c2cb42dd9c1cd6aa52b465570939710c0ac5800ea8806a9c38500d83b09a2bf61984d57c53ae934886d9f25e3111d721ef282a7d91e WHIRLPOOL a03f7e889a416ada14c62ca99727e2c8cba403972785c7d2282c1c914abe9c38a94b98489ec840b3c1e2cfc2af87ee08ac724d0434e8198596f7d2b44907d3db +DIST apr-1.4.6.tar.bz2 785724 SHA256 9b635e60feb163e6fc6c375721f71f44d7e26d6b9cd52f6b86b04e65d2481cbc SHA512 1842e2dfc9315d9dd39acd4545d80fad45dcb419c9bfb4423453ca8727aa78d864fd48f43e68a696345b4c0ee2e9eb50b3eddd96d3eaf6ed3c5d48211831b8e4 WHIRLPOOL 4d8a67dace2b7e1c41c778ad3d34f4a479f9885c0b11cd3c4be412da4e2e006765802f8756a52d97fbfe4e962302274fe0e67cd1b8ac1a673044e79fbec5dc6e +EBUILD apr-1.4.6-r1.ebuild 3812 SHA256 77bd785fcac4701619964dd3a591f1425883c8cf72009eb6b57c4e2fc26d87f2 SHA512 3a6164026d9c0bc993204b27c6523c3ede68ca6db0b788f774b8a60dc7d35c8b709c49d6a47f0ddb509c5de907f7e7f7e534a4fcba7978a18ad662fc4c24014a WHIRLPOOL 410dd3764ba610ff21e4dacb3451cd8dfe1c565d4ad81348099ad52c2d7eb61594ed281b2f50b8feb9f03da5c7dad6969830d1350e6b3a52c17947129671385d +MISC ChangeLog 22587 SHA256 9e25a38817bfd2ddf73e7c58b0b5c810a181b979d56f3f6a02e48d10efd163b9 SHA512 22a3c518acc3d66e3747f29420002a87ab192262a32b9323837303595e7e75df84e5e6e7940155bd033a832ddf7b860050184373b857f47228d2534c671d3263 WHIRLPOOL 268dd78f0b96b2bded481955dd392d979b0772604a71e88482d2ce45286e152e2baaddcf7d982b611238f265a30979412096a250836a92e2856a3cb128966df5 +MISC metadata.xml 443 SHA256 966327337370abc0213bdd1e4fc8723db10871adad7746e07e9b1ebaed188212 SHA512 b46c129b23e4ba9a27be4cf0592a80223726a38d022916a4032a00dc5ca117a15641003ecb302eed6a560c73515aa990800b80b1b48574fb58235ce8bafb5b4c WHIRLPOOL 48326ff95f79a6ddcdea9a915803497bc5a510503ee5bd91d2b7d4f5d113167784f9bdca9962b083395dbc2916846f8dbadce411dcc27a207ae211cba5a1c1e0 diff --git a/dev-libs/apr/apr-1.4.6-r1.ebuild b/dev-libs/apr/apr-1.4.6-r1.ebuild new file mode 100644 index 00000000..c0b26fe6 --- /dev/null +++ b/dev-libs/apr/apr-1.4.6-r1.ebuild @@ -0,0 +1,135 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/apr/apr-1.4.6-r1.ebuild,v 1.3 2013/02/20 22:59:30 zmedico Exp $ + +EAPI="4" + +inherit autotools eutils libtool multilib toolchain-funcs + +DESCRIPTION="Apache Portable Runtime Library" +HOMEPAGE="http://apr.apache.org/" +SRC_URI="mirror://apache/apr/${P}.tar.bz2" + +LICENSE="Apache-2.0" +SLOT="1" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-aix ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +IUSE="doc elibc_FreeBSD older-kernels-compatibility static-libs +urandom +uuid" + +RDEPEND="uuid? ( + elibc_glibc? ( >=sys-apps/util-linux-2.16 ) + elibc_mintlib? ( >=sys-apps/util-linux-2.18 ) +)" +DEPEND="${RDEPEND} + doc? ( app-doc/doxygen )" + +DOCS=(CHANGES NOTICE README) + +src_prepare() { + epatch "${FILESDIR}"/${P}-mint.patch + epatch "${FILESDIR}/apr-1.4.5-xattr-build-1.patch" + epatch "${FILESDIR}/apr-xattr-headers.patch" + epatch "${FILESDIR}/apr-xattr-impl.patch" + epatch "${FILESDIR}/apr-xattr-tests.patch" + + # Ensure that system libtool is used. + local g= + [[ ${CHOST} == *-darwin* ]] && g=g + sed -e 's:${installbuilddir}/libtool:'"${EPREFIX}/usr/bin/${g}libtool"':' -i apr-config.in || die "sed failed" + sed -e 's:@LIBTOOL@:$(SHELL) '"${EPREFIX}/usr/bin/${g}libtool"':' -i build/apr_rules.mk.in || die "sed failed" + + # Apply user patches, bug #449048 + epatch_user + + ./buildconf + AT_M4DIR="build" eautoreconf + elibtoolize + + epatch "${FILESDIR}/config.layout.patch" +} + +src_configure() { + local myconf + + [[ ${CHOST} == *-mint* ]] && export ac_cv_func_poll=no + + if use older-kernels-compatibility; then + local apr_cv_accept4 apr_cv_dup3 apr_cv_epoll_create1 apr_cv_sock_cloexec + export apr_cv_accept4="no" + export apr_cv_dup3="no" + export apr_cv_epoll_create1="no" + export apr_cv_sock_cloexec="no" + fi + + if use urandom; then + myconf+=" --with-devrandom=/dev/urandom" + elif (( ${CHOST#*-hpux11.} <= 11 )); then + : # no /dev/*random on hpux11.11 and before, $PN detects this. + else + myconf+=" --with-devrandom=/dev/random" + fi + + if [[ ${CHOST} == *-mint* ]] ; then + myconf+=" --disable-dso" + fi + + # shl_load does not search runpath, but hpux11 supports dlopen + [[ ${CHOST} == *-hpux11* ]] && myconf="${myconf} --enable-dso=dlfcn" + + if [[ ${CHOST} == *-solaris2.10 ]]; then + case $(<$([[ ${CHOST} != ${CBUILD} ]] && echo "${EPREFIX}/usr/${CHOST}")/usr/include/atomic.h) in + *atomic_cas_ptr*) ;; + *) + elog "You do not have Solaris Patch ID "$( + [[ ${CHOST} == sparc* ]] && echo 118884 || echo 118885 + )" (Problem 4954703) installed on your host ($(hostname))," + elog "using generic atomic operations instead." + myconf="${myconf} --disable-nonportable-atomics" + ;; + esac + fi + + if ! use uuid; then + local apr_cv_osuuid + export apr_cv_osuuid="no" + fi + + CONFIG_SHELL="${EPREFIX}"/bin/bash econf \ + --enable-layout=gentoo \ + --enable-nonportable-atomics \ + --enable-threads \ + ${myconf} + + rm -f libtool +} + +src_compile() { + emake + $(tc-getCC) ${CFLAGS} -lpthread ${LDFLAGS} -L.libs/ -Iinclude "${FILESDIR}"/apxattr.c -pthread -lapr-1 -o apxattr || die "lsprint compile failed" + + + + if use doc; then + emake dox + fi +} + +src_install() { + default + + find "${ED}" -name "*.la" -exec rm -f {} + + + if use doc; then + dohtml -r docs/dox/html/* + fi + + if ! use static-libs; then + find "${ED}" -name "*.a" -exec rm -f {} + + fi + + dobin apxattr + + # This file is only used on AIX systems, which Gentoo is not, + # and causes collisions between the SLOTs, so remove it. + # Even in Prefix, we don't need this on AIX. + rm -f "${ED}usr/$(get_libdir)/apr.exp" +} diff --git a/dev-libs/apr/files/apr-1.4.5-xattr-build-1.patch b/dev-libs/apr/files/apr-1.4.5-xattr-build-1.patch new file mode 100644 index 00000000..856b67f1 --- /dev/null +++ b/dev-libs/apr/files/apr-1.4.5-xattr-build-1.patch @@ -0,0 +1,159 @@ +Submitted By: Mario Fetka (mario dot fetka at gmail dot com) +Date: 2011-11-21 +Initial Package Version: 1.4.5 +Origin: http://privsep.org/patches/2.3.0-dev/xattr-patches/apr-xattr-build.patch +Upstream Status: unknown +Description: build infrastructure + +diff -Naur apr-1.4.5.orig/build.conf apr-1.4.5/build.conf +--- apr-1.4.5.orig/build.conf 2011-11-21 18:38:28.659217726 +0000 ++++ apr-1.4.5/build.conf 2011-11-21 18:39:17.735760998 +0000 +@@ -13,7 +13,7 @@ + # directories that have platform-specific code in them. the resulting + # pattern will be: SUBDIR/PLATFORM/*.c + platform_dirs = +- dso file_io locks memory misc mmap network_io poll random ++ dso file_io locks memory misc mmap network_io poll random xattr + shmem support threadproc time user atomic + + # all the public headers +diff -Naur apr-1.4.5.orig/configure.in apr-1.4.5/configure.in +--- apr-1.4.5.orig/configure.in 2011-11-21 18:38:28.985607639 +0000 ++++ apr-1.4.5/configure.in 2011-11-21 18:43:25.981912296 +0000 +@@ -197,7 +197,7 @@ + DEFAULT_OSDIR="unix" + echo "(Default will be ${DEFAULT_OSDIR})" + +-apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random" ++apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random xattr" + + dnl Checks for programs. + AC_PROG_MAKE_SET +@@ -1466,7 +1466,9 @@ + sys/types.h \ + sys/uio.h \ + sys/un.h \ +- sys/wait.h) ++ sys/wait.h \ ++ sys/xattr.h \ ++ sys/extattr.h) + + # IRIX 6.5 has a problem in which prevents it from + # being included by itself. Check for manually, +@@ -1518,6 +1520,8 @@ + AC_SUBST(unistdh) + AC_SUBST(signalh) + AC_SUBST(sys_waith) ++AC_SUBST(sys_xattrh) ++AC_SUBST(sys_extattrh) + AC_SUBST(processh) + AC_SUBST(pthreadh) + AC_SUBST(semaphoreh) +@@ -2472,6 +2476,87 @@ + APR_CHECK_DIRENT_INODE + APR_CHECK_DIRENT_TYPE + ++dnl ----------------------------- Checking for Extended Attributes Support ++echo "${nl}Checking for Extended Attributes Support..." ++ ++# Check whether Extended Attributes have explicitly been disabled ++AC_ARG_ENABLE(xattr, ++ [ --disable-xattr Disable Extended Attributes support in APR.], ++ [ if test "$enableval" = "no"; then ++ user_disabled_xattr=1 ++ fi ], ++ [ user_disabled_xattr=0 ] ) ++ ++xattrdarwin="0" ++xattrlinux="0" ++xattrfreebsd="0" ++xattrsolaris="0" ++if test "$user_disabled_xattr" = 1; then ++ echo "no -- disabled by user" ++else ++ AC_CHECK_FUNCS([fgetxattr fsetxattr flistxattr fremovexattr lgetxattr \ ++ extattr_get_fd extattr_set_fd extattr_list_fd \ ++ extattr_delete_fd openat unlinkat]) ++ APR_CHECK_DEFINE(O_XATTR, sys/fcntl.h) ++ APR_CHECK_DEFINE(XATTR_NOFOLLOW, sys/xattr.h) ++ APR_CHECK_DEFINE(XATTR_CREATE, sys/xattr.h) ++ APR_CHECK_DEFINE(XATTR_REPLACE, sys/xattr.h) ++ APR_CHECK_DEFINE(XATTR_NAME_MAX, linux/limits.h) ++ APR_CHECK_DEFINE(XATTR_SIZE_MAX, linux/limits.h) ++ APR_CHECK_DEFINE(XATTR_LIST_MAX, linux/limits.h) ++ APR_CHECK_DEFINE(XATTR_MAXNAMELEN, sys/xattr.h) ++ APR_CHECK_DEFINE(EXTATTR_NAMESPACE_USER, sys/extattr.h) ++ APR_CHECK_DEFINE(EXTATTR_NAMESPACE_SYSTEM, sys/extattr.h) ++ APR_CHECK_DEFINE(EXTATTR_MAXNAMELEN, sys/extattr.h) ++ ++ APR_BEGIN_DECISION([xattr attribute system interface]) ++ APR_IFALLYES(header:sys/xattr.h dnl ++ define:XATTR_NOFOLLOW dnl ++ func:fgetxattr dnl ++ func:fsetxattr dnl ++ func:flistxattr dnl ++ func:fremovexattr, ++ [xattrdarwin="1" ++ APR_DECIDE(USE_XATTR_DARWIN, [xattr (Darwin)])]) ++ ++ APR_IFALLYES(header:sys/xattr.h dnl ++ func:lgetxattr dnl ++ func:fgetxattr dnl ++ func:fsetxattr dnl ++ func:flistxattr dnl ++ func:fremovexattr, ++ [xattrlinux="1" ++ APR_DECIDE(USE_XATTR_LINUX, [xattr (Linux)])]) ++ ++ APR_IFALLYES(header:sys/extattr.h dnl ++ func:extattr_set_fd dnl ++ func:func:extattr_get_fd dnl ++ func:extattr_list_fd dnl ++ func:func:extattr_delete_fd, ++ [xattrfreebsd="1" ++ APR_DECIDE(USE_XATTR_FREEBSD, [extattr (FreeBSD)])]) ++ ++ APR_IFALLYES(define:O_XATTR dnl ++ func:openat dnl ++ func:unlinkat, ++ [xattrsolaris="1" ++ APR_DECIDE(USE_XATTR_SOLARIS, [attropen (Solaris)])]) ++ ++ if test "x$ac_decision" = "x"; then ++ ac_decision="USE_XATTR_NONE" ++ ac_decision_msg="no xattr interface available" ++ fi ++ APR_END_DECISION ++ AC_DEFINE_UNQUOTED($ac_decision) ++fi ++ ++if test "$xattrdarwin$xattrlinux$xattrfreebsd$xattrsolaris" = "0000"; then ++ xattr="0" ++else ++ xattr="1" ++fi ++AC_SUBST(xattr) ++ + dnl ----------------------------- Checking for UUID Support + echo "${nl}Checking for OS UUID Support..." + +diff -Naur apr-1.4.5.orig/include/apr.h.in apr-1.4.5/include/apr.h.in +--- apr-1.4.5.orig/include/apr.h.in 2011-11-21 18:38:28.661532544 +0000 ++++ apr-1.4.5/include/apr.h.in 2011-11-21 18:40:23.666523955 +0000 +@@ -104,6 +104,8 @@ + #define APR_HAVE_SYS_UIO_H @sys_uioh@ + #define APR_HAVE_SYS_UN_H @sys_unh@ + #define APR_HAVE_SYS_WAIT_H @sys_waith@ ++#define APR_HAVE_SYS_XATTR_H @sys_xattrh@ ++#define APR_HAVE_SYS_EXTATTR_H @sys_extattrh@ + #define APR_HAVE_TIME_H @timeh@ + #define APR_HAVE_UNISTD_H @unistdh@ + #define APR_HAVE_WINDOWS_H @windowsh@ +@@ -276,6 +278,7 @@ + #define APR_HAS_UNICODE_FS @have_unicode_fs@ + #define APR_HAS_PROC_INVOKED @have_proc_invoked@ + #define APR_HAS_USER @apr_has_user@ ++#define APR_HAS_XATTR @xattr@ + #define APR_HAS_LARGE_FILES @aprlfs@ + #define APR_HAS_XTHREAD_FILES @apr_has_xthread_files@ + #define APR_HAS_OS_UUID @osuuid@ diff --git a/dev-libs/apr/files/apr-1.4.6-mint.patch b/dev-libs/apr/files/apr-1.4.6-mint.patch new file mode 100644 index 00000000..43442da9 --- /dev/null +++ b/dev-libs/apr/files/apr-1.4.6-mint.patch @@ -0,0 +1,27 @@ +diff -ur apr-1.2.11/build/apr_hints.m4 apr-1.2.11-mint/build/apr_hints.m4 +--- apr-1.2.11/build/apr_hints.m4 Tue Jun 26 23:47:46 2007 ++++ apr-1.2.11-mint/build/apr_hints.m4 Tue Mar 25 12:00:14 2008 +@@ -44,8 +44,9 @@ + + case "$host" in + *mint) +- APR_ADDTO(CPPFLAGS, [-DMINT]) +- APR_ADDTO(LIBS, [-lportlib]) ++ APR_ADDTO(CPPFLAGS, [-DMINT -D_GNU_SOURCE]) ++ apr_cv_pthreads_cflags="none" ++ apr_cv_pthreads_lib="-lpthread" + ;; + *MPE/iX*) + APR_ADDTO(CPPFLAGS, [-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE]) +diff -ur apr-1.2.11/build/apr_threads.m4 apr-1.2.11-mint/build/apr_threads.m4 +--- apr-1.2.11/build/apr_threads.m4 Thu Aug 3 11:05:26 2006 ++++ apr-1.2.11-mint/build/apr_threads.m4 Wed Mar 19 08:38:56 2008 +@@ -198,7 +198,7 @@ + AC_DEFUN(APR_CHECK_SIGWAIT_ONE_ARG,[ + AC_CACHE_CHECK(whether sigwait takes one argument,ac_cv_sigwait_one_arg,[ + AC_TRY_COMPILE([ +-#if defined(__NETBSD__) || defined(DARWIN) ++#if defined(__NETBSD__) || defined(DARWIN) || defined(MINT) + /* When using the unproven-pthreads package, we need to pull in this + * header to get a prototype for sigwait(). Else things will fail later + * on. XXX Should probably be fixed in the unproven-pthreads package. diff --git a/dev-libs/apr/files/apr-xattr-build.patch b/dev-libs/apr/files/apr-xattr-build.patch new file mode 100644 index 00000000..f815acdb --- /dev/null +++ b/dev-libs/apr/files/apr-xattr-build.patch @@ -0,0 +1,155 @@ +Index: include/apr.h.in +=================================================================== +--- include/apr.h.in (revision 606453) ++++ include/apr.h.in (working copy) +@@ -103,6 +103,8 @@ + #define APR_HAVE_SYS_UIO_H @sys_uioh@ + #define APR_HAVE_SYS_UN_H @sys_unh@ + #define APR_HAVE_SYS_WAIT_H @sys_waith@ ++#define APR_HAVE_SYS_XATTR_H @sys_xattrh@ ++#define APR_HAVE_SYS_EXTATTR_H @sys_extattrh@ + #define APR_HAVE_TIME_H @timeh@ + #define APR_HAVE_UNISTD_H @unistdh@ + #define APR_HAVE_WINDOWS_H @windowsh@ +@@ -238,6 +240,7 @@ + #define APR_HAS_UNICODE_FS @have_unicode_fs@ + #define APR_HAS_PROC_INVOKED @have_proc_invoked@ + #define APR_HAS_USER 1 ++#define APR_HAS_XATTR @xattr@ + #define APR_HAS_LARGE_FILES @aprlfs@ + #define APR_HAS_XTHREAD_FILES 0 + #define APR_HAS_OS_UUID @osuuid@ +Index: configure.in +=================================================================== +--- configure.in (revision 606453) ++++ configure.in (working copy) +@@ -124,7 +124,7 @@ + DEFAULT_OSDIR="unix" + echo "(Default will be ${DEFAULT_OSDIR})" + +-apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random" ++apr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random xattr" + + dnl Checks for programs. + AC_PROG_MAKE_SET +@@ -1135,7 +1135,9 @@ + sys/types.h \ + sys/uio.h \ + sys/un.h \ +- sys/wait.h) ++ sys/wait.h \ ++ sys/xattr.h \ ++ sys/extattr.h) + + # IRIX 6.5 has a problem in which prevents it from + # being included by itself. Check for manually, +@@ -1187,6 +1189,8 @@ + AC_SUBST(unistdh) + AC_SUBST(signalh) + AC_SUBST(sys_waith) ++AC_SUBST(sys_xattrh) ++AC_SUBST(sys_extattrh) + AC_SUBST(pthreadh) + AC_SUBST(semaphoreh) + AC_SUBST(windowsh) +@@ -2030,6 +2034,87 @@ + APR_CHECK_DIRENT_INODE + APR_CHECK_DIRENT_TYPE + ++dnl ----------------------------- Checking for Extended Attributes Support ++echo "${nl}Checking for Extended Attributes Support..." ++ ++# Check whether Extended Attributes have explicitly been disabled ++AC_ARG_ENABLE(xattr, ++ [ --disable-xattr Disable Extended Attributes support in APR.], ++ [ if test "$enableval" = "no"; then ++ user_disabled_xattr=1 ++ fi ], ++ [ user_disabled_xattr=0 ] ) ++ ++xattrdarwin="0" ++xattrlinux="0" ++xattrfreebsd="0" ++xattrsolaris="0" ++if test "$user_disabled_xattr" = 1; then ++ echo "no -- disabled by user" ++else ++ AC_CHECK_FUNCS([fgetxattr fsetxattr flistxattr fremovexattr lgetxattr \ ++ extattr_get_fd extattr_set_fd extattr_list_fd \ ++ extattr_delete_fd openat unlinkat]) ++ APR_CHECK_DEFINE(O_XATTR, sys/fcntl.h) ++ APR_CHECK_DEFINE(XATTR_NOFOLLOW, sys/xattr.h) ++ APR_CHECK_DEFINE(XATTR_CREATE, sys/xattr.h) ++ APR_CHECK_DEFINE(XATTR_REPLACE, sys/xattr.h) ++ APR_CHECK_DEFINE(XATTR_NAME_MAX, linux/limits.h) ++ APR_CHECK_DEFINE(XATTR_SIZE_MAX, linux/limits.h) ++ APR_CHECK_DEFINE(XATTR_LIST_MAX, linux/limits.h) ++ APR_CHECK_DEFINE(XATTR_MAXNAMELEN, sys/xattr.h) ++ APR_CHECK_DEFINE(EXTATTR_NAMESPACE_USER, sys/extattr.h) ++ APR_CHECK_DEFINE(EXTATTR_NAMESPACE_SYSTEM, sys/extattr.h) ++ APR_CHECK_DEFINE(EXTATTR_MAXNAMELEN, sys/extattr.h) ++ ++ APR_BEGIN_DECISION([xattr attribute system interface]) ++ APR_IFALLYES(header:sys/xattr.h dnl ++ define:XATTR_NOFOLLOW dnl ++ func:fgetxattr dnl ++ func:fsetxattr dnl ++ func:flistxattr dnl ++ func:fremovexattr, ++ [xattrdarwin="1" ++ APR_DECIDE(USE_XATTR_DARWIN, [xattr (Darwin)])]) ++ ++ APR_IFALLYES(header:sys/xattr.h dnl ++ func:lgetxattr dnl ++ func:fgetxattr dnl ++ func:fsetxattr dnl ++ func:flistxattr dnl ++ func:fremovexattr, ++ [xattrlinux="1" ++ APR_DECIDE(USE_XATTR_LINUX, [xattr (Linux)])]) ++ ++ APR_IFALLYES(header:sys/extattr.h dnl ++ func:extattr_set_fd dnl ++ func:func:extattr_get_fd dnl ++ func:extattr_list_fd dnl ++ func:func:extattr_delete_fd, ++ [xattrfreebsd="1" ++ APR_DECIDE(USE_XATTR_FREEBSD, [extattr (FreeBSD)])]) ++ ++ APR_IFALLYES(define:O_XATTR dnl ++ func:openat dnl ++ func:unlinkat, ++ [xattrsolaris="1" ++ APR_DECIDE(USE_XATTR_SOLARIS, [attropen (Solaris)])]) ++ ++ if test "x$ac_decision" = "x"; then ++ ac_decision="USE_XATTR_NONE" ++ ac_decision_msg="no xattr interface available" ++ fi ++ APR_END_DECISION ++ AC_DEFINE_UNQUOTED($ac_decision) ++fi ++ ++if test "$xattrdarwin$xattrlinux$xattrfreebsd$xattrsolaris" = "0000"; then ++ xattr="0" ++else ++ xattr="1" ++fi ++AC_SUBST(xattr) ++ + dnl ----------------------------- Checking for UUID Support + echo "${nl}Checking for OS UUID Support..." + +Index: build.conf +=================================================================== +--- build.conf (revision 606453) ++++ build.conf (working copy) +@@ -13,7 +13,7 @@ + # directories that have platform-specific code in them. the resulting + # pattern will be: SUBDIR/PLATFORM/*.c + platform_dirs = +- dso file_io locks memory misc mmap network_io poll random ++ dso file_io locks memory misc mmap network_io poll random xattr + shmem support threadproc time user atomic + + # all the public headers diff --git a/dev-libs/apr/files/apr-xattr-headers.patch b/dev-libs/apr/files/apr-xattr-headers.patch new file mode 100644 index 00000000..329d7a8c --- /dev/null +++ b/dev-libs/apr/files/apr-xattr-headers.patch @@ -0,0 +1,366 @@ +Index: include/apr_file_xattr.h +=================================================================== +--- include/apr_file_xattr.h (revision 0) ++++ include/apr_file_xattr.h (revision 0) +@@ -0,0 +1,249 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#ifndef APR_FILE_XATTR_H ++#define APR_FILE_XATTR_H ++ ++/** ++ * @file apr_file_xattr.h ++ * @brief APR File Extended Attributes ++ */ ++ ++#include "apr.h" ++#include "apr_pools.h" ++#include "apr_tables.h" ++#include "apr_file_io.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif /* __cplusplus */ ++ ++/** ++ * @defgroup apr_xattr File Extended Attribute Functions ++ * @ingroup APR ++ * @{ ++ */ ++ ++/** When setting values, fail if the attribute already exists */ ++#define APR_XATTR_CREATE 1 ++ ++/** When setting values, fail if the attribute does not already exist */ ++#define APR_XATTR_REPLACE 2 ++ ++typedef struct apr_xattr_t apr_xattr_t; ++ ++/** ++ * Open a context for access to the extended attributes of a file or ++ * directory specified by a path name ++ * ++ * @param new the context allocated for access to extended attributes ++ * @param pathname the path name of the file or directory ++ * @param p the pool to allocate any memory from ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the path was opened for attribute access
++ *        APR_STATUS_IS_ENOENT()  the file or directory does not exist
++ * 
++ * Other operating system dependant error codes may be returned. ++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_open_path(apr_xattr_t **new, ++ const char *pathname, ++ apr_pool_t *p); ++ ++/** ++ * Open a context for access to the extended attributes of an open file ++ * ++ * @param new the context allocated for access to extended attributes ++ * @param file the open file to access the extended attributes on ++ * @param p the pool to allocate any memory from ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the file was opened for attribute access
++ * 
++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_open_file(apr_xattr_t **new, ++ apr_file_t *file, ++ apr_pool_t *p); ++ ++/** ++ * Open a context for access to the extended attributes of an open directory ++ * ++ * @param new the context allocated for access to extended attributes ++ * @param dir the open directory to access the extended attributes on ++ * @param p the pool to allocate any memory from if required ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the directory was opened for attribute access
++ * 
++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_open_dir(apr_xattr_t **new, ++ apr_dir_t *dir, ++ apr_pool_t *p); ++ ++/** ++ * Destroy a context used for access to extended attributes ++ * ++ * @param xattr the context to destroy ++ *
++ *        APR_SUCCESS             the context was destroyed
++ * 
++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_destroy(apr_xattr_t *xattr); ++ ++/** ++ * Set an extended attribute on a file or directory ++ * @param xattr the opened extended attribute file or directory context ++ * @param name the attribute name to set ++ * @param value the attribute value ++ * @param size the size in bytes of the attribute value ++ * @param flags to control how the attribute is set ++ *
++ *         APR_XATTR_CREATE       return an error if the attribute name
++ *                                already exists.
++ *         APR_XATTR_REPLACE      return an error if the attribute name
++ *                                does not already exist.
++ * 
++ * @param p the pool to allocate any memory from if required ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the attribute was set
++ *        APR_STATUS_IS_EEXIST()  create flag and the attribute exists
++ *        APR_STATUS_IS_ENOATTR() replace flag and the attribute doesn't exist
++ * 
++ * Other operating system dependant error codes may be returned ++ * in the cases not listed above. ++ * ++ * @remark if neither flag APR_XATTR_CREATE or APR_XATTR_REPLACE are ++ * given then the attribute will either be created if it does not ++ * already exist or replaced if it does exist. ++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags); ++ ++/** ++ * Get an extended attribute from a file or directory ++ * @param xattr the opened extended attribute file or directory context ++ * @param name the name of the attribute to get ++ * @param value the returned attribute value allocated from the pool ++ * @param size the returned size of the attribute value ++ * @param flags to control how the attribute is got (reserved for future use) ++ * @param p the pool to allocate any memory from if required ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the attribute was retrieved
++ *        APR_STATUS_IS_ENOATTR() the attribute does not exist
++ * 
++ * Other operating system dependant error codes may be returned ++ * in the cases not listed above. ++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags); ++ ++/** ++ * Check for the existence of an extended attribute on a file or directory ++ * @param xattr the opened extended attribute file or directory context ++ * @param name the name of the attribute to get ++ * @param exists the returned value indicating whether the attribute exists ++ * @param flags to control how the attribute is got (reserved for future use) ++ * @param p the pool to allocate any memory from if required ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the existence was successfully tested
++ * 
++ * Other operating system dependant error codes may be returned ++ * in the cases not listed above. ++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags); ++ ++/** ++ * List the extended attributes on a file or directory ++ * @param xattr the opened extended attribute file or directory context ++ * @param list the returned array of attributes names ++ * @param flags to control how the file is listed (reserved for future use) ++ * @param p the pool to allocate any memory from if required ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the attributes were listed
++ * 
++ * Other operating system dependant error codes may be returned ++ * in the cases not listed above. ++ * ++ * @remark list is an array containing simple null terminated strings. ++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags); ++ ++/** ++ * Remove an extended attribute from a file or directory ++ * @param xattr the opened extended attribute file or directory context ++ * @param name the attribute name to remove ++ * @param flags to control how the attribute is removed (reserved for future use) ++ * @param p the pool to allocate any memory from if required ++ * @return the status of the operation: ++ *
++ *        APR_SUCCESS             the attribute was removed
++ *        APR_STATUS_IS_ENOATTR() the attribute does not exist
++ * 
++ * Other operating system dependant error codes may be returned ++ * in the cases not listed above. ++ * ++ * @warning Platforms which do not implement this feature will return ++ * APR_ENOTIMPL. ++ */ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags); ++/** @} */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* ! APR_FILE_XATTR_H */ +Index: include/arch/unix/apr_arch_xattr.h +=================================================================== +--- include/arch/unix/apr_arch_xattr.h (revision 0) ++++ include/arch/unix/apr_arch_xattr.h (revision 0) +@@ -0,0 +1,51 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#ifndef FILE_XATTR_H ++#define FILE_XATTR_H ++ ++#if APR_HAVE_CTYPE_H ++#include ++#endif ++#if APR_HAVA_ERRNO_H ++#include ++#endif ++#if APR_HAVE_SYS_XATTR_H ++#include ++#endif ++#if APR_HAVE_SYS_EXTATTR_H ++#include ++#endif ++#if APR_HAVE_FCNTL_H ++#include ++#endif ++#if APR_HAVE_DIRENT_H ++#include ++#endif ++ ++#ifdef _LARGEFILE64_SOURCE ++#define XATTR_OPEN_FLAGS O_RDONLY | O_LARGEFILE ++#else ++#define XATTR_OPEN_FLAGS O_RDONLY ++#endif ++ ++struct apr_xattr_t { ++ int fd; ++ apr_uint32_t flags; ++ apr_pool_t *pool; ++}; ++ ++#endif +Index: include/apr_errno.h +=================================================================== +--- include/apr_errno.h (revision 606453) ++++ include/apr_errno.h (working copy) +@@ -851,6 +851,13 @@ + #define APR_EAFNOSUPPORT (APR_OS_START_CANONERR + 27) + #endif + ++/** @see APR_STATUS_IS_ENOATTR */ ++#ifdef ENOATTR ++#define APR_ENOATTR ENOATTR ++#else ++#define APR_ENOATTR (APR_OS_START_CANONERR + 28) ++#endif ++ + /** @} */ + + #if defined(OS2) && !defined(DOXYGEN) +@@ -995,6 +1002,7 @@ + || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED) + #define APR_STATUS_IS_EAFNOSUPPORT(s) ((s) == APR_AFNOSUPPORT \ + || (s) == APR_OS_START_SYSERR + SOCEAFNOSUPPORT) ++#define APR_STATUS_IS_ENOATTR(s) ((s) == APR_ENOATTR) + + /* + Sorry, too tired to wrap this up for OS2... feel free to +@@ -1139,6 +1147,7 @@ + || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY) + #define APR_STATUS_IS_EAFNOSUPPORT(s) ((s) == APR_EAFNOSUPPORT \ + || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT) ++#define APR_STATUS_IS_ENOATTR(s) ((s) == APR_ENOATTR) + + #elif defined(NETWARE) && defined(USE_WINSOCK) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */ + +@@ -1200,6 +1209,7 @@ + #define APR_STATUS_IS_ENOTEMPTY(s) ((s) == APR_ENOTEMPTY) + #define APR_STATUS_IS_EAFNOSUPPORT(s) ((s) == APR_EAFNOSUPPORT \ + || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT) ++#define APR_STATUS_IS_ENOATTR(s) ((s) == APR_ENOATTR) + + #else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */ + +@@ -1319,6 +1329,13 @@ + (s) == APR_EEXIST) + /** Address Family not supported */ + #define APR_STATUS_IS_EAFNOSUPPORT(s) ((s) == APR_EAFNOSUPPORT) ++/** Attribute does not exists */ ++#ifdef ENODATA ++#define APR_STATUS_IS_ENOATTR(s) ((s) == APR_ENOATTR \ ++ || (s) == ENODATA) ++#else ++#define APR_STATUS_IS_ENOATTR(s) ((s) == APR_ENOATTR) ++#endif + /** @} */ + + #endif /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */ diff --git a/dev-libs/apr/files/apr-xattr-impl.patch b/dev-libs/apr/files/apr-xattr-impl.patch new file mode 100644 index 00000000..47628c9a --- /dev/null +++ b/dev-libs/apr/files/apr-xattr-impl.patch @@ -0,0 +1,1233 @@ +Index: xattr/unix/xattr.c +=================================================================== +--- xattr/unix/xattr.c (revision 0) ++++ xattr/unix/xattr.c (revision 0) +@@ -0,0 +1,165 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_private.h" ++#include "apr_tables.h" ++ ++#if USE_XATTR_DARWIN || USE_XATTR_FREEBSD || USE_XATTR_LINUX || \ ++ USE_XATTR_SOLARIS ++ ++#include "apr_arch_file_io.h" ++#include "apr_arch_xattr.h" ++ ++#include "apr_file_xattr.h" ++ ++ ++static apr_status_t xattr_cleanup(void *xattr) ++{ ++ close(((apr_xattr_t*)xattr)->fd); ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_path(apr_xattr_t **new, ++ const char *pathname, ++ apr_pool_t *p) ++{ ++ int fd; ++ int osflags = 0; ++ ++ fd = open(pathname, XATTR_OPEN_FLAGS); ++ if (fd < 0) { ++ return errno; ++ } ++ ++ *new = apr_palloc(p, sizeof(apr_xattr_t)); ++ (*new)->fd = fd; ++ (*new)->flags = 0; ++ (*new)->pool = p; ++ ++ apr_pool_cleanup_register((*new)->pool, (void *)(*new), ++ xattr_cleanup, xattr_cleanup); ++ ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_file(apr_xattr_t **new, ++ apr_file_t *file, ++ apr_pool_t *p) ++{ ++ *new = apr_palloc(p, sizeof(apr_xattr_t)); ++ (*new)->fd = file->filedes; ++ (*new)->flags = APR_FILE_NOCLEANUP; ++ (*new)->pool = p; ++ ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_dir(apr_xattr_t **new, ++ apr_dir_t *dir, ++ apr_pool_t *p) ++{ ++ *new = apr_palloc(p, sizeof(apr_xattr_t)); ++ (*new)->fd = dirfd(dir->dirstruct); ++ (*new)->flags = APR_FILE_NOCLEANUP; ++ (*new)->pool = p; ++ ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_destroy(apr_xattr_t *xattr) ++{ ++ if (!(xattr->flags & APR_FILE_NOCLEANUP)) { ++ return apr_pool_cleanup_run(xattr->pool, xattr, xattr_cleanup); ++ } ++ return APR_SUCCESS; ++} ++ ++#else ++ ++#include "apr_file_xattr.h" ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_path(apr_xattr_t **new, ++ const char *pathname, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_file(apr_xattr_t **new, ++ apr_file_t *file, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_dir(apr_xattr_t **new, ++ apr_dir_t *dir, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_destroy(apr_xattr_t *xattr) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ *exists = 0; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++#endif +Index: xattr/unix/darwin.c +=================================================================== +--- xattr/unix/darwin.c (revision 0) ++++ xattr/unix/darwin.c (revision 0) +@@ -0,0 +1,143 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_private.h" ++ ++#if USE_XATTR_DARWIN ++ ++#include "apr_arch_xattr.h" ++ ++#include "apr_strings.h" ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ int ret; ++ int osflags = 0; ++ ++ if (flags & APR_XATTR_CREATE) { ++ osflags |= XATTR_CREATE; ++ } ++ if (flags & APR_XATTR_REPLACE) { ++ osflags |= XATTR_REPLACE; ++ } ++ ++ ret = fsetxattr(xattr->fd, name, value, size, 0, osflags); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ apr_ssize_t ret; ++ ++ ret = fgetxattr(xattr->fd, name, NULL, 0, 0, 0); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ *value = apr_palloc(xattr->pool, ret); ++ ++ ret = fgetxattr(xattr->fd, name, *value, ret, 0, 0); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ *size = ret; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ apr_ssize_t ret; ++ ++ ret = fgetxattr(xattr->fd, name, NULL, 0, 0, 0); ++ ++ if (ret < 0) { ++ *exists = 0; ++ if (errno == ENOATTR) { ++ return APR_SUCCESS; ++ } ++ return errno; ++ } ++ *exists = 1; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ apr_ssize_t lsize; ++ char *listbuf, *listp; ++ ++ lsize = flistxattr(xattr->fd, NULL, 0, 0); ++ ++ if (lsize < 0) { ++ return errno; ++ } ++ if (lsize == 0) { ++ *list = apr_array_make(xattr->pool, 0, sizeof(char*)); ++ return APR_SUCCESS; ++ } ++ listbuf = apr_palloc(xattr->pool, lsize); ++ ++ lsize = flistxattr(xattr->fd, listbuf, lsize, 0); ++ ++ if (lsize < 0) { ++ return errno; ++ } ++ *list = apr_array_make(xattr->pool, 1, sizeof(char*)); ++ listp = listbuf; ++ while (listp < listbuf + lsize) { ++ int attrlen = strlen(listp) + 1; ++ *(char**)apr_array_push(*list) = listp; ++ listp += attrlen; ++ } ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ int ret; ++ ++ ret = fremovexattr(xattr->fd, name, 0); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ return APR_SUCCESS; ++} ++ ++#endif /* USE_XATTR_DARWIN */ +Index: xattr/unix/linux.c +=================================================================== +--- xattr/unix/linux.c (revision 0) ++++ xattr/unix/linux.c (revision 0) +@@ -0,0 +1,156 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_private.h" ++ ++#if USE_XATTR_LINUX ++ ++#include "apr_arch_xattr.h" ++ ++#include "apr_strings.h" ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++static const char* user_ns_prefix = "user."; ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ int ret; ++ int osflags = 0; ++ ++ char *tmpname = apr_pstrcat(xattr->pool, user_ns_prefix, name, NULL); ++ ++ if (flags & APR_XATTR_CREATE) { ++ osflags |= XATTR_CREATE; ++ } ++ if (flags & APR_XATTR_REPLACE) { ++ osflags |= XATTR_REPLACE; ++ } ++ ++ ret = fsetxattr(xattr->fd, tmpname, value, size, osflags); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ apr_ssize_t ret; ++ char *tmpname = apr_pstrcat(xattr->pool, user_ns_prefix, name, NULL); ++ ++ ret = fgetxattr(xattr->fd, tmpname, NULL, 0); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ *value = apr_palloc(xattr->pool, ret); ++ ++ ret = fgetxattr(xattr->fd, tmpname, *value, ret); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ *size = ret; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ apr_ssize_t ret; ++ char *tmpname = apr_pstrcat(xattr->pool, user_ns_prefix, name, NULL); ++ ++ ret = fgetxattr(xattr->fd, tmpname, NULL, 0); ++ ++ if (ret < 0) { ++ *exists = 0; ++ if (errno == ENODATA) { ++ return APR_SUCCESS; ++ } ++ return errno; ++ } ++ *exists = 1; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ apr_ssize_t lsize; ++ char *listbuf, *listp; ++ ++ lsize = flistxattr(xattr->fd, NULL, 0); ++ ++ if (lsize < 0) { ++ return errno; ++ } ++ if (lsize == 0) { ++ *list = apr_array_make(xattr->pool, 0, sizeof(char*)); ++ return APR_SUCCESS; ++ } ++ listbuf = apr_palloc(xattr->pool, lsize); ++ ++ lsize = flistxattr(xattr->fd, listbuf, lsize); ++ ++ if (lsize < 0) { ++ return errno; ++ } ++ *list = apr_array_make(xattr->pool, 1, sizeof(char*)); ++ listp = listbuf; ++ while (listp < listbuf + lsize) { ++ int attrlen = strlen(listp) + 1; ++ int user_ns_prefix_len = strlen(user_ns_prefix); ++ if (strncmp(listp, user_ns_prefix, user_ns_prefix_len) != 0) { ++ continue; ++ } ++ listp += user_ns_prefix_len; ++ attrlen -= user_ns_prefix_len; ++ *(char**)apr_array_push(*list) = listp; ++ listp += attrlen; ++ } ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ int ret; ++ char *tmpname = apr_pstrcat(xattr->pool, user_ns_prefix, name, NULL); ++ ++ ret = fremovexattr(xattr->fd, tmpname); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ return APR_SUCCESS; ++} ++ ++#endif /* USE_XATTR_LINUX */ +Index: xattr/unix/freebsd.c +=================================================================== +--- xattr/unix/freebsd.c (revision 0) ++++ xattr/unix/freebsd.c (revision 0) +@@ -0,0 +1,162 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_private.h" ++ ++#if USE_XATTR_FREEBSD ++ ++#include "apr_arch_xattr.h" ++ ++#include "apr_strings.h" ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ int ret; ++ ++ if ((flags & APR_XATTR_CREATE) && (flags & APR_XATTR_REPLACE)) { ++ return APR_EINVAL; ++ } ++ ++ if ((flags & APR_XATTR_CREATE) || (flags & APR_XATTR_REPLACE)) { ++ ++ ret = extattr_get_fd(xattr->fd, EXTATTR_NAMESPACE_USER, name, NULL, 0); ++ ++ if (ret >= 0 && (flags & APR_XATTR_CREATE)) { ++ return APR_EEXIST; ++ } ++ else if (ret == -1 && errno == ENOATTR) { ++ if (flags & APR_XATTR_REPLACE) { ++ return APR_ENOATTR; ++ } ++ } ++ else if (ret == -1) { ++ return errno; ++ } ++ } ++ ++ ret = extattr_set_fd(xattr->fd, EXTATTR_NAMESPACE_USER, name, value, size); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ int ret; ++ ++ ret = extattr_get_fd(xattr->fd, EXTATTR_NAMESPACE_USER, name, NULL, 0); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ *value = apr_palloc(xattr->pool, ret); ++ ++ ret = extattr_get_fd(xattr->fd, EXTATTR_NAMESPACE_USER, name, *value, ret); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ *size = ret; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ int ret; ++ ++ ret = extattr_get_fd(xattr->fd, EXTATTR_NAMESPACE_USER, name, NULL, 0); ++ ++ if (ret < 0) { ++ *exists = 0; ++ if (errno == ENOATTR) { ++ return APR_SUCCESS; ++ } ++ return errno; ++ } ++ *exists = 1; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ int lsize; ++ char *listbuf, *listp; ++ ++ lsize = extattr_list_fd(xattr->fd, EXTATTR_NAMESPACE_USER, NULL, 0); ++ ++ if (lsize < 0) { ++ return errno; ++ } ++ if (lsize == 0) { ++ *list = apr_array_make(xattr->pool, 0, sizeof(char*)); ++ return APR_SUCCESS; ++ } ++ listbuf = apr_palloc(xattr->pool, lsize); ++ ++ lsize = extattr_list_fd(xattr->fd, EXTATTR_NAMESPACE_USER, listbuf, lsize); ++ ++ if (lsize < 0) { ++ return errno; ++ } ++ ++ *list = apr_array_make(xattr->pool, 1, sizeof(char*)); ++ listp = listbuf; ++ while(listp < listbuf + lsize) { ++ /* first byte is the length of the attribute name and the ++ strings are not null terminated, so we copy them */ ++ int attrlen = (int)*listp; ++ *(char**)apr_array_push(*list) = apr_pstrndup(xattr->pool, listp+1, ++ attrlen); ++ listp += (attrlen + 1); ++ } ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ int ret; ++ ++ ret = extattr_delete_fd(xattr->fd, EXTATTR_NAMESPACE_USER, name); ++ ++ if (ret < 0) { ++ return errno; ++ } ++ ++ return APR_SUCCESS; ++} ++ ++#endif /* USE_XATTR_FREEBSD */ +Index: xattr/unix/solaris.c +=================================================================== +--- xattr/unix/solaris.c (revision 0) ++++ xattr/unix/solaris.c (revision 0) +@@ -0,0 +1,300 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_private.h" ++ ++#if USE_XATTR_SOLARIS ++ ++#include "apr_arch_xattr.h" ++#include "apr_arch_file_io.h" ++ ++#include "apr_strings.h" ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++ ++/* The following code is for escaping and unescaping '/' chars ++ (and '%' as it is used as an escape character) in attribute names. ++ ++ This is because '/' can't be used in Solaris subfile names and doing ++ so could present a security risk as files could be opened elsewhere. ++*/ ++ ++static char nibble_to_hex(register char c) ++{ ++ if (c >= 0 && c <= 9) return '0' + c; ++ if (c >= 10 && c <= 15) return 'a' + c - 10; ++ else return 0; ++} ++ ++static char hex_to_nibble(register char c) ++{ ++ if (c >= '0' && c <= '9') return c - '0'; ++ if (c >= 'a' && c <= 'f') return c - 'a' + 10; ++ else if(c >= 'A' && c <= 'F') return c - 'A' + 10; ++ else return 0; ++} ++ ++static const char* escape_attr_name(const char *name, apr_pool_t *p) ++{ ++ const char *namep; ++ int hasspecial = 0; ++ apr_array_header_t *arr; ++ ++ /* fastpath if atttrname contains no characters that need escaping */ ++ if(strchr(name, '/') == NULL && strchr(name, '%') == NULL) { ++ return name; ++ } ++ ++ /* start with a conservative amount of additional space */ ++ arr = apr_array_make(p, strlen(name) + 16, sizeof(char)); ++ namep = name; ++ while (*namep) { ++ if(*namep == '/' || *namep == '%') { ++ *(char*)apr_array_push(arr) = '%'; ++ *(char*)apr_array_push(arr) = nibble_to_hex(*namep >> 4); ++ *(char*)apr_array_push(arr) = nibble_to_hex(*namep & 0x0f); ++ } else { ++ *(char*)apr_array_push(arr) = *namep; ++ } ++ namep++; ++ } ++ *(char*)apr_array_push(arr) = '\0'; ++ ++ return arr->elts; ++} ++ ++static const char* unescape_attr_name(const char *name, apr_pool_t *p) ++{ ++ const char *namep; ++ int hasspecial = 0; ++ apr_array_header_t *arr; ++ ++ /* fastpath if atttrname contains no escaped characters */ ++ if(strchr(name, '%') == NULL) { ++ return name; ++ } ++ ++ /* start with a conservative amount of additional space */ ++ arr = apr_array_make(p, strlen(name) + 16, sizeof(char)); ++ namep = name; ++ while (*namep) { ++ if(*namep == '%' && *(namep+1) != 0 && *(namep+2) != 0) { ++ namep++; ++ *(char*)apr_array_push(arr) = ++ hex_to_nibble(*namep++) << 4 | hex_to_nibble(*namep++); ++ } else { ++ *(char*)apr_array_push(arr) = *namep++; ++ } ++ } ++ *(char*)apr_array_push(arr) = '\0'; ++ ++ return arr->elts; ++} ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ int ret, fd, osflags; ++ struct_stat statbuf; ++ ++ if (strncmp(name, "SUNW", 4) == 0) { ++ /* don't clash with sun namespace */ ++ return EINVAL; ++ } else if (flags & APR_XATTR_CREATE && flags & APR_XATTR_REPLACE) { ++ return EINVAL; ++ } else if (flags & APR_XATTR_CREATE) { ++ osflags = O_CREAT | O_EXCL; ++ } else if (flags & APR_XATTR_REPLACE) { ++ osflags = 0; ++ } else { ++ osflags = O_CREAT; ++ } ++ ++ fd = openat(xattr->fd, escape_attr_name(name, xattr->pool), ++ osflags | O_XATTR | O_TRUNC | O_WRONLY, 0666); ++ ++ if (fd < 0) { ++ if(errno == ENOENT) { ++ return APR_ENOATTR; ++ } ++ return errno; ++ } ++ ++ do { ++ ret = write(fd, value, size); ++ } while(ret < 0 && errno == EINTR); ++ ++ if (ret < 0) { ++ ret = errno; ++ } ++ else if (ret != size) { ++ ret = APR_EGENERAL; ++ } ++ else { ++ ret = APR_SUCCESS; ++ } ++ close(fd); ++ return ret; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ int ret, fd; ++ ssize_t rsize; ++ struct_stat statbuf; ++ ++ fd = openat(xattr->fd, escape_attr_name(name, xattr->pool), ++ O_RDONLY | O_XATTR); ++ if (fd < 0) { ++ if(errno == ENOENT) { ++ return APR_ENOATTR; ++ } ++ return errno; ++ } ++ ++ ret = fstat(fd, &statbuf); ++ ++ if (ret < 0) { ++ ret = errno; ++ close(fd); ++ return ret; ++ } ++ *value = apr_palloc(xattr->pool, statbuf.st_size); ++ ++ do { ++ rsize = read(fd, *value, statbuf.st_size); ++ } while(rsize < 0 && errno == EINTR); ++ ++ if (rsize < 0) { ++ ret = errno; ++ } ++ else if (rsize != statbuf.st_size) { ++ ret = APR_EGENERAL; ++ } ++ else { ++ ret = APR_SUCCESS; ++ *size = rsize; ++ } ++ close(fd); ++ return ret; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ int ret, fd; ++ ssize_t rsize; ++ struct_stat statbuf; ++ ++ fd = openat(xattr->fd, escape_attr_name(name, xattr->pool), ++ O_RDONLY | O_XATTR); ++ if (fd < 0) { ++ *exists = 0; ++ if(errno == ENOENT) { ++ /* non-existant attribute does not return an error */ ++ return APR_SUCCESS; ++ } ++ return errno; ++ } ++ *exists = 1; ++ return APR_SUCCESS; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ int ret, fd; ++ DIR *dirp; ++ struct dirent *ent, *retent; ++ apr_size_t dirent_size = ++ sizeof(*ent) + (sizeof(ent->d_name) > 1 ? 0 : 255); ++ ++ fd = openat(xattr->fd, ".", O_RDONLY | O_XATTR); ++ ++ if (fd < 0) { ++ return errno; ++ } ++ dirp = fdopendir(fd); ++ if (dirp == NULL) { ++ ret = errno; ++ close(fd); ++ return ret; ++ } ++ ++ *list = apr_array_make(xattr->pool, 1, sizeof(char*)); ++ ent = apr_palloc(xattr->pool, dirent_size); ++ while ((ret = readdir_r(dirp, ent, &retent)) == 0 && retent) { ++ const char *name; ++ if (strncmp(ent->d_name, "SUNW", 4) == 0 || /* private */ ++ strcmp(ent->d_name, ".") == 0 || ++ strcmp(ent->d_name, "..") == 0) continue; ++ ++ name = unescape_attr_name(ent->d_name, xattr->pool); ++ /* we don't need to copy if the name has been unescaped as it ++ is pool allocated memory already */ ++ *(const char**)apr_array_push(*list) = ++ (name != ent->d_name) ? ++ name : apr_pstrdup(xattr->pool, ent->d_name); ++ } ++ ++ if (ret < 0) { ++ ret = errno; ++ } ++ else { ++ ret = APR_SUCCESS; ++ } ++ closedir(dirp); ++ return ret; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ int ret, fd; ++ struct_stat statbuf; ++ ++ fd = openat(xattr->fd, ".", O_XATTR | O_RDONLY); ++ ++ if (fd < 0) { ++ return errno; ++ } ++ ++ ret = unlinkat(fd, escape_attr_name(name, xattr->pool), 0); ++ ++ if (ret < 0) { ++ ret = (errno == ENOENT) ? APR_ENOATTR : errno; ++ } ++ else { ++ ret = APR_SUCCESS; ++ } ++ close(fd); ++ return ret; ++} ++ ++#endif /* USE_XATTR_SOLARIS */ +Index: xattr/netware/xattr.c +=================================================================== +--- xattr/netware/xattr.c (revision 0) ++++ xattr/netware/xattr.c (revision 0) +@@ -0,0 +1,89 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_path(apr_xattr_t **new, ++ const char *pathname, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_file(apr_xattr_t **new, ++ apr_file_t *file, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_dir(apr_xattr_t **new, ++ apr_dir_t *dir, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_destroy(apr_xattr_t *xattr) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ *exists = 0; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} +Index: xattr/os2/xattr.c +=================================================================== +--- xattr/os2/xattr.c (revision 0) ++++ xattr/os2/xattr.c (revision 0) +@@ -0,0 +1,89 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_path(apr_xattr_t **new, ++ const char *pathname, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_file(apr_xattr_t **new, ++ apr_file_t *file, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_dir(apr_xattr_t **new, ++ apr_dir_t *dir, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_destroy(apr_xattr_t *xattr) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ *exists = 0; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} +Index: xattr/win32/xattr.c +=================================================================== +--- xattr/win32/xattr.c (revision 0) ++++ xattr/win32/xattr.c (revision 0) +@@ -0,0 +1,89 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_tables.h" ++#include "apr_file_xattr.h" ++ ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_path(apr_xattr_t **new, ++ const char *pathname, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_file(apr_xattr_t **new, ++ apr_file_t *file, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_open_dir(apr_xattr_t **new, ++ apr_dir_t *dir, ++ apr_pool_t *p) ++{ ++ *new = NULL; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_destroy(apr_xattr_t *xattr) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_set(const apr_xattr_t *xattr, ++ const char *name, ++ const void *value, ++ apr_size_t size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_get(const apr_xattr_t *xattr, ++ const char *name, ++ void **value, ++ apr_size_t *size, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_exists(const apr_xattr_t *xattr, ++ const char *name, ++ int *exists, ++ apr_uint32_t flags) ++{ ++ *exists = 0; ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_list(const apr_xattr_t *xattr, ++ apr_array_header_t **list, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} ++ ++APR_DECLARE(apr_status_t) apr_xattr_remove(const apr_xattr_t *xattr, ++ const char *name, ++ apr_uint32_t flags) ++{ ++ return APR_ENOTIMPL; ++} diff --git a/dev-libs/apr/files/apr-xattr-tests.patch b/dev-libs/apr/files/apr-xattr-tests.patch new file mode 100644 index 00000000..6e979c63 --- /dev/null +++ b/dev-libs/apr/files/apr-xattr-tests.patch @@ -0,0 +1,542 @@ +Index: test/Makefile.in +=================================================================== +--- test/Makefile.in (revision 606453) ++++ test/Makefile.in (working copy) +@@ -28,7 +28,7 @@ + testhash.lo testargs.lo testnames.lo testuser.lo testpath.lo \ + testenv.lo testprocmutex.lo testfnmatch.lo testatomic.lo testflock.lo \ + testsock.lo testglobalmutex.lo teststrnatcmp.lo testfilecopy.lo \ +- testtemp.lo testlfs.lo testcond.lo ++ testtemp.lo testlfs.lo testcond.lo testxattr.lo + + OTHER_PROGRAMS = \ + sendfile@EXEEXT@ \ +Index: test/testxattr.c +=================================================================== +--- test/testxattr.c (revision 0) ++++ test/testxattr.c (revision 0) +@@ -0,0 +1,499 @@ ++/* Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "apr_file_io.h" ++#include "apr_file_xattr.h" ++#include "apr_errno.h" ++#include "apr_general.h" ++#include "testutil.h" ++ ++#if APR_HAS_XATTR ++ ++#define DIRNAME "data" ++#define FNAME DIRNAME "/file_xattrfile.txt" ++#define DNAME DIRNAME "/dir_xattrdir" ++ ++#define TESTKEY1 "testkey1" ++#define TESTVAL1 "testval1" ++#define TESTKEY2 "testkey2" ++#define TESTVAL2 "testval2" ++ ++/* test solaris subfilename escaping */ ++#define TESTKEYSPECIAL1 "/testkey2" ++#define TESTKEYSPECIAL2 "%testkey2" ++ ++static void test_xattr_file_set(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_set_create(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), ++ APR_XATTR_CREATE); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), ++ APR_XATTR_CREATE); ++ ABTS_TRUE(tc, APR_STATUS_IS_EEXIST(rv)); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_set_replace(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), ++ APR_XATTR_REPLACE); ++ ABTS_TRUE(tc, APR_STATUS_IS_ENOATTR(rv)); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), ++ APR_XATTR_CREATE); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), ++ APR_XATTR_REPLACE); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_get(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ char *val = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_get(xattr, TESTKEY1, (void**)&val, &size, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_INT_EQUAL(tc, strlen(TESTVAL1), size); ++ ABTS_PTR_NOTNULL(tc, val); ++ ABTS_TRUE(tc, strncmp(TESTVAL1, val, strlen(TESTVAL1)) == 0); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_get_enoattr(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ char *val = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_get(xattr, TESTKEY1, (void**)&val, &size, 0); ++ ABTS_TRUE(tc, APR_STATUS_IS_ENOATTR(rv)); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_exists(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ int exists; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_exists(xattr, TESTKEY1, &exists, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_TRUE(tc, !exists); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_exists(xattr, TESTKEY1, &exists, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_TRUE(tc, exists); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_list(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_array_header_t *list = NULL; ++ int cmp1, cmp2; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ rv = apr_xattr_set(xattr, TESTKEY2, TESTVAL2, strlen(TESTVAL2), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_list(xattr, &list, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_PTR_NOTNULL(tc, list); ++ ABTS_INT_EQUAL(tc, 2, list->nelts); ++ cmp1 = (strcmp(APR_ARRAY_IDX(list, 0, char*), TESTKEY1) == 0) && ++ (strcmp(APR_ARRAY_IDX(list, 1, char*), TESTKEY2) == 0); ++ cmp2 = (strcmp(APR_ARRAY_IDX(list, 0, char*), TESTKEY2) == 0) && ++ (strcmp(APR_ARRAY_IDX(list, 1, char*), TESTKEY1) == 0); ++ ABTS_TRUE(tc, cmp1 || cmp2 ); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_remove(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ char *val = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_remove(xattr, TESTKEY1, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_get(xattr, TESTKEY1, (void**)&val, &size, 0); ++ ABTS_INT_NEQUAL(tc, APR_SUCCESS, rv); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_file_remove_enoattr(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ char *val = NULL; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_remove(xattr, TESTKEY1, 0); ++ ABTS_TRUE(tc, APR_STATUS_IS_ENOATTR(rv)); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++static void test_xattr_dir_set(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ ++ rv = apr_dir_make(DNAME, APR_OS_DEFAULT, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, DNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ apr_xattr_destroy(xattr); ++ apr_dir_remove(DNAME, p); ++} ++ ++static void test_xattr_dir_get(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_size_t size; ++ char *val = NULL; ++ ++ rv = apr_dir_make(DNAME, APR_OS_DEFAULT, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, DNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_get(xattr, TESTKEY1, (void**)&val, &size, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_INT_EQUAL(tc, strlen(TESTVAL1), size); ++ ABTS_PTR_NOTNULL(tc, val); ++ ABTS_TRUE(tc, strncmp(TESTVAL1, val, strlen(TESTVAL1)) == 0); ++ ++ apr_xattr_destroy(xattr); ++ apr_dir_remove(DNAME, p); ++} ++ ++static void test_xattr_dir_exists(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ int exists; ++ ++ rv = apr_dir_make(DNAME, APR_OS_DEFAULT, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, DNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_exists(xattr, TESTKEY1, &exists, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_TRUE(tc, !exists); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_exists(xattr, TESTKEY1, &exists, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_TRUE(tc, exists); ++ ++ apr_xattr_destroy(xattr); ++ apr_dir_remove(DNAME, p); ++} ++ ++static void test_xattr_dir_list(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_array_header_t *list = NULL; ++ int cmp1, cmp2; ++ ++ rv = apr_dir_make(DNAME, APR_OS_DEFAULT, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, DNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ rv = apr_xattr_set(xattr, TESTKEY2, TESTVAL2, strlen(TESTVAL2), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_list(xattr, &list, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_PTR_NOTNULL(tc, list); ++ ABTS_INT_EQUAL(tc, 2, list->nelts); ++ cmp1 = (strcmp(APR_ARRAY_IDX(list, 0, char*), TESTKEY1) == 0) && ++ (strcmp(APR_ARRAY_IDX(list, 1, char*), TESTKEY2) == 0); ++ cmp2 = (strcmp(APR_ARRAY_IDX(list, 0, char*), TESTKEY2) == 0) && ++ (strcmp(APR_ARRAY_IDX(list, 1, char*), TESTKEY1) == 0); ++ ABTS_TRUE(tc, cmp1 || cmp2 ); ++ ++ apr_xattr_destroy(xattr); ++ apr_dir_remove(DNAME, p); ++} ++ ++static void test_xattr_dir_remove(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_size_t size; ++ char *val = NULL; ++ ++ rv = apr_dir_make(DNAME, APR_OS_DEFAULT, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, DNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, TESTKEY1, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_remove(xattr, TESTKEY1, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_get(xattr, TESTKEY1, (void**)&val, &size, 0); ++ ABTS_INT_NEQUAL(tc, APR_SUCCESS, rv); ++ ++ apr_xattr_destroy(xattr); ++ apr_dir_remove(DNAME, p); ++} ++ ++static void test_xattr_open_path_enoent(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_TRUE(tc, APR_STATUS_IS_ENOENT(rv)); ++} ++ ++static void test_xattr_file_special_chars(abts_case *tc, void *data) ++{ ++ apr_status_t rv; ++ apr_xattr_t *xattr; ++ apr_file_t *filetest = NULL; ++ apr_size_t size; ++ const char *name = (const char*)data; ++ char *val = NULL; ++ apr_array_header_t *list = NULL; ++ int cmp1, cmp2; ++ ++ rv = apr_file_open(&filetest, FNAME, ++ APR_WRITE | APR_CREATE | APR_DELONCLOSE, ++ APR_UREAD | APR_UWRITE | APR_GREAD, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_open_path(&xattr, FNAME, p); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_set(xattr, name, TESTVAL1, strlen(TESTVAL1), 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ++ rv = apr_xattr_get(xattr, name, (void**)&val, &size, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_INT_EQUAL(tc, strlen(TESTVAL1), size); ++ ABTS_PTR_NOTNULL(tc, val); ++ ABTS_TRUE(tc, strncmp(TESTVAL1, val, strlen(TESTVAL1)) == 0); ++ ++ rv = apr_xattr_list(xattr, &list, 0); ++ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ++ ABTS_PTR_NOTNULL(tc, list); ++ ABTS_INT_EQUAL(tc, 1, list->nelts); ++ ABTS_TRUE(tc, strcmp(name, APR_ARRAY_IDX(list, 0, char*)) == 0); ++ ++ apr_xattr_destroy(xattr); ++ apr_file_close(filetest); ++} ++ ++#else ++ ++static void test_xattr_not_impl(abts_case *tc, void *data) ++{ ++ ABTS_NOT_IMPL(tc, "xattr not implemented on this platform"); ++} ++ ++#endif /* APR_HAS_XATTR */ ++ ++abts_suite *testxattr(abts_suite *suite) ++{ ++ suite = ADD_SUITE(suite) ++ ++#if !APR_HAS_XATTR ++ abts_run_test(suite, test_xattr_not_impl, NULL); ++#else ++ abts_run_test(suite, test_xattr_file_set, NULL); ++ abts_run_test(suite, test_xattr_file_set_create, NULL); ++ abts_run_test(suite, test_xattr_file_set_replace, NULL); ++ abts_run_test(suite, test_xattr_file_get, NULL); ++ abts_run_test(suite, test_xattr_file_get_enoattr, NULL); ++ abts_run_test(suite, test_xattr_file_exists, NULL); ++ abts_run_test(suite, test_xattr_file_list, NULL); ++ abts_run_test(suite, test_xattr_file_remove, NULL); ++ abts_run_test(suite, test_xattr_file_remove_enoattr, NULL); ++ abts_run_test(suite, test_xattr_dir_set, NULL); ++ abts_run_test(suite, test_xattr_dir_get, NULL); ++ abts_run_test(suite, test_xattr_dir_exists, NULL); ++ abts_run_test(suite, test_xattr_dir_list, NULL); ++ abts_run_test(suite, test_xattr_dir_remove, NULL); ++ abts_run_test(suite, test_xattr_open_path_enoent, NULL); ++ abts_run_test(suite, test_xattr_file_special_chars, TESTKEYSPECIAL1); ++ abts_run_test(suite, test_xattr_file_special_chars, TESTKEYSPECIAL2); ++#endif ++ ++ return suite; ++} +Index: test/abts_tests.h +=================================================================== +--- test/abts_tests.h (revision 606453) ++++ test/abts_tests.h (working copy) +@@ -66,7 +66,8 @@ + {testtime}, + {testud}, + {testuser}, +- {testvsn} ++ {testvsn}, ++ {testxattr} + }; + + #endif /* APR_TEST_INCLUDES */ +Index: test/testutil.h +=================================================================== +--- test/testutil.h (revision 606453) ++++ test/testutil.h (working copy) +@@ -102,5 +102,6 @@ + abts_suite *testud(abts_suite *suite); + abts_suite *testuser(abts_suite *suite); + abts_suite *testvsn(abts_suite *suite); ++abts_suite *testxattr(abts_suite *suite); + + #endif /* APR_TEST_INCLUDES */ diff --git a/dev-libs/apr/files/apxattr.c b/dev-libs/apr/files/apxattr.c new file mode 100644 index 00000000..5a1082b9 --- /dev/null +++ b/dev-libs/apr/files/apxattr.c @@ -0,0 +1,191 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "apr.h" +#include "apr_lib.h" +#include "apr_getopt.h" +#include "apr_strings.h" +#include "apr_file_io.h" +#include "apr_file_xattr.h" + +#if APR_HAVE_STDLIB_H +#include +#endif + +#if !APR_HAS_XATTR +#error The APR you are using does not have extended attribute support +#endif + +static apr_file_t *errfile; +static const char *shortname = "apxattr"; + +static void usage(void) +{ + apr_file_printf(errfile, + "%s -- Utility to view/modify extended attributes on files." APR_EOL_STR + APR_EOL_STR + "Usage: %s -l FILENAME" APR_EOL_STR + " %s -g attr FILENAME" APR_EOL_STR + " %s -s attr -v value FILENAME" APR_EOL_STR + " %s -r attr FILENAME" APR_EOL_STR + APR_EOL_STR + "Options:" APR_EOL_STR + " -l List attributes" APR_EOL_STR + " -g Get attribute" APR_EOL_STR + " -s Set attribute" APR_EOL_STR + " -r Remove attributes" APR_EOL_STR, + shortname, shortname, shortname, shortname, shortname); + exit(1); +} + +int main(int argc, const char * const argv[]) +{ + apr_file_t * outfile; + apr_file_t * infile; + apr_file_t * thefile; + apr_pool_t * pool; + apr_getopt_t * o; + apr_status_t rv; + const char * arg; + char opt; + int opt_list = 0; + char errmsg[120]; + const char * opt_get = NULL, * opt_set = NULL, * opt_value = NULL, + * opt_remove = NULL, * filename = NULL; + + if (apr_app_initialize(&argc, &argv, NULL) != APR_SUCCESS) { + return 1; + } + atexit(apr_terminate); + + if (argc) { + shortname = apr_filepath_name_get(argv[0]); + } + + if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { + return 1; + } + apr_file_open_stderr(&errfile, pool); + apr_getopt_init(&o, pool, argc, argv); + + while (1) { + rv = apr_getopt(o, "lg:s:r:v:", &opt, &arg); + if (rv == APR_EOF) { + break; + } + else if (rv != APR_SUCCESS) { + usage(); + } + else { + switch (opt) { + case 'l': + opt_list = 1; + break; + case 's': + if (opt_set || opt_get || opt_list || opt_remove) { + usage(); + } + opt_set = apr_pstrdup(pool, arg); + break; + case 'v': + if (opt_value || opt_get || opt_list || opt_remove) { + usage(); + } + opt_value = apr_pstrdup(pool, arg); + break; + case 'g': + if (opt_set || opt_get || opt_list || opt_remove) { + usage(); + } + opt_get = apr_pstrdup(pool, arg); + break; + case 'r': + if (opt_set || opt_get || opt_list || opt_remove) { + usage(); + } + opt_remove = apr_pstrdup(pool, arg); + break; + } + } + } + if ((opt_set && !opt_value) || o->ind != argc - 1) { + usage(); + } + filename = argv[o->ind]; + + apr_file_open_stdout(&outfile, pool); + apr_file_open_stdin(&infile, pool); + + rv = apr_file_open(&thefile, filename, APR_READ, 0, pool); + if(rv != APR_SUCCESS) { + apr_file_printf(errfile, "*** Couldn't open %s: %s\n", + filename, apr_strerror(rv, errmsg, sizeof errmsg)); + exit(1); + } + + if (opt_get) { + void *value; + char *value_str; + apr_size_t size; + rv = apr_file_xattr_get(thefile, opt_get, &value, &size, 0, pool); + if(rv != APR_SUCCESS) { + apr_file_printf(errfile, "*** Couldn't get attribute: %s\n", + apr_strerror(rv, errmsg, sizeof errmsg)); + exit(1); + } + else { + value_str = apr_pstrmemdup(pool, value, size); + apr_file_printf(outfile, "%s\n", value_str); + } + } + else if (opt_set) { + apr_size_t size; + rv = apr_file_xattr_set(thefile, opt_set, opt_value, + strlen(opt_value), 0, pool); + if(rv != APR_SUCCESS) { + apr_file_printf(errfile, "*** Couldn't set attribute: %s\n", + apr_strerror(rv, errmsg, sizeof errmsg)); + exit(1); + } + } + else if (opt_list) { + apr_array_header_t *list = NULL; + rv = apr_file_xattr_list(thefile, &list, 0, pool); + if(rv != APR_SUCCESS) { + apr_file_printf(errfile, "*** Couldn't list attributes: %s\n", + apr_strerror(rv, errmsg, sizeof errmsg)); + exit(1); + } + else { + int i; + for(i = 0; i < list->nelts; i++) { + apr_file_printf(outfile, "%s\n", APR_ARRAY_IDX(list, i, char*)); + } + } + } + else if (opt_remove) { + rv = apr_file_xattr_remove(thefile, opt_remove, 0, pool); + if(rv != APR_SUCCESS) { + apr_file_printf(errfile, "*** Couldn't remove attribute: %s\n", + apr_strerror(rv, errmsg, sizeof errmsg)); + exit(1); + } + } + + apr_file_close(thefile); + + return 0; +} diff --git a/dev-libs/apr/files/config.layout.patch b/dev-libs/apr/files/config.layout.patch new file mode 100644 index 00000000..66fa868c --- /dev/null +++ b/dev-libs/apr/files/config.layout.patch @@ -0,0 +1,25 @@ +--- config.layout.orig 2006-07-06 21:44:41.000000000 -0700 ++++ config.layout 2006-07-06 21:46:26.000000000 -0700 +@@ -229,3 +229,22 @@ + infodir: ${exec_prefix}/share/info + libsuffix: -${APR_MAJOR_VERSION} + ++ ++# Gentoo layout ++ ++ prefix: /usr ++ exec_prefix: ${prefix} ++ bindir: ${exec_prefix}/bin ++ sbindir: ${exec_prefix}/bin ++ libdir: ${exec_prefix}/lib ++ libexecdir: ${exec_prefix}/modules ++ mandir: ${prefix}/man ++ sysconfdir: ${prefix}/conf ++ datadir: /usr/share/apr-${APR_MAJOR_VERSION} ++ installbuilddir: ${datadir}/build-${APR_MAJOR_VERSION} ++ includedir: ${prefix}/include/apr-${APR_MAJOR_VERSION} ++ localstatedir: ${prefix} ++ libsuffix: -${APR_MAJOR_VERSION} ++ ++ ++ diff --git a/dev-libs/apr/metadata.xml b/dev-libs/apr/metadata.xml new file mode 100644 index 00000000..acee4d42 --- /dev/null +++ b/dev-libs/apr/metadata.xml @@ -0,0 +1,12 @@ + + + + + maintainer-needed@gentoo.org + + + Enable binary compatibility with older kernels + Use /dev/urandom instead of /dev/random + Enable UUID support + + diff --git a/net-misc/nxplayer/Manifest b/net-misc/nxplayer/Manifest new file mode 100644 index 00000000..5363720c --- /dev/null +++ b/net-misc/nxplayer/Manifest @@ -0,0 +1,3 @@ +DIST nxplayer-4.0.181-5.i686.tar.gz 11545210 SHA256 fa151b958ec59124709a70371bb8716e6cf85149d05e9f1e7782b250b345bfc5 SHA512 4d9f97a59f337ca91f25061581262ea3d3925613f57c74a96e8a6394fbeea97a7ae79182949bcc23c063d573423169cbddbc2cf2d5b832b8e927474a4d2d4152 WHIRLPOOL 347db9f83b18eebbdfb18a882f9c1c3420d020b70da86b67951cadf3036a666fc8ec7f7c031d0db51590d8cb8ac3cf5eebe3b5ef4e44f05cb085cbd31796dd32 +DIST nxplayer-4.0.181-5.x86_64.tar.gz 11933443 SHA256 39a7fa01688f35a464c197ac8ca32929a33921d6e66033c1cfc70e24539173f6 SHA512 a04572084fc188554058af0344d87a211a5b52cd4c72f3dd2dfef13e010eb4e06f6c7fe5d814d90e238272a56c01af1c5bbccbd859be305134827425a9f0508f WHIRLPOOL d58d89da58ee894c40395e6f5dffb3d290d9a602c357bbb359e001e21d6c92bebf64fd8111a1b03c7d3fd40b0ee22801de27587caca325eb87f0b24c337e80b0 +EBUILD nxplayer-4.0.181.5.ebuild 1489 SHA256 24a39bb6e5d4376cd12367770fdcb53a316547899780fcb97fea04929dbcc9ed SHA512 a18a13cb8a56428ec2d41a140a24c7190870253e30a353866085178c0cac4e1b7c03bf9416451cbd48b1dba5f6abd244b57c33d844477f9e5ef5ac1836cf44f8 WHIRLPOOL c7db419a940def5456d3ea7797a385fb5f4125b318cdb8e72f326b9947a94e4d1a9826330f663cba35834e1c75543eb3c21dc7ea33a1dcb80f8b15bc90be857d diff --git a/net-misc/nxplayer/nxplayer-4.0.181.5.ebuild b/net-misc/nxplayer/nxplayer-4.0.181.5.ebuild new file mode 100644 index 00000000..3e159441 --- /dev/null +++ b/net-misc/nxplayer/nxplayer-4.0.181.5.ebuild @@ -0,0 +1,50 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-misc/nxclient/nxclient-3.4.0.7-r1.ebuild,v 1.1 2010/12/22 09:47:27 voyageur Exp $ + +EAPI=2 +inherit eutils versionator + +MAJOR_PV="$(get_version_component_range 1-3)" +FULL_PV="${MAJOR_PV}-$(get_version_component_range 4)" +DESCRIPTION="New NX client interface" +HOMEPAGE="http://www.nomachine.com/" +SRC_URI="amd64? ( http://64.34.173.142/download/4.0/Linux/nxplayer-${FULL_PV}.x86_64.tar.gz ) + x86? ( http://64.34.173.142/download/4.0/Linux/nxplayer-${FULL_PV}.i686.tar.gz )" +LICENSE="nomachine" +SLOT="0" +KEYWORDS="-* ~amd64 ~x86" +IUSE="" +RESTRICT="strip" + +DEPEND="" +RDEPEND="x11-libs/libXft + x11-libs/libX11 + x11-libs/libXdmcp + x11-libs/libXau" + +S=${WORKDIR}/NX/etc/NX/player/packages/ + +src_install() +{ + local NXROOT=/opt/NX + +# dodir /etc/NX/localhost +# echo 'PlayerRoot = "'"${NXROOT}"'"' > ${D}/etc/NX/localhost/player.cfg + + dodir /opt + tar xozf nxclient.tar.gz -C "${D}"/opt + tar xozf nxplayer.tar.gz -C "${D}"/opt + + make_wrapper nxplayer ./nxplayer ${NXROOT}/bin ${NXROOT}/lib || die + # Add icons/desktop entries (missing in the tarball) + cd "${D}"/${NXROOT}/share/icons + for size in *; do + dodir /usr/share/icons/hicolor/${size}/apps + for icon in desktop icon; do + dosym /usr/NX/share/icons/${size}/nxplayer-${icon}.png \ + /usr/share/icons/hicolor/${size}/apps + done + done + make_desktop_entry "nxplayer" "NX Player" nxplayer-icon +}