diff options
author | Marinus Schraal <foser@gentoo.org> | 2003-12-13 18:29:35 +0000 |
---|---|---|
committer | Marinus Schraal <foser@gentoo.org> | 2003-12-13 18:29:35 +0000 |
commit | d1c0f9b8f4612693cc043b409dc2182133dc3c67 (patch) | |
tree | 428b7e0d6d84de17b52c296d3ee484afacf4f6c2 /app-admin | |
parent | mark stable on amd64 (diff) | |
download | gentoo-2-d1c0f9b8f4612693cc043b409dc2182133dc3c67.tar.gz gentoo-2-d1c0f9b8f4612693cc043b409dc2182133dc3c67.tar.bz2 gentoo-2-d1c0f9b8f4612693cc043b409dc2182133dc3c67.zip |
remove, moved to fam
Diffstat (limited to 'app-admin')
22 files changed, 0 insertions, 2799 deletions
diff --git a/app-admin/fam-oss/ChangeLog b/app-admin/fam-oss/ChangeLog deleted file mode 100644 index 88e9d3d6960e..000000000000 --- a/app-admin/fam-oss/ChangeLog +++ /dev/null @@ -1,126 +0,0 @@ -# ChangeLog for app-admin/fam-oss -# Copyright 2002-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/ChangeLog,v 1.33 2003/12/07 23:01:33 weeve Exp $ - - 07 Dec 2003; Jason Wever <weeve@gentoo.org> fam-oss-2.6.10-r1.ebuild: - Marked stable on sparc. - - 07 Dec 2003; <spider@gentoo.org> fam-oss-2.6.10-r1.ebuild: - added a notice about rc-update - - 14 Nov 2003; Aron Griffis <agriffis@gentoo.org> fam-oss-2.6.10-r1.ebuild: - Stable on ia64 - - 22 Oct 2003; Bartosch Pixa <darkspecter@gentoo.org> - fam-oss-2.6.10-r1.ebuild: - set ppc in keywords - - 16 Oct 2003; Aron Griffis <agriffis@gentoo.org> fam-oss-2.6.10-r1.ebuild: - Stable on alpha - -*fam-oss-2.6.10-r1 (30 Jul 2003) - - 15 Nov 2003; Guy Martin <gmsoft@gentoo.org> fam-oss-2.6.10-r1.ebuild : - Added hppa to KEYWORDS. - - 30 Jul 2003; Nick Hadaway <raker@gentoo.org> fam-oss-2.6.10-r1.ebuild, - files/fam-oss-2.6.10-nostatvfs.patch: - Added a patch to removed the hooks for statvfs which appears to be - b0rked on Linux. Even in the source are comments re: it's brokenness. - Thanks to Danny Milosavljevic on bug #24280 for doing research on - this. - - 25 Jun 2003; Bartosch Pixa <darkspecter@gentoo.org> fam-oss-2.6.10.ebuild: - set ppc in keywords - -*fam-oss-2.6.10 (09 Jun 2003) - - 01 Jul 2003; Guy Martin <gmsoft@gentoo.org> fam-oss-2.6.10.ebuild : - Added hppa to KEYWORDS. - - 09 Jun 2003; Nick Hadaway <raker@gentoo.org> fam-oss-2.6.10.ebuild, - files/digest-fam-oss-2.6.10, files/fam-oss-2.6.10-largefile.patch: - Version bump. No longer needs the gcc3 patch. - -*fam-oss-2.6.9-r3 (17 May 2003) - - 17 May 2003; Alastair Tse <liquidx@gentoo.org> fam-oss-2.6.9-r3.ebuild, - files/fam-oss-2.6.9-largefile.patch: - enabled largefile support (>2G) thanks to Erik Swanson (#20745) - -*fam-oss-2.6.9-r2 (22 Feb 2003) - - 22 Feb 2003; Martin Schlemmer <azarah@gentoo.org> fam-oss-2.6.9-r2.ebuild : - Update dnotify patch. Add cleanup patch from MDK. - -*fam-oss-2.6.9-r1 (27 Jan 2003) - - 09 Apr 2003; Todd Sunderlin <todd@gentoo.org> fam-oss-2.6.9-r1.ebuild: - Marked stable for sparc. - - 21 Feb 2003; Aron Griffis <agriffis@gentoo.org> fam-oss-2.6.9-r1.ebuild : - Mark stable on alpha - - 10 Feb 2003; foser <foser@gentoo.org> fam-oss-2.6.9-r1.ebuild : - Added patch in filesdir instead of direct download - Made it use epatch and changes ${PF} in gcc3 patch to ${P}, thnx Kerin - - 27 Jan 2003; foser <foser@gentoo.org> fam-oss-2.6.9-r1.ebuild : - Added compile time fix which hopefully fixes sigqueue overflow problems - - 06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords - -*fam-oss-2.8.9-r1 (02 Sep 2002) - - 03 Sep 2002; Spider <spider@gentoo.org> fam-oss-2.8.9-r1.ebuild : - removed this version - - 02 Sep 2002; Spider <spider@gentoo.org> fam-oss-2.8.9-r1.ebuild : - made the default configuration to make it only local. - -*fam-oss-2.6.9 (16 Aug 2002) - - 20 Oct 2002; Martin Schlemmer <azarah@gento.org> fam-oss-2.6.9.ebuild : - Fix the automake/autoconf stuff. - - 03 Sep 2002; Spider <spider@gentoo.org> - backported security hardening from the -r1 to this - - 16 Aug 2002; Daniel Ahlberg <aliz@gentoo.org> - Version bump. Ebuild submitted by Felix Kurth <felix@fkurth.de>. - -*fam-oss-2.6.7-r1 (25 Jul 2002) - - 25 Jul 2002; seemant Kulleen <seemant@gentoo.org> - Added LICENSE tag and elibtoolize'd. - -*fam-oss-2.6.7-r1 (28 Mar 2002) - - 15 Jul 2002; Owen Stampflee <owen@gentoo.org> : - Added KEYWORDS="x86 ppc". - - 2 Jun 2002: Preston A. Elder <prez@gentoo.org> - fam-oss-2.6.7-r1.ebuild, files/fam-oss-2.6.7-r1-aclocal.m4: - Added aclocal.m4, as the one that comes with the package - does not support AM_CONDITIONAL. - - 28 Mar 2002; Matthew Kennedy <mkennedy@gentoo.org> - fam-oss-2.6.7-r1.ebuild, files/digest-fam-oss-2.6.7-r1, - files/fam-oss-2.6.7-r1-gentoo.patch, ChangeLog : - Support for gcc3.1 -- thanks to lostlogic@lostlogicx.com and - rufiao@gmx.net of bug #3149. Tested on gcc3.1 and gcc2.95.3. - -*fam-oss-2.6.7 (16 Mar 2002) - - 24 Mar 2002; M.Schlemmer <azarah@gentoo.org> : - Update rc-script to properly put fam to the background. - -*fam-oss-2.6.4-r1 (1 Feb 2002) - - 1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog : - Added initial ChangeLog which should be updated whenever the package is - updated in any way. This changelog is targetted to users. This means that the - comments should well explained and written in clean English. The details about - writing correct changelogs are explained in the skel.ChangeLog file which you - can find in the root directory of the portage repository. - Author Joshua Pierre <joshua@swool.com diff --git a/app-admin/fam-oss/Manifest b/app-admin/fam-oss/Manifest deleted file mode 100644 index f3dbfb32b970..000000000000 --- a/app-admin/fam-oss/Manifest +++ /dev/null @@ -1,21 +0,0 @@ -MD5 f926952125066895ab0e3bdedc4db584 ChangeLog 4593 -MD5 9b89f79070eba6c109876a67255709b4 fam-oss-2.6.10.ebuild 1445 -MD5 082ef73afb3e0a6bd528d924108a71a6 fam-oss-2.6.9-r1.ebuild 1197 -MD5 bd1054a1f534a62471827e966f05de25 fam-oss-2.6.9-r2.ebuild 1383 -MD5 e3eec54470995e8c316f5c595e4d86a0 fam-oss-2.6.9-r3.ebuild 1487 -MD5 10509b222062c634f70b72a00a565556 fam-oss-2.6.9.ebuild 1161 -MD5 fb89402a4fc4b842f415657faea3573e fam-oss-2.6.10-r1.ebuild 1582 -MD5 0dba17f68005aa92b3903797dcc7c625 files/digest-fam-oss-2.6.10 62 -MD5 0dba17f68005aa92b3903797dcc7c625 files/digest-fam-oss-2.6.10-r1 62 -MD5 0bf8d935c21bfe80427c982dc3d41357 files/digest-fam-oss-2.6.9 118 -MD5 0bf8d935c21bfe80427c982dc3d41357 files/digest-fam-oss-2.6.9-r1 118 -MD5 cf2ec68df6ce23777000ce8b78c49df1 files/digest-fam-oss-2.6.9-r2 61 -MD5 cf2ec68df6ce23777000ce8b78c49df1 files/digest-fam-oss-2.6.9-r3 61 -MD5 3f8fee0b9f3239d2c92623af9a2c4844 files/dnotify.patch 28983 -MD5 3cbaa44382dadea506e93bf3a97e35cc files/dnotify.patch.new 29321 -MD5 179cf9d7c004f510debb9f40bb21c34e files/fam 504 -MD5 6d8076ab39e8b5432cf36468abe505b9 files/fam-2.6.7-cleanup.patch 1868 -MD5 28ba151456fe1d493cdbafe08c3c0e5e files/fam-oss-2.6.10-largefile.patch 525 -MD5 747869c90d342f2f0e375df87a0cd3a6 files/fam-oss-2.6.10-nostatvfs.patch 1813 -MD5 b03797e114f768833ab0291a940e9038 files/fam-oss-2.6.9-gcc3.patch 435 -MD5 28ba151456fe1d493cdbafe08c3c0e5e files/fam-oss-2.6.9-largefile.patch 525 diff --git a/app-admin/fam-oss/fam-oss-2.6.10-r1.ebuild b/app-admin/fam-oss/fam-oss-2.6.10-r1.ebuild deleted file mode 100644 index 7cd98ca493b6..000000000000 --- a/app-admin/fam-oss/fam-oss-2.6.10-r1.ebuild +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/fam-oss-2.6.10-r1.ebuild,v 1.10 2003/12/07 23:01:33 weeve Exp $ - -IUSE="" - -inherit libtool eutils - -MY_P="${P/-oss/}" -S="${WORKDIR}/${MY_P}" - -DESCRIPTION="FAM, the File Alteration Monitor" -SRC_URI="ftp://oss.sgi.com/projects/fam/download/${MY_P}.tar.gz" -HOMEPAGE="http://oss.sgi.com/projects/fam/" - -KEYWORDS="x86 ppc alpha sparc hppa amd64 ia64" -SLOT="0" -LICENSE="GPL-2 LGPL-2.1" - -DEPEND=">=dev-lang/perl-5.6.1" -RDEPEND=">=net-nds/portmap-5b-r6" - -src_unpack() { - unpack ${MY_P}.tar.gz - cd ${S} - - epatch ${FILESDIR}/dnotify.patch.new - epatch ${FILESDIR}/fam-2.6.7-cleanup.patch - epatch ${FILESDIR}/${P}-largefile.patch - - # The original code says that statvfs isn't supported - # on linux, YET it enables it. See: - # http://bugs.gentoo.org/show_bug.cgi?id=24280 - epatch ${FILESDIR}/${P}-nostatvfs.patch - - elibtoolize - - # This one is old, and automake will install new one - rm -rf ${S}/missing - - export WANT_AUTOCONF_2_5=1 - export WANT_AUTOMAKE_1_5=1 - aclocal - autoconf - automake --add-missing -} - -src_install() { - sed -i -e s:"local_only = false":"local_only = true":g fam/fam.conf - - make DESTDIR=${D} install || die - - exeinto /etc/init.d - doexe ${FILESDIR}/fam - - dodoc AUTHORS COPYING ChangeLog INSTALL NEWS TODO README* -} - -pkg_postinst () { - einfo "For desktop use, do 'rc-update add fam default' " - einfo "this will start fam at boot, and thereby enable konqueror and " - einfo "nautilus to take advantage of it." -} diff --git a/app-admin/fam-oss/fam-oss-2.6.10.ebuild b/app-admin/fam-oss/fam-oss-2.6.10.ebuild deleted file mode 100644 index c8595558cf90..000000000000 --- a/app-admin/fam-oss/fam-oss-2.6.10.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/fam-oss-2.6.10.ebuild,v 1.6 2003/10/27 10:22:45 aliz Exp $ - -inherit libtool eutils - -MY_P="${P/-oss/}" -S="${WORKDIR}/${MY_P}" -DESCRIPTION="FAM, the File Alteration Monitor" -SRC_URI="ftp://oss.sgi.com/projects/fam/download/${MY_P}.tar.gz" -HOMEPAGE="http://oss.sgi.com/projects/fam/" - -KEYWORDS="x86 ppc ~alpha ~sparc hppa ~amd64" -SLOT="0" -LICENSE="GPL-2 LGPL-2.1" - -DEPEND=">=dev-lang/perl-5.6.1" -RDEPEND=">=net-nds/portmap-5b-r6" - -src_unpack() { - unpack ${MY_P}.tar.gz - - cd ${S} - epatch ${FILESDIR}/dnotify.patch.new - epatch ${FILESDIR}/fam-2.6.7-cleanup.patch - epatch ${FILESDIR}/${P}-largefile.patch - -# Now in dnotify patch. Should fix the sigqueue overflow problems -# cd ${S}/fam -# mv Makefile.am Makefile.am.old -# sed -e "s:fam_LDADD =:fam_LDADD = -lrt -lpthread:" Makefile.am.old > Makefile.am - - elibtoolize - - # This one is old, and automake will install new one - rm -rf ${S}/missing - - export WANT_AUTOCONF_2_5=1 - export WANT_AUTOMAKE_1_5=1 - aclocal - autoconf -# autoheader - automake --add-missing -} - -src_install() { - cp fam/fam.conf fam/fam.conf.old - sed s:"local_only = false":"local_only = true":g fam/fam.conf.old >fam/fam.conf - - make DESTDIR=${D} install || die - - exeinto /etc/init.d - doexe ${FILESDIR}/fam - - dodoc AUTHORS COPYING ChangeLog INSTALL NEWS TODO README* -} diff --git a/app-admin/fam-oss/fam-oss-2.6.9-r1.ebuild b/app-admin/fam-oss/fam-oss-2.6.9-r1.ebuild deleted file mode 100644 index f8a3e6e7af1c..000000000000 --- a/app-admin/fam-oss/fam-oss-2.6.9-r1.ebuild +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/fam-oss-2.6.9-r1.ebuild,v 1.15 2003/09/23 20:20:55 aliz Exp $ - -inherit libtool eutils - -MY_P="${P/-oss/}" -S="${WORKDIR}/${MY_P}" -DESCRIPTION="FAM, the File Alteration Monitor" -SRC_URI="ftp://oss.sgi.com/projects/fam/download/${MY_P}.tar.gz" -HOMEPAGE="http://oss.sgi.com/projects/fam/" - -KEYWORDS="x86 ppc alpha sparc" -SLOT="0" -LICENSE="GPL-2 LGPL-2.1" - -DEPEND=">=dev-lang/perl-5.6.1" -RDEPEND=">=net-nds/portmap-5b-r6" - -src_unpack() { - unpack ${MY_P}.tar.gz - - cd ${S} - epatch ${FILESDIR}/dnotify.patch || die - epatch ${FILESDIR}/${P}-gcc3.patch || die - - # should fix the sigqueue overflow problems - cd ${S}/fam - sed -i -e "s:fam_LDADD =:fam_LDADD = -lrt -lpthread:" Makefile.am - - elibtoolize - - export WANT_AUTOCONF_2_5=1 - export WANT_AUTOMAKE_1_5=1 - automake --add-missing - aclocal - autoconf - autoheader -} - -src_install() { - sed -i s:"local_only = false":"local_only = true":g fam/fam.conf - - make DESTDIR=${D} install || die - - exeinto /etc/init.d - doexe ${FILESDIR}/fam - - dodoc AUTHORS COPYING ChangeLog INSTALL NEWS TODO README* -} diff --git a/app-admin/fam-oss/fam-oss-2.6.9-r2.ebuild b/app-admin/fam-oss/fam-oss-2.6.9-r2.ebuild deleted file mode 100644 index df1caf1c3410..000000000000 --- a/app-admin/fam-oss/fam-oss-2.6.9-r2.ebuild +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/fam-oss-2.6.9-r2.ebuild,v 1.7 2003/09/23 20:20:55 aliz Exp $ - -inherit libtool eutils - -MY_P="${P/-oss/}" -S="${WORKDIR}/${MY_P}" -DESCRIPTION="FAM, the File Alteration Monitor" -SRC_URI="ftp://oss.sgi.com/projects/fam/download/${MY_P}.tar.gz" -HOMEPAGE="http://oss.sgi.com/projects/fam/" - -KEYWORDS="x86 ppc ~alpha ~sparc" -SLOT="0" -LICENSE="GPL-2 LGPL-2.1" - -DEPEND=">=dev-lang/perl-5.6.1" -RDEPEND=">=net-nds/portmap-5b-r6" - -src_unpack() { - unpack ${MY_P}.tar.gz - - cd ${S} - epatch ${FILESDIR}/dnotify.patch.new - epatch ${FILESDIR}/fam-2.6.7-cleanup.patch - epatch ${FILESDIR}/${P}-gcc3.patch - -# Now in dnotify patch. - # should fix the sigqueue overflow problems -# cd ${S}/fam -# mv Makefile.am Makefile.am.old -# sed -e "s:fam_LDADD =:fam_LDADD = -lrt -lpthread:" Makefile.am.old > Makefile.am - - elibtoolize - - # This one is old, and automake will install new one - rm -rf ${S}/missing - - export WANT_AUTOCONF_2_5=1 - export WANT_AUTOMAKE_1_5=1 - aclocal - autoconf -# autoheader - automake --add-missing -} - -src_install() { - sed -i s:"local_only = false":"local_only = true":g fam/fam.conf - - make DESTDIR=${D} install || die - - exeinto /etc/init.d - doexe ${FILESDIR}/fam - - dodoc AUTHORS COPYING ChangeLog INSTALL NEWS TODO README* -} diff --git a/app-admin/fam-oss/fam-oss-2.6.9-r3.ebuild b/app-admin/fam-oss/fam-oss-2.6.9-r3.ebuild deleted file mode 100644 index 2a5f377c38c0..000000000000 --- a/app-admin/fam-oss/fam-oss-2.6.9-r3.ebuild +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/fam-oss-2.6.9-r3.ebuild,v 1.7 2003/10/03 15:00:48 agriffis Exp $ - -inherit libtool eutils - -MY_P="${P/-oss/}" -S="${WORKDIR}/${MY_P}" -DESCRIPTION="FAM, the File Alteration Monitor" -SRC_URI="ftp://oss.sgi.com/projects/fam/download/${MY_P}.tar.gz" -HOMEPAGE="http://oss.sgi.com/projects/fam/" - -KEYWORDS="x86 ppc alpha ~sparc amd64 ia64" -SLOT="0" -LICENSE="GPL-2 LGPL-2.1" - -DEPEND=">=dev-lang/perl-5.6.1" -RDEPEND=">=net-nds/portmap-5b-r6" - -src_unpack() { - unpack ${MY_P}.tar.gz - - cd ${S} - epatch ${FILESDIR}/dnotify.patch.new - epatch ${FILESDIR}/fam-2.6.7-cleanup.patch - epatch ${FILESDIR}/${P}-gcc3.patch - epatch ${FILESDIR}/${P}-largefile.patch - -# Now in dnotify patch. - # should fix the sigqueue overflow problems -# cd ${S}/fam -# mv Makefile.am Makefile.am.old -# sed -e "s:fam_LDADD =:fam_LDADD = -lrt -lpthread:" Makefile.am.old > Makefile.am - - elibtoolize - - # This one is old, and automake will install new one - rm -rf ${S}/missing - - export WANT_AUTOCONF_2_5=1 - export WANT_AUTOMAKE_1_5=1 - aclocal - autoconf -# autoheader - automake --add-missing -} - -src_install() { - cp fam/fam.conf fam/fam.conf.old - sed s:"local_only = false":"local_only = true":g fam/fam.conf.old >fam/fam.conf - - make DESTDIR=${D} install || die - - exeinto /etc/init.d - doexe ${FILESDIR}/fam - - dodoc AUTHORS COPYING ChangeLog INSTALL NEWS TODO README* -} diff --git a/app-admin/fam-oss/fam-oss-2.6.9.ebuild b/app-admin/fam-oss/fam-oss-2.6.9.ebuild deleted file mode 100644 index 1d6da2ac88be..000000000000 --- a/app-admin/fam-oss/fam-oss-2.6.9.ebuild +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/fam-oss-2.6.9.ebuild,v 1.16 2003/09/20 19:56:29 aliz Exp $ - -inherit libtool - -MY_P="${P/-oss/}" -S="${WORKDIR}/${MY_P}" -DESCRIPTION="FAM, the File Alteration Monitor" -SRC_URI="ftp://oss.sgi.com/projects/fam/download/${MY_P}.tar.gz - ftp://oss.sgi.com/projects/fam/download/contrib/dnotify.patch" -HOMEPAGE="http://oss.sgi.com/projects/fam/" - -KEYWORDS="x86 ppc alpha sparc " -SLOT="0" -LICENSE="GPL-2 LGPL-2.1" - -DEPEND=">=dev-lang/perl-5.6.1" -RDEPEND=">=net-nds/portmap-5b-r6" - -src_unpack() { - unpack ${MY_P}.tar.gz - - cd ${S} - epatch ${DISTDIR}/dnotify.patch - epatch ${FILESDIR}/${PF}-gcc3.patch - - elibtoolize - - export WANT_AUTOCONF_2_5=1 - export WANT_AUTOMAKE_1_5=1 - automake --add-missing - aclocal - autoconf - autoheader -} - -src_install() { - cp fam/fam.conf fam/fam.conf.old - sed s:"local_only = false":"local_only = true":g fam/fam.conf.old >fam/fam.conf - - make DESTDIR=${D} install || die - - exeinto /etc/init.d - doexe ${FILESDIR}/fam - - dodoc AUTHORS COPYING ChangeLog INSTALL NEWS TODO README* -} - diff --git a/app-admin/fam-oss/files/digest-fam-oss-2.6.10 b/app-admin/fam-oss/files/digest-fam-oss-2.6.10 deleted file mode 100644 index ef684e7ab983..000000000000 --- a/app-admin/fam-oss/files/digest-fam-oss-2.6.10 +++ /dev/null @@ -1 +0,0 @@ -MD5 1c5a2ea659680bdd1e238d7828a857a7 fam-2.6.10.tar.gz 321189 diff --git a/app-admin/fam-oss/files/digest-fam-oss-2.6.10-r1 b/app-admin/fam-oss/files/digest-fam-oss-2.6.10-r1 deleted file mode 100644 index ef684e7ab983..000000000000 --- a/app-admin/fam-oss/files/digest-fam-oss-2.6.10-r1 +++ /dev/null @@ -1 +0,0 @@ -MD5 1c5a2ea659680bdd1e238d7828a857a7 fam-2.6.10.tar.gz 321189 diff --git a/app-admin/fam-oss/files/digest-fam-oss-2.6.9 b/app-admin/fam-oss/files/digest-fam-oss-2.6.9 deleted file mode 100644 index 242f0bac17c8..000000000000 --- a/app-admin/fam-oss/files/digest-fam-oss-2.6.9 +++ /dev/null @@ -1,2 +0,0 @@ -MD5 8b647472152940b9789e649fa2734443 fam-2.6.9.tar.gz 282627 -MD5 ea0b75543516dcfb3dbf48576ad83942 dnotify.patch 28962 diff --git a/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r1 b/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r1 deleted file mode 100644 index 242f0bac17c8..000000000000 --- a/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r1 +++ /dev/null @@ -1,2 +0,0 @@ -MD5 8b647472152940b9789e649fa2734443 fam-2.6.9.tar.gz 282627 -MD5 ea0b75543516dcfb3dbf48576ad83942 dnotify.patch 28962 diff --git a/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r2 b/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r2 deleted file mode 100644 index 617fec36820d..000000000000 --- a/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r2 +++ /dev/null @@ -1 +0,0 @@ -MD5 8b647472152940b9789e649fa2734443 fam-2.6.9.tar.gz 282627 diff --git a/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r3 b/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r3 deleted file mode 100644 index 617fec36820d..000000000000 --- a/app-admin/fam-oss/files/digest-fam-oss-2.6.9-r3 +++ /dev/null @@ -1 +0,0 @@ -MD5 8b647472152940b9789e649fa2734443 fam-2.6.9.tar.gz 282627 diff --git a/app-admin/fam-oss/files/dnotify.patch b/app-admin/fam-oss/files/dnotify.patch deleted file mode 100644 index b7b1ae947993..000000000000 --- a/app-admin/fam-oss/files/dnotify.patch +++ /dev/null @@ -1,1075 +0,0 @@ ---- fam-2.6.7/acconfig.h.dnotify Tue Dec 18 02:03:36 2001 -+++ fam-2.6.7/acconfig.h Sun Apr 7 18:57:41 2002 -@@ -17,6 +17,9 @@ - /* Define if the system has imon and IMONIOC_ ioctl flags. */ - #undef HAVE_IMON - -+/* Define if the system has the dnotify fcntl and it's gonna be used. */ -+#undef USE_DNOTIFY -+ - /* Define if the system has the struct revokdi and the IMONIOC_REVOKDI - ** ioctl flag. (IRIX 5.3 doesn't.) - */ ---- fam-2.6.7/configure.in.dnotify Thu Dec 20 23:18:48 2001 -+++ fam-2.6.7/configure.in Sun Apr 7 18:57:41 2002 -@@ -96,6 +99,24 @@ - dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h syslog.h unistd.h) - - dnl -+dnl Test for the linux dnotify fcntl -+dnl -+AC_MSG_CHECKING([for dnotify fcntl support]) -+fam_save_cppflags="$CPPFLAGS" -+CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" -+AC_TRY_COMPILE([ -+#define _GNU_SOURCE -+#include <fcntl.h> -+#include <unistd.h> -+], -+[ int fd = open("/tmp", O_RDONLY); -+ fcntl (fd, F_NOTIFY, (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB)|DN_MULTISHOT); -+], have_dnotify=yes, have_dnotify=no) -+use_dnotify=false -+CPPFLAGS="$pango_save_cppflags" -+AC_MSG_RESULT($have_dnotify) -+ -+dnl - dnl See if imon is available; if so, is it IRIX or Linux? - dnl - if test `uname` = 'IRIX' || test `uname` = 'IRIX64'; then -@@ -118,11 +139,17 @@ - if test "$have_imon" != "yes"; then - have_imon=no - AC_DEFINE(HAVE_IMON, 0) -+ if test "$have_dnotify" = "yes"; then -+ AC_DEFINE(USE_DNOTIFY) -+ use_dnotify=true -+ fi - IMON_FUNCS=IMonNone - fi -+AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify) - AC_SUBST(IMON_FUNCS) - echo "Using imon support module $IMON_FUNCS" - -+ - AC_CHECK_HEADER(sys/statvfs.h, [AC_DEFINE(HAVE_STATVFS, 1) have_statvfs="yes"], [AC_DEFINE(HAVE_STATVFS, 0) have_statvfs="no"]) - AC_CHECK_HEADER(sys/syssgi.h, AC_DEFINE(HAVE_SYSSGI, 1), AC_DEFINE(HAVE_SYSSGI, 0)) - AC_CHECK_HEADER(sys/fs/nfs_clnt.h, AC_DEFINE(HAVE_SYS_FS_NFS_CLNT_H, 1), AC_DEFINE(HAVE_SYS_FS_NFS_CLNT_H, 0)) -@@ -572,7 +599,7 @@ - dnl - dnl fam is a good deal less interesting without imon. - dnl --if test "$have_imon" != 'yes'; then -+if test "$have_imon" != 'yes' -a "$have_dnotify" != 'yes'; then - cat << EOF - - ****************************************************************** ---- fam-2.6.7/fam/DNotify.c++.dnotify Sun Apr 7 18:57:41 2002 -+++ fam-2.6.7/fam/DNotify.c++ Sun Apr 7 18:57:50 2002 -@@ -0,0 +1,583 @@ -+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. -+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. -+// -+// This program is free software; you can redistribute it and/or modify it -+// under the terms of version 2 of the GNU General Public License as -+// published by the Free Software Foundation. -+// -+// This program is distributed in the hope that it would be useful, but -+// WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any -+// license provided herein, whether implied or otherwise, is limited to -+// this program in accordance with the express provisions of the GNU -+// General Public License. Patent licenses, if any, provided herein do not -+// apply to combinations of this program with other product or programs, or -+// any other product whatsoever. This program is distributed without any -+// warranty that the program is delivered free of the rightful claim of any -+// third person by way of infringement or the like. See the GNU General -+// Public License for more details. -+// -+// You should have received a copy of the GNU General Public License along -+// with this program; if not, write the Free Software Foundation, Inc., 59 -+// Temple Place - Suite 330, Boston MA 02111-1307, USA. -+ -+#define _GNU_SOURCE -+#include <fcntl.h> -+ -+#include <string.h> -+#include <signal.h> -+#include <stdio.h> -+#include <unistd.h> -+#include <sys/types.h> -+#include <sys/stat.h> -+#include <libgen.h> -+ -+#include "DNotify.h" -+ -+#include "Interest.h" -+#include "Log.h" -+#include "Scheduler.h" -+#include "alloc.h" -+ -+ -+int DNotify::pipe_write_fd = -2; -+int DNotify::pipe_read_fd = -2; -+volatile sig_atomic_t DNotify::queue_overflowed = 0; -+volatile sig_atomic_t DNotify::queue_changed = 0; -+int DNotify::change_queue[QUEUESIZE]; -+volatile int DNotify::queue_head = 0; // Only modified by read handler -+volatile int DNotify::queue_tail = 0; // Only modified by signal handler -+DNotify::EventHandler DNotify::ehandler; -+ -+DNotify::DirWatch *DNotify::dir_hash[DIR_HASHSIZE]; -+DNotify::FileWatch *DNotify::file_hash[FILE_HASHSIZE]; -+ -+struct DNotify::FileWatch -+{ -+ DirWatch *dir_watch; -+ dev_t file_dev; -+ ino_t file_ino; -+ FileWatch *next; // The DirWatch.watches list -+ FileWatch *hash_link; -+}; -+ -+struct DNotify::DirWatch -+{ -+ int fd; -+ dev_t dir_dev; -+ ino_t dir_ino; -+ -+ DirWatch *hash_link; -+ FileWatch *watches; -+}; -+ -+struct DNotify::ChangeEventData -+{ -+ dev_t file_dev; -+ ino_t file_ino; -+}; -+ -+DNotify::DNotify(EventHandler h) -+{ -+ assert(ehandler == NULL); -+ ehandler = h; -+} -+ -+DNotify::~DNotify() -+{ -+ if (pipe_read_fd >= 0) -+ { -+ // Tell the scheduler. -+ -+ (void) Scheduler::remove_read_handler(pipe_read_fd); -+ -+ // Close the pipe. -+ -+ if (close(pipe_read_fd) < 0) -+ Log::perror("can't pipe read end"); -+ else -+ Log::debug("closed pipe read end"); -+ -+ if (close(pipe_write_fd) < 0) -+ Log::perror("can't pipe write end"); -+ else -+ Log::debug("closed pipe write end"); -+ pipe_read_fd = -1; -+ } -+ ehandler = NULL; -+} -+ -+void -+DNotify::overflow_signal_handler(int sig, siginfo_t *si, void *data) -+{ -+ char c = 'x'; -+ -+ { -+ char *str = "*************** overflow sigqueue ***********************\n"; -+ write (STDERR_FILENO, str, strlen(str)); -+ } -+ -+ if (!queue_overflowed) -+ { -+ queue_overflowed = 1; -+ // Trigger the read handler -+ write(pipe_write_fd, &c, 1); -+ } -+} -+ -+void -+DNotify::signal_handler(int sig, siginfo_t *si, void *data) -+{ -+ int left; -+ char c = 'x'; -+ -+ if (queue_head <= queue_tail) -+ left = (QUEUESIZE + queue_head) - queue_tail; -+ else -+ left = queue_head - queue_tail; -+ -+ // Must leave at least one item unused to see difference -+ // Betweeen empty and full -+ if (left <= 1) -+ { -+ queue_overflowed = 1; -+ { -+ char *str = "*************** overflow famqueue ****************\n"; -+ write (STDERR_FILENO, str, strlen(str)); -+ } -+ } -+ else -+ { -+ change_queue[queue_tail] = si->si_fd; -+ queue_tail = (queue_tail + 1) % QUEUESIZE; -+ } -+ -+ if (!queue_changed) -+ { -+ queue_changed = 1; -+ // Trigger the read handler -+ write(pipe_write_fd, &c, 1); -+ } -+} -+ -+bool -+DNotify::is_active() -+{ -+ if (pipe_read_fd == -2) -+ { -+ int filedes[2]; -+ int res; -+ -+ res = pipe (filedes); -+ if (res >= 0) -+ { Log::debug("opened pipe"); -+ pipe_read_fd = filedes[0]; -+ pipe_write_fd = filedes[1]; -+ -+ // Setup signal handler: -+ struct sigaction act; -+ -+ act.sa_sigaction = signal_handler; -+ sigemptyset(&act.sa_mask); -+ act.sa_flags = SA_SIGINFO; -+ sigaction(SIGRTMIN, &act, NULL); -+ -+ // When the RT queue overflows we get a SIGIO -+ act.sa_sigaction = overflow_signal_handler; -+ sigemptyset(&act.sa_mask); -+ sigaction(SIGIO, &act, NULL); -+ -+ (void) Scheduler::install_read_handler(pipe_read_fd, read_handler, NULL); -+ } -+ } -+ return pipe_read_fd >= 0; -+} -+ -+DNotify::DirWatch * -+DNotify::lookup_dirwatch (int fd) -+{ -+ DirWatch **p; -+ DirWatch *w; -+ -+ p = dir_hashchain (fd); -+ -+ while (*p) -+ { -+ w = *p; -+ -+ if (w->fd == fd) -+ return w; -+ -+ p = &w->hash_link; -+ } -+ -+ return *p; -+} -+ -+// This colud be made faster by using another hash table. -+// But it's not that bad, since it is only used by express/revoke -+DNotify::DirWatch * -+DNotify::lookup_dirwatch (dev_t dir_dev, ino_t dir_ino) -+{ -+ DirWatch *p; -+ int i; -+ -+ for (i=0;i<DIR_HASHSIZE;i++) -+ { -+ p = dir_hash[i]; -+ -+ while (p) -+ { -+ if (p->dir_dev == dir_dev && p->dir_ino == dir_ino) -+ return p; -+ -+ p = p->hash_link; -+ } -+ } -+ -+ return NULL; -+} -+ -+DNotify::FileWatch * -+DNotify::lookup_filewatch (dev_t dev, ino_t ino) -+{ -+ FileWatch **p; -+ FileWatch *w; -+ -+ p = file_hashchain (dev, ino); -+ -+ while (*p) -+ { -+ w = *p; -+ -+ if (w->file_dev == dev && w->file_ino == ino) -+ return w; -+ -+ p = &w->hash_link; -+ } -+ -+ return *p; -+} -+ -+// Make sure w is not already in the hash table before calling -+// this function. -+void -+DNotify::hash_dirwatch(DirWatch *w) -+{ -+ DirWatch **p; -+ p = dir_hashchain (w->fd); -+ w->hash_link = *p; -+ *p = w; -+} -+ -+// Make sure w is not already in the hash table before calling -+// this function. -+void -+DNotify::hash_filewatch(FileWatch *w) -+{ -+ FileWatch **p; -+ p = file_hashchain (w->file_dev, w->file_ino); -+ w->hash_link = *p; -+ *p = w; -+} -+ -+void -+DNotify::unhash_dirwatch(DirWatch *w) -+{ -+ DirWatch **p; -+ -+ p = dir_hashchain (w->fd); -+ -+ while (*p) -+ { -+ if (*p == w) -+ { -+ *p = w->hash_link; -+ break; -+ } -+ p = &(*p)->hash_link; -+ } -+ w->hash_link = NULL; -+} -+ -+void -+DNotify::unhash_filewatch(FileWatch *w) -+{ -+ FileWatch **p; -+ -+ p = file_hashchain (w->file_dev, w->file_ino); -+ -+ while (*p) -+ { -+ if (*p == w) -+ { -+ *p = w->hash_link; -+ break; -+ } -+ p = &(*p)->hash_link; -+ } -+ w->hash_link = NULL; -+} -+ -+DNotify::Status -+DNotify::watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino) -+{ -+ struct stat stat; -+ dev_t dir_dev; -+ ino_t dir_ino; -+ DirWatch *dwatch; -+ FileWatch **p; -+ FileWatch *fw; -+ -+ if (lstat (notify_dir, &stat) == -1) -+ return BAD; -+ -+ dwatch = lookup_dirwatch(stat.st_dev, stat.st_ino); -+ if (!dwatch) -+ { -+ Log::debug ("New DirWatch for %s (%x %x)\n", -+ notify_dir, (int)stat.st_dev, (int)stat.st_ino); -+ dwatch = new DirWatch; -+ dwatch->watches = NULL; -+ dwatch->hash_link = NULL; -+ dwatch->dir_dev = stat.st_dev; -+ dwatch->dir_ino = stat.st_ino; -+ -+ dwatch->fd = open(notify_dir, O_RDONLY); -+ fcntl (dwatch->fd, F_SETSIG, SIGRTMIN); -+ fcntl (dwatch->fd, F_NOTIFY, -+ (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) | DN_MULTISHOT); -+ hash_dirwatch (dwatch); -+ } -+ -+ for (p=&dwatch->watches; *p; p=&(*p)->next) -+ { -+ fw = *p; -+ if (fw->file_dev == file_dev && fw->file_ino == file_ino) -+ return OK; -+ } -+ -+ // No old FileWatch, need to add one: -+ Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino); -+ *p = new FileWatch; -+ fw = *p; -+ fw->next = NULL; -+ fw->file_dev = file_dev; -+ fw->file_ino = file_ino; -+ fw->dir_watch = dwatch; -+ hash_filewatch(fw); -+ return OK; -+} -+ -+char * -+dirname_dup (const char *name) -+{ -+ char *copy = strdup(name); -+ char *res = dirname(copy); -+ res = strdup(res); -+ free (copy); -+ return res; -+} -+ -+DNotify::Status -+DNotify::express(const char *name, struct stat *status) -+{ -+ struct stat stat; -+ char *notify_dir; -+ int res; -+ Status s; -+ dev_t dev; -+ ino_t ino; -+ -+ Log::debug("express() name: %s\n", name); -+ -+ if (!is_active()) -+ return BAD; -+ -+ if (::lstat (name, &stat) == -1) -+ return BAD; -+ -+ dev = stat.st_dev; -+ ino = stat.st_ino; -+ -+ if ((stat.st_mode & S_IFMT) != S_IFDIR) -+ notify_dir = dirname_dup (name); -+ else -+ notify_dir = (char *)name; -+ -+ s = watch_dir (notify_dir, dev, ino); -+ if (notify_dir != name) -+ free (notify_dir); -+ if (s) -+ return s; -+ -+ // Check for a race condition; if someone removed or changed the -+ // file at the same time that we are expressing interest in it, -+ // revoke the interest so we don't get notifications about changes -+ // to a recycled inode that we don't otherwise care about. -+ // -+ struct stat st; -+ if (status == NULL) { -+ status = &st; -+ } -+ if (::lstat(name, status) == -1) { -+ Log::perror("stat on \"%s\" failed", name); -+ revoke(name, stat.st_dev, stat.st_ino); -+ return BAD; -+ } -+ if (status->st_dev != stat.st_dev -+ || status->st_ino != stat.st_ino) { -+ Log::error("File \"%s\" changed between express and stat", -+ name); -+ revoke(name, stat.st_dev, stat.st_ino); -+ return BAD; -+ } -+ -+ Log::debug("told dnotify to monitor \"%s\" = dev %d/%d, ino %d", name, -+ major(status->st_dev), minor(status->st_dev), -+ status->st_ino); -+ return OK; -+} -+ -+DNotify::Status -+DNotify::revoke(const char *name, dev_t dev, ino_t ino) -+{ -+ FileWatch *fwatch; -+ DirWatch *dwatch; -+ -+ Log::debug("revoke() name: %s, dev: %x, ino: %x\n", name, dev, ino); -+ -+ if (!is_active()) -+ return BAD; -+ -+ // Lookup FileWatch by dev:ino, and its DirWatch. -+ fwatch = lookup_filewatch (dev, ino); -+ if (fwatch == NULL) -+ return BAD; -+ -+ dwatch = fwatch->dir_watch; -+ -+ // delete FileWatch, if last FileWatch: close fd, delete DirWatch -+ Log::debug ("Destroying FileWatch for (%x %x)\n", -+ (int)fwatch->file_dev, (int)fwatch->file_ino); -+ FileWatch **p; -+ for (p=&dwatch->watches; *p; p=&(*p)->next) -+ { -+ if (*p == fwatch) -+ { -+ *p = (*p)->next; -+ break; -+ } -+ } -+ unhash_filewatch(fwatch); -+ delete fwatch; -+ if (dwatch->watches == NULL) -+ { -+ Log::debug ("Destroying DirWatch for (%x %x)\n", -+ (int)dwatch->dir_dev, (int)dwatch->dir_ino); -+ close(dwatch->fd); -+ unhash_dirwatch(dwatch); -+ delete dwatch; -+ } -+ -+ return OK; -+} -+ -+ -+void -+DNotify::all_watches_changed(void) -+{ -+ int i; -+ FileWatch *fw; -+ -+ for (i=0; i<FILE_HASHSIZE; i++) -+ { -+ fw = file_hash[i]; -+ while (fw) -+ { -+ (*ehandler)(fw->file_dev, fw->file_ino, CHANGE); -+ -+ fw = fw->hash_link; -+ } -+ } -+} -+ -+ -+void -+DNotify::read_handler(int fd, void *) -+{ -+ static char readbuf[5000]; -+ DirWatch *dw; -+ FileWatch *fw; -+ int snap_queue_tail; -+ int last_fd; -+ -+ int rc = read(fd, readbuf, sizeof readbuf); -+ queue_changed = 0; -+ if (rc < 0) -+ Log::perror("pipe read"); -+ else if (queue_overflowed) -+ { -+ // There is a *slight* race condition here. Between reading -+ // the queue_overflow flag and resetting it. But it doesn't -+ // matter, since I'm gonna handle the overflow after reseting -+ // anyway. -+ queue_overflowed = false; -+ -+ // We're soon gonna check all watches anyway, so -+ // get rid of the current queue -+ queue_head = queue_tail; -+ -+ all_watches_changed (); -+ } -+ else -+ { -+ // Don't read events that happen later than -+ // the initial read. (Otherwise skipping fd's -+ // might miss some changes). -+ snap_queue_tail = queue_tail; -+ last_fd = -1; -+ while (queue_head != snap_queue_tail) -+ { -+ fd = change_queue[queue_head]; -+ queue_head = (queue_head + 1) % QUEUESIZE; -+ -+ // Skip multiple changes to the same fd -+ if (fd != last_fd) -+ { -+ dw = lookup_dirwatch (fd); -+ if (dw) -+ { -+ int n_watches, i; -+ ChangeEventData *data; -+ -+ Log::debug("dnotify said dev %d/%d, ino %ld changed", -+ major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino); -+ -+ n_watches = 0; -+ for (fw=dw->watches; fw; fw=fw->next) -+ n_watches++; -+ -+ data = new ChangeEventData[n_watches]; -+ -+ i = 0; -+ for (fw=dw->watches; fw; fw=fw->next) -+ { -+ data[i].file_dev = fw->file_dev; -+ data[i].file_ino = fw->file_ino; -+ i++; -+ } -+ -+ for (i = 0; i < n_watches; i++) -+ { -+ (*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE); -+ } -+ -+ delete[] data; -+ } -+ } -+ last_fd = fd; -+ } -+ } -+} -+ ---- fam-2.6.7/fam/DNotify.h.dnotify Sun Apr 7 18:57:41 2002 -+++ fam-2.6.7/fam/DNotify.h Sun Apr 7 18:57:47 2002 -@@ -0,0 +1,98 @@ -+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. -+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. -+// -+// This program is free software; you can redistribute it and/or modify it -+// under the terms of version 2 of the GNU General Public License as -+// published by the Free Software Foundation. -+// -+// This program is distributed in the hope that it would be useful, but -+// WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any -+// license provided herein, whether implied or otherwise, is limited to -+// this program in accordance with the express provisions of the GNU -+// General Public License. Patent licenses, if any, provided herein do not -+// apply to combinations of this program with other product or programs, or -+// any other product whatsoever. This program is distributed without any -+// warranty that the program is delivered free of the rightful claim of any -+// third person by way of infringement or the like. See the GNU General -+// Public License for more details. -+// -+// You should have received a copy of the GNU General Public License along -+// with this program; if not, write the Free Software Foundation, Inc., 59 -+// Temple Place - Suite 330, Boston MA 02111-1307, USA. -+ -+#ifndef DNotify_included -+#define DNotify_included -+ -+#include "config.h" -+#include "Monitor.h" -+#include <signal.h> -+ -+// DNotify is an object encapsulating the dnotify linux fcntl. -+// It "emulates" the IMon interface. -+// There can only be one instantiation of the DNotify object. -+// -+// The user of this object uses express() and revoke() to -+// express/revoke interest in a file. There is also -+// a callback, the EventHandler. When an dnotify event comes in, -+// the EventHandler is called. -+// -+// The user of the DNotify object is the Interest class. -+ -+class DNotify : public Monitor { -+public: -+ DNotify(EventHandler h); -+ ~DNotify(); -+ -+ static bool is_active(); -+ -+ virtual Status express(const char *name, struct stat *stat_return); -+ virtual Status revoke(const char *name, dev_t dev, ino_t ino); -+ -+private: -+ struct FileWatch; -+ struct DirWatch; -+ struct ChangeEventData; -+ -+ // Class Variables -+ enum { QUEUESIZE = 1024 }; -+ static int pipe_write_fd; -+ static int pipe_read_fd; -+ static int change_queue[QUEUESIZE]; -+ static volatile sig_atomic_t DNotify::queue_overflowed; -+ static volatile sig_atomic_t DNotify::queue_changed; -+ static volatile int queue_head; // Only modified by read handler -+ static volatile int queue_tail; // Only modified by signal handler -+ static EventHandler ehandler; -+ static void overflow_signal_handler(int sig, siginfo_t *si, void *data); -+ static void signal_handler(int sig, siginfo_t *si, void *data); -+ static void read_handler(int fd, void *closure); -+ -+ enum { DIR_HASHSIZE = 257 }; -+ static DirWatch *dir_hash[DIR_HASHSIZE]; -+ enum { FILE_HASHSIZE = 257 }; -+ static FileWatch *file_hash[FILE_HASHSIZE]; -+ -+ static DirWatch **dir_hashchain(int fd) -+ { return &dir_hash[(unsigned) (fd) % DIR_HASHSIZE]; } -+ static FileWatch **file_hashchain(dev_t d, ino_t i) -+ { return &file_hash[(unsigned) (d+i) % FILE_HASHSIZE]; } -+ -+ static DirWatch *lookup_dirwatch (int fd); -+ static DirWatch *lookup_dirwatch (dev_t dir_dev, ino_t dir_ino); -+ static FileWatch *lookup_filewatch (dev_t file_dev, ino_t file_ino); -+ static void hash_dirwatch(DirWatch *w); -+ static void hash_filewatch(FileWatch *w); -+ static void unhash_dirwatch(DirWatch *w); -+ static void unhash_filewatch(FileWatch *w); -+ static Status watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino); -+ -+ static void all_watches_changed(void); -+ -+ DNotify(const DNotify&); // Do not copy -+ DNotify & operator = (const DNotify&); // or assign. -+}; -+ -+#endif /* !IMon_included */ -+ -+ ---- fam-2.6.7/fam/IMon.h.dnotify Tue Dec 18 02:03:37 2001 -+++ fam-2.6.7/fam/IMon.h Sun Apr 7 18:57:41 2002 -@@ -24,10 +24,7 @@ - #define IMon_included - - #include "config.h" --#include <sys/stat.h> --#include <sys/types.h> -- --#include "Boolean.h" -+#include "Monitor.h" - - struct stat; - -@@ -41,25 +38,18 @@ - // - // The user of the IMon object is the Interest class. - --class IMon { -+class IMon : public Monitor { - - public: -- -- enum Status { OK = 0, BAD = -1 }; -- enum Event { EXEC, EXIT, CHANGE }; -- -- typedef void (*EventHandler)(dev_t, ino_t, int event); -- - IMon(EventHandler h); - ~IMon(); - - static bool is_active(); - -- Status express(const char *name, struct stat *stat_return); -- Status revoke(const char *name, dev_t dev, ino_t ino); -+ virtual Status express(const char *name, struct stat *stat_return); -+ virtual Status revoke(const char *name, dev_t dev, ino_t ino); - - private: -- - // Class Variables - - static int imonfd; ---- fam-2.6.7/fam/Interest.c++.dnotify Wed Dec 19 23:59:20 2001 -+++ fam-2.6.7/fam/Interest.c++ Sun Apr 7 18:57:41 2002 -@@ -41,12 +41,21 @@ - #include "Event.h" - #include "FileSystem.h" - #include "IMon.h" -+#include "DNotify.h" - #include "Log.h" - #include "Pollster.h" - #include "timeval.h" - - Interest *Interest::hashtable[]; --IMon Interest::imon(imon_handler); -+ -+#ifdef USE_DNOTIFY -+static DNotify dnotify(Interest::monitor_handler); -+Monitor * Interest::monitor = &dnotify; -+#else -+static IMon imon(Interest::monitor_handler); -+Monitor * Interest::monitor = &imon; -+#endif -+ - bool Interest::xtab_verification = true; - - Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev) -@@ -58,11 +67,11 @@ - myhost(host), - mypath_exported_to_host(ev == NO_VERIFY_EXPORTED) - { -- memset(&old_stat, 0, sizeof(old_stat)); -- IMon::Status s = IMon::BAD; -- -- s = imon.express(name, &old_stat); -- if (s != IMon::OK) -+ memset(&old_stat, 0, sizeof(old_stat)); -+ -+ Monitor::Status s = Monitor::BAD; -+ s = monitor->express(name, &old_stat); -+ if (s != Monitor::OK) - { int rc = lstat(name, &old_stat); - if (rc < 0) - { Log::info("can't lstat %s", name); -@@ -99,7 +108,7 @@ - } - #endif - -- if (exported_to_host()) fs->ll_monitor(this, s == IMon::OK); -+ if (exported_to_host()) fs->ll_monitor(this, s == Monitor::OK); - } - - Interest::~Interest() -@@ -127,7 +136,7 @@ - pp = &p->hashlink; // move to next element - } - if (!found_same) -- (void) imon.revoke(name(), dev, ino); -+ (void) monitor->revoke(name(), dev, ino); - } - } - -@@ -146,7 +155,7 @@ - - // Express interest. - IMon::Status s = IMon::BAD; -- s = imon.express(name(), NULL); -+ s = monitor->express(name(), NULL); - if (s != IMon::OK) { - return true; - } -@@ -247,23 +256,23 @@ - } - - void --Interest::imon_handler(dev_t device, ino_t inumber, int event) -+Interest::monitor_handler(dev_t device, ino_t inumber, int event) - { - assert(device || inumber); - - for (Interest *p = *hashchain(device, inumber), *next = p; p; p = next) - { next = p->hashlink; - if (p->ino == inumber && p->dev == device) -- { if (event == IMon::EXEC) -+ { if (event == Monitor::EXEC) - { p->cur_exec_state = EXECUTING; - (void) p->report_exec_state(); - } -- else if (event == IMon::EXIT) -+ else if (event == Monitor::EXIT) - { p->cur_exec_state = NOT_EXECUTING; - (void) p->report_exec_state(); - } - else -- { assert(event == IMon::CHANGE); -+ { assert(event == Monitor::CHANGE); - p->scan(); - } - } ---- fam-2.6.7/fam/Interest.h.dnotify Tue Dec 18 02:03:37 2001 -+++ fam-2.6.7/fam/Interest.h Sun Apr 7 18:57:41 2002 -@@ -32,7 +32,7 @@ - - class Event; - class FileSystem; --class IMon; -+class Monitor; - struct stat; - - // Interest -- abstract base class for filesystem entities of interest. -@@ -74,7 +74,7 @@ - - // Public Class Method - -- static void imon_handler(dev_t, ino_t, int event); -+ static void monitor_handler(dev_t, ino_t, int event); - - static void enable_xtab_verification(bool enable); - -@@ -121,7 +121,7 @@ - - // Class Variables - -- static IMon imon; -+ static Monitor *monitor; - static Interest *hashtable[HASHSIZE]; - static bool xtab_verification; - ---- fam-2.6.7/fam/Makefile.am.dnotify Tue Dec 18 02:03:37 2001 -+++ fam-2.6.7/fam/Makefile.am Sun Apr 7 18:57:41 2002 -@@ -3,6 +3,12 @@ - bin_PROGRAMS = fam - sysconf_DATA = fam.conf - -+if USE_DNOTIFY -+DNOTIFY_FILES = DNotify.c++ -+else -+DNOTIFY_FILES = -+endif -+ - fam_SOURCES = \ - Activity.c++ \ - Activity.h \ -@@ -20,6 +26,7 @@ - Directory.h \ - DirectoryScanner.c++ \ - DirectoryScanner.h \ -+ DNotify.h \ - Event.c++ \ - Event.h \ - File.c++ \ -@@ -48,6 +55,7 @@ - NFSFileSystem.h \ - NetConnection.c++ \ - NetConnection.h \ -+ Monitor.h \ - Pollster.c++ \ - Pollster.h \ - Request.h \ -@@ -72,9 +80,10 @@ - main.c++ \ - timeval.c++ \ - timeval.h \ -- @IMON_FUNCS@.c++ -+ @IMON_FUNCS@.c++ \ -+ $(DNOTIFY_FILES) - --EXTRA_fam_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ -+EXTRA_fam_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++ - - fam_LDADD = -lrpcsvc $(top_srcdir)/support/libsupport.a - ---- fam-2.6.7/fam/Monitor.h.dnotify Sun Apr 7 18:57:41 2002 -+++ fam-2.6.7/fam/Monitor.h Sun Apr 7 18:57:41 2002 -@@ -0,0 +1,57 @@ -+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. -+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. -+// -+// This program is free software; you can redistribute it and/or modify it -+// under the terms of version 2 of the GNU General Public License as -+// published by the Free Software Foundation. -+// -+// This program is distributed in the hope that it would be useful, but -+// WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any -+// license provided herein, whether implied or otherwise, is limited to -+// this program in accordance with the express provisions of the GNU -+// General Public License. Patent licenses, if any, provided herein do not -+// apply to combinations of this program with other product or programs, or -+// any other product whatsoever. This program is distributed without any -+// warranty that the program is delivered free of the rightful claim of any -+// third person by way of infringement or the like. See the GNU General -+// Public License for more details. -+// -+// You should have received a copy of the GNU General Public License along -+// with this program; if not, write the Free Software Foundation, Inc., 59 -+// Temple Place - Suite 330, Boston MA 02111-1307, USA. -+ -+#ifndef Monitor_included -+#define Monitor_included -+ -+#include "config.h" -+#include <sys/stat.h> -+#include <sys/types.h> -+ -+struct stat; -+ -+// Monitor is an abstract baseclass for differend file monitoring -+// systems. The original system used was IMon, and the Montor API -+// is heavily influenced by that. -+// There can only be one instantiation of the Monitor object. -+// -+// The user of this object uses express() and revoke() to -+// express/revoke interest in a file to imon. There is also -+// a callback, the EventHandler. When an event comes in, -+// the EventHandler is called. -+// -+// The main implementers of the Monitor class is IMon and DNotify -+ -+class Monitor { -+public: -+ -+ enum Status { OK = 0, BAD = -1 }; -+ enum Event { EXEC, EXIT, CHANGE }; -+ -+ typedef void (*EventHandler)(dev_t, ino_t, int event); -+ -+ virtual Status express(const char *name, struct stat *stat_return) = 0; -+ virtual Status revoke(const char *name, dev_t dev, ino_t ino) = 0; -+}; -+ -+#endif /* !Monitor_included */ ---- fam-2.6.7/include/BTree.h.dnotify Tue Dec 18 02:03:38 2001 -+++ fam-2.6.7/include/BTree.h Sun Apr 7 18:57:41 2002 -@@ -271,7 +271,7 @@ - n += that->n + 1; - link[n] = that->link[that->n]; - that->n = 0; -- that->link[0] = NULL; -+ that->link[0] = 0; - } - - /////////////////////////////////////////////////////////////////////////////// -@@ -280,7 +280,7 @@ - - template <class K, class V> - BTree<K, V>::BTree() -- : root(NULL), npairs(0) -+ : root(0), npairs(0) - { - assert(!(fanout % 2)); - } -@@ -407,7 +407,7 @@ - BTree<Key, Value>::Closure - BTree<Key, Value>::insert(Node *p, const Key& key, const Value& value) - { -- if (!p) return Closure(key, value, NULL); -+ if (!p) return Closure(key, value, 0); - // If you're running Purify on a client linking with libfam, and it says - // that line is causing a 3-byte UMR for BTree<int, bool>::insert() in - // FAMNextEvent() ("Reading 8 bytes from 0x... on the stack (3 bytes at -@@ -475,7 +475,7 @@ - case UNDER: - if (root->n == 0) - { Node *nr = root->link[0]; -- root->link[0] = NULL; // don't delete subtree -+ root->link[0] = 0; // don't delete subtree - delete root; - root = nr; - } -@@ -507,8 +507,8 @@ - Node *cp = p->link[i]; - assert(cp); - -- Node *rp = i < p->n ? p->link[i + 1] : NULL; -- Node *lp = i > 0 ? p->link[i - 1] : NULL; -+ Node *rp = i < p->n ? p->link[i + 1] : 0; -+ Node *lp = i > 0 ? p->link[i - 1] : 0; - assert(!rp || rp->n >= fanout / 2); - assert(!lp || lp->n >= fanout / 2); - diff --git a/app-admin/fam-oss/files/dnotify.patch.new b/app-admin/fam-oss/files/dnotify.patch.new deleted file mode 100644 index a691d4cc5fa4..000000000000 --- a/app-admin/fam-oss/files/dnotify.patch.new +++ /dev/null @@ -1,1078 +0,0 @@ ---- fam-2.6.9/include/BTree.h.dnotify 2002-07-16 07:23:25.000000000 +0200 -+++ fam-2.6.9/include/BTree.h 2003-01-31 22:23:09.000000000 +0100 -@@ -271,7 +271,7 @@ - n += that->n + 1; - link[n] = that->link[that->n]; - that->n = 0; -- that->link[0] = NULL; -+ that->link[0] = 0; - } - - /////////////////////////////////////////////////////////////////////////////// -@@ -280,7 +280,7 @@ - - template <class K, class V> - BTree<K, V>::BTree() -- : root(NULL), npairs(0) -+ : root(0), npairs(0) - { - assert(!(fanout % 2)); - } -@@ -407,7 +407,7 @@ - BTree<Key, Value>::Closure - BTree<Key, Value>::insert(Node *p, const Key& key, const Value& value) - { -- if (!p) return Closure(key, value, NULL); -+ if (!p) return Closure(key, value, 0); - // If you're running Purify on a client linking with libfam, and it says - // that line is causing a 3-byte UMR for BTree<int, bool>::insert() in - // FAMNextEvent() ("Reading 8 bytes from 0x... on the stack (3 bytes at -@@ -475,7 +475,7 @@ - case UNDER: - if (root->n == 0) - { Node *nr = root->link[0]; -- root->link[0] = NULL; // don't delete subtree -+ root->link[0] = 0; // don't delete subtree - delete root; - root = nr; - } -@@ -507,8 +507,8 @@ - Node *cp = p->link[i]; - assert(cp); - -- Node *rp = i < p->n ? p->link[i + 1] : NULL; -- Node *lp = i > 0 ? p->link[i - 1] : NULL; -+ Node *rp = i < p->n ? p->link[i + 1] : 0; -+ Node *lp = i > 0 ? p->link[i - 1] : 0; - assert(!rp || rp->n >= fanout / 2); - assert(!lp || lp->n >= fanout / 2); - ---- fam-2.6.9/fam/DNotify.c++.dnotify 2003-01-31 22:23:09.000000000 +0100 -+++ fam-2.6.9/fam/DNotify.c++ 2003-01-31 22:23:09.000000000 +0100 -@@ -0,0 +1,583 @@ -+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. -+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. -+// -+// This program is free software; you can redistribute it and/or modify it -+// under the terms of version 2 of the GNU General Public License as -+// published by the Free Software Foundation. -+// -+// This program is distributed in the hope that it would be useful, but -+// WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any -+// license provided herein, whether implied or otherwise, is limited to -+// this program in accordance with the express provisions of the GNU -+// General Public License. Patent licenses, if any, provided herein do not -+// apply to combinations of this program with other product or programs, or -+// any other product whatsoever. This program is distributed without any -+// warranty that the program is delivered free of the rightful claim of any -+// third person by way of infringement or the like. See the GNU General -+// Public License for more details. -+// -+// You should have received a copy of the GNU General Public License along -+// with this program; if not, write the Free Software Foundation, Inc., 59 -+// Temple Place - Suite 330, Boston MA 02111-1307, USA. -+ -+#define _GNU_SOURCE -+#include <fcntl.h> -+ -+#include <string.h> -+#include <signal.h> -+#include <stdio.h> -+#include <unistd.h> -+#include <sys/types.h> -+#include <sys/stat.h> -+#include <libgen.h> -+ -+#include "DNotify.h" -+ -+#include "Interest.h" -+#include "Log.h" -+#include "Scheduler.h" -+#include "alloc.h" -+ -+ -+int DNotify::pipe_write_fd = -2; -+int DNotify::pipe_read_fd = -2; -+volatile sig_atomic_t DNotify::queue_overflowed = 0; -+volatile sig_atomic_t DNotify::queue_changed = 0; -+int DNotify::change_queue[QUEUESIZE]; -+volatile int DNotify::queue_head = 0; // Only modified by read handler -+volatile int DNotify::queue_tail = 0; // Only modified by signal handler -+DNotify::EventHandler DNotify::ehandler; -+ -+DNotify::DirWatch *DNotify::dir_hash[DIR_HASHSIZE]; -+DNotify::FileWatch *DNotify::file_hash[FILE_HASHSIZE]; -+ -+struct DNotify::FileWatch -+{ -+ DirWatch *dir_watch; -+ dev_t file_dev; -+ ino_t file_ino; -+ FileWatch *next; // The DirWatch.watches list -+ FileWatch *hash_link; -+}; -+ -+struct DNotify::DirWatch -+{ -+ int fd; -+ dev_t dir_dev; -+ ino_t dir_ino; -+ -+ DirWatch *hash_link; -+ FileWatch *watches; -+}; -+ -+struct DNotify::ChangeEventData -+{ -+ dev_t file_dev; -+ ino_t file_ino; -+}; -+ -+DNotify::DNotify(EventHandler h) -+{ -+ assert(ehandler == NULL); -+ ehandler = h; -+} -+ -+DNotify::~DNotify() -+{ -+ if (pipe_read_fd >= 0) -+ { -+ // Tell the scheduler. -+ -+ (void) Scheduler::remove_read_handler(pipe_read_fd); -+ -+ // Close the pipe. -+ -+ if (close(pipe_read_fd) < 0) -+ Log::perror("can't pipe read end"); -+ else -+ Log::debug("closed pipe read end"); -+ -+ if (close(pipe_write_fd) < 0) -+ Log::perror("can't pipe write end"); -+ else -+ Log::debug("closed pipe write end"); -+ pipe_read_fd = -1; -+ } -+ ehandler = NULL; -+} -+ -+void -+DNotify::overflow_signal_handler(int sig, siginfo_t *si, void *data) -+{ -+ char c = 'x'; -+ -+ { -+ char *str = "*************** overflow sigqueue ***********************\n"; -+ write (STDERR_FILENO, str, strlen(str)); -+ } -+ -+ if (!queue_overflowed) -+ { -+ queue_overflowed = 1; -+ // Trigger the read handler -+ write(pipe_write_fd, &c, 1); -+ } -+} -+ -+void -+DNotify::signal_handler(int sig, siginfo_t *si, void *data) -+{ -+ int left; -+ char c = 'x'; -+ -+ if (queue_head <= queue_tail) -+ left = (QUEUESIZE + queue_head) - queue_tail; -+ else -+ left = queue_head - queue_tail; -+ -+ // Must leave at least one item unused to see difference -+ // Betweeen empty and full -+ if (left <= 1) -+ { -+ queue_overflowed = 1; -+ { -+ char *str = "*************** overflow famqueue ****************\n"; -+ write (STDERR_FILENO, str, strlen(str)); -+ } -+ } -+ else -+ { -+ change_queue[queue_tail] = si->si_fd; -+ queue_tail = (queue_tail + 1) % QUEUESIZE; -+ } -+ -+ if (!queue_changed) -+ { -+ queue_changed = 1; -+ // Trigger the read handler -+ write(pipe_write_fd, &c, 1); -+ } -+} -+ -+bool -+DNotify::is_active() -+{ -+ if (pipe_read_fd == -2) -+ { -+ int filedes[2]; -+ int res; -+ -+ res = pipe (filedes); -+ if (res >= 0) -+ { Log::debug("opened pipe"); -+ pipe_read_fd = filedes[0]; -+ pipe_write_fd = filedes[1]; -+ -+ // Setup signal handler: -+ struct sigaction act; -+ -+ act.sa_sigaction = signal_handler; -+ sigemptyset(&act.sa_mask); -+ act.sa_flags = SA_SIGINFO; -+ sigaction(SIGRTMIN, &act, NULL); -+ -+ // When the RT queue overflows we get a SIGIO -+ act.sa_sigaction = overflow_signal_handler; -+ sigemptyset(&act.sa_mask); -+ sigaction(SIGIO, &act, NULL); -+ -+ (void) Scheduler::install_read_handler(pipe_read_fd, read_handler, NULL); -+ } -+ } -+ return pipe_read_fd >= 0; -+} -+ -+DNotify::DirWatch * -+DNotify::lookup_dirwatch (int fd) -+{ -+ DirWatch **p; -+ DirWatch *w; -+ -+ p = dir_hashchain (fd); -+ -+ while (*p) -+ { -+ w = *p; -+ -+ if (w->fd == fd) -+ return w; -+ -+ p = &w->hash_link; -+ } -+ -+ return *p; -+} -+ -+// This colud be made faster by using another hash table. -+// But it's not that bad, since it is only used by express/revoke -+DNotify::DirWatch * -+DNotify::lookup_dirwatch (dev_t dir_dev, ino_t dir_ino) -+{ -+ DirWatch *p; -+ int i; -+ -+ for (i=0;i<DIR_HASHSIZE;i++) -+ { -+ p = dir_hash[i]; -+ -+ while (p) -+ { -+ if (p->dir_dev == dir_dev && p->dir_ino == dir_ino) -+ return p; -+ -+ p = p->hash_link; -+ } -+ } -+ -+ return NULL; -+} -+ -+DNotify::FileWatch * -+DNotify::lookup_filewatch (dev_t dev, ino_t ino) -+{ -+ FileWatch **p; -+ FileWatch *w; -+ -+ p = file_hashchain (dev, ino); -+ -+ while (*p) -+ { -+ w = *p; -+ -+ if (w->file_dev == dev && w->file_ino == ino) -+ return w; -+ -+ p = &w->hash_link; -+ } -+ -+ return *p; -+} -+ -+// Make sure w is not already in the hash table before calling -+// this function. -+void -+DNotify::hash_dirwatch(DirWatch *w) -+{ -+ DirWatch **p; -+ p = dir_hashchain (w->fd); -+ w->hash_link = *p; -+ *p = w; -+} -+ -+// Make sure w is not already in the hash table before calling -+// this function. -+void -+DNotify::hash_filewatch(FileWatch *w) -+{ -+ FileWatch **p; -+ p = file_hashchain (w->file_dev, w->file_ino); -+ w->hash_link = *p; -+ *p = w; -+} -+ -+void -+DNotify::unhash_dirwatch(DirWatch *w) -+{ -+ DirWatch **p; -+ -+ p = dir_hashchain (w->fd); -+ -+ while (*p) -+ { -+ if (*p == w) -+ { -+ *p = w->hash_link; -+ break; -+ } -+ p = &(*p)->hash_link; -+ } -+ w->hash_link = NULL; -+} -+ -+void -+DNotify::unhash_filewatch(FileWatch *w) -+{ -+ FileWatch **p; -+ -+ p = file_hashchain (w->file_dev, w->file_ino); -+ -+ while (*p) -+ { -+ if (*p == w) -+ { -+ *p = w->hash_link; -+ break; -+ } -+ p = &(*p)->hash_link; -+ } -+ w->hash_link = NULL; -+} -+ -+DNotify::Status -+DNotify::watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino) -+{ -+ struct stat stat; -+ dev_t dir_dev; -+ ino_t dir_ino; -+ DirWatch *dwatch; -+ FileWatch **p; -+ FileWatch *fw; -+ -+ if (lstat (notify_dir, &stat) == -1) -+ return BAD; -+ -+ dwatch = lookup_dirwatch(stat.st_dev, stat.st_ino); -+ if (!dwatch) -+ { -+ Log::debug ("New DirWatch for %s (%x %x)\n", -+ notify_dir, (int)stat.st_dev, (int)stat.st_ino); -+ dwatch = new DirWatch; -+ dwatch->watches = NULL; -+ dwatch->hash_link = NULL; -+ dwatch->dir_dev = stat.st_dev; -+ dwatch->dir_ino = stat.st_ino; -+ -+ dwatch->fd = open(notify_dir, O_RDONLY); -+ fcntl (dwatch->fd, F_SETSIG, SIGRTMIN); -+ fcntl (dwatch->fd, F_NOTIFY, -+ (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) | DN_MULTISHOT); -+ hash_dirwatch (dwatch); -+ } -+ -+ for (p=&dwatch->watches; *p; p=&(*p)->next) -+ { -+ fw = *p; -+ if (fw->file_dev == file_dev && fw->file_ino == file_ino) -+ return OK; -+ } -+ -+ // No old FileWatch, need to add one: -+ Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino); -+ *p = new FileWatch; -+ fw = *p; -+ fw->next = NULL; -+ fw->file_dev = file_dev; -+ fw->file_ino = file_ino; -+ fw->dir_watch = dwatch; -+ hash_filewatch(fw); -+ return OK; -+} -+ -+char * -+dirname_dup (const char *name) -+{ -+ char *copy = strdup(name); -+ char *res = dirname(copy); -+ res = strdup(res); -+ free (copy); -+ return res; -+} -+ -+DNotify::Status -+DNotify::express(const char *name, struct stat *status) -+{ -+ struct stat stat; -+ char *notify_dir; -+ int res; -+ Status s; -+ dev_t dev; -+ ino_t ino; -+ -+ Log::debug("express() name: %s\n", name); -+ -+ if (!is_active()) -+ return BAD; -+ -+ if (::lstat (name, &stat) == -1) -+ return BAD; -+ -+ dev = stat.st_dev; -+ ino = stat.st_ino; -+ -+ if ((stat.st_mode & S_IFMT) != S_IFDIR) -+ notify_dir = dirname_dup (name); -+ else -+ notify_dir = (char *)name; -+ -+ s = watch_dir (notify_dir, dev, ino); -+ if (notify_dir != name) -+ free (notify_dir); -+ if (s) -+ return s; -+ -+ // Check for a race condition; if someone removed or changed the -+ // file at the same time that we are expressing interest in it, -+ // revoke the interest so we don't get notifications about changes -+ // to a recycled inode that we don't otherwise care about. -+ // -+ struct stat st; -+ if (status == NULL) { -+ status = &st; -+ } -+ if (::lstat(name, status) == -1) { -+ Log::perror("stat on \"%s\" failed", name); -+ revoke(name, stat.st_dev, stat.st_ino); -+ return BAD; -+ } -+ if (status->st_dev != stat.st_dev -+ || status->st_ino != stat.st_ino) { -+ Log::error("File \"%s\" changed between express and stat", -+ name); -+ revoke(name, stat.st_dev, stat.st_ino); -+ return BAD; -+ } -+ -+ Log::debug("told dnotify to monitor \"%s\" = dev %d/%d, ino %d", name, -+ major(status->st_dev), minor(status->st_dev), -+ status->st_ino); -+ return OK; -+} -+ -+DNotify::Status -+DNotify::revoke(const char *name, dev_t dev, ino_t ino) -+{ -+ FileWatch *fwatch; -+ DirWatch *dwatch; -+ -+ Log::debug("revoke() name: %s, dev: %x, ino: %x\n", name, dev, ino); -+ -+ if (!is_active()) -+ return BAD; -+ -+ // Lookup FileWatch by dev:ino, and its DirWatch. -+ fwatch = lookup_filewatch (dev, ino); -+ if (fwatch == NULL) -+ return BAD; -+ -+ dwatch = fwatch->dir_watch; -+ -+ // delete FileWatch, if last FileWatch: close fd, delete DirWatch -+ Log::debug ("Destroying FileWatch for (%x %x)\n", -+ (int)fwatch->file_dev, (int)fwatch->file_ino); -+ FileWatch **p; -+ for (p=&dwatch->watches; *p; p=&(*p)->next) -+ { -+ if (*p == fwatch) -+ { -+ *p = (*p)->next; -+ break; -+ } -+ } -+ unhash_filewatch(fwatch); -+ delete fwatch; -+ if (dwatch->watches == NULL) -+ { -+ Log::debug ("Destroying DirWatch for (%x %x)\n", -+ (int)dwatch->dir_dev, (int)dwatch->dir_ino); -+ close(dwatch->fd); -+ unhash_dirwatch(dwatch); -+ delete dwatch; -+ } -+ -+ return OK; -+} -+ -+ -+void -+DNotify::all_watches_changed(void) -+{ -+ int i; -+ FileWatch *fw; -+ -+ for (i=0; i<FILE_HASHSIZE; i++) -+ { -+ fw = file_hash[i]; -+ while (fw) -+ { -+ (*ehandler)(fw->file_dev, fw->file_ino, CHANGE); -+ -+ fw = fw->hash_link; -+ } -+ } -+} -+ -+ -+void -+DNotify::read_handler(int fd, void *) -+{ -+ static char readbuf[5000]; -+ DirWatch *dw; -+ FileWatch *fw; -+ int snap_queue_tail; -+ int last_fd; -+ -+ int rc = read(fd, readbuf, sizeof readbuf); -+ queue_changed = 0; -+ if (rc < 0) -+ Log::perror("pipe read"); -+ else if (queue_overflowed) -+ { -+ // There is a *slight* race condition here. Between reading -+ // the queue_overflow flag and resetting it. But it doesn't -+ // matter, since I'm gonna handle the overflow after reseting -+ // anyway. -+ queue_overflowed = false; -+ -+ // We're soon gonna check all watches anyway, so -+ // get rid of the current queue -+ queue_head = queue_tail; -+ -+ all_watches_changed (); -+ } -+ else -+ { -+ // Don't read events that happen later than -+ // the initial read. (Otherwise skipping fd's -+ // might miss some changes). -+ snap_queue_tail = queue_tail; -+ last_fd = -1; -+ while (queue_head != snap_queue_tail) -+ { -+ fd = change_queue[queue_head]; -+ queue_head = (queue_head + 1) % QUEUESIZE; -+ -+ // Skip multiple changes to the same fd -+ if (fd != last_fd) -+ { -+ dw = lookup_dirwatch (fd); -+ if (dw) -+ { -+ int n_watches, i; -+ ChangeEventData *data; -+ -+ Log::debug("dnotify said dev %d/%d, ino %ld changed", -+ major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino); -+ -+ n_watches = 0; -+ for (fw=dw->watches; fw; fw=fw->next) -+ n_watches++; -+ -+ data = new ChangeEventData[n_watches]; -+ -+ i = 0; -+ for (fw=dw->watches; fw; fw=fw->next) -+ { -+ data[i].file_dev = fw->file_dev; -+ data[i].file_ino = fw->file_ino; -+ i++; -+ } -+ -+ for (i = 0; i < n_watches; i++) -+ { -+ (*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE); -+ } -+ -+ delete[] data; -+ } -+ } -+ last_fd = fd; -+ } -+ } -+} -+ ---- fam-2.6.9/fam/DNotify.h.dnotify 2003-01-31 22:23:09.000000000 +0100 -+++ fam-2.6.9/fam/DNotify.h 2003-01-31 22:23:09.000000000 +0100 -@@ -0,0 +1,98 @@ -+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. -+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. -+// -+// This program is free software; you can redistribute it and/or modify it -+// under the terms of version 2 of the GNU General Public License as -+// published by the Free Software Foundation. -+// -+// This program is distributed in the hope that it would be useful, but -+// WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any -+// license provided herein, whether implied or otherwise, is limited to -+// this program in accordance with the express provisions of the GNU -+// General Public License. Patent licenses, if any, provided herein do not -+// apply to combinations of this program with other product or programs, or -+// any other product whatsoever. This program is distributed without any -+// warranty that the program is delivered free of the rightful claim of any -+// third person by way of infringement or the like. See the GNU General -+// Public License for more details. -+// -+// You should have received a copy of the GNU General Public License along -+// with this program; if not, write the Free Software Foundation, Inc., 59 -+// Temple Place - Suite 330, Boston MA 02111-1307, USA. -+ -+#ifndef DNotify_included -+#define DNotify_included -+ -+#include "config.h" -+#include "Monitor.h" -+#include <signal.h> -+ -+// DNotify is an object encapsulating the dnotify linux fcntl. -+// It "emulates" the IMon interface. -+// There can only be one instantiation of the DNotify object. -+// -+// The user of this object uses express() and revoke() to -+// express/revoke interest in a file. There is also -+// a callback, the EventHandler. When an dnotify event comes in, -+// the EventHandler is called. -+// -+// The user of the DNotify object is the Interest class. -+ -+class DNotify : public Monitor { -+public: -+ DNotify(EventHandler h); -+ ~DNotify(); -+ -+ static bool is_active(); -+ -+ virtual Status express(const char *name, struct stat *stat_return); -+ virtual Status revoke(const char *name, dev_t dev, ino_t ino); -+ -+private: -+ struct FileWatch; -+ struct DirWatch; -+ struct ChangeEventData; -+ -+ // Class Variables -+ enum { QUEUESIZE = 1024 }; -+ static int pipe_write_fd; -+ static int pipe_read_fd; -+ static int change_queue[QUEUESIZE]; -+ static volatile sig_atomic_t DNotify::queue_overflowed; -+ static volatile sig_atomic_t DNotify::queue_changed; -+ static volatile int queue_head; // Only modified by read handler -+ static volatile int queue_tail; // Only modified by signal handler -+ static EventHandler ehandler; -+ static void overflow_signal_handler(int sig, siginfo_t *si, void *data); -+ static void signal_handler(int sig, siginfo_t *si, void *data); -+ static void read_handler(int fd, void *closure); -+ -+ enum { DIR_HASHSIZE = 257 }; -+ static DirWatch *dir_hash[DIR_HASHSIZE]; -+ enum { FILE_HASHSIZE = 257 }; -+ static FileWatch *file_hash[FILE_HASHSIZE]; -+ -+ static DirWatch **dir_hashchain(int fd) -+ { return &dir_hash[(unsigned) (fd) % DIR_HASHSIZE]; } -+ static FileWatch **file_hashchain(dev_t d, ino_t i) -+ { return &file_hash[(unsigned) (d+i) % FILE_HASHSIZE]; } -+ -+ static DirWatch *lookup_dirwatch (int fd); -+ static DirWatch *lookup_dirwatch (dev_t dir_dev, ino_t dir_ino); -+ static FileWatch *lookup_filewatch (dev_t file_dev, ino_t file_ino); -+ static void hash_dirwatch(DirWatch *w); -+ static void hash_filewatch(FileWatch *w); -+ static void unhash_dirwatch(DirWatch *w); -+ static void unhash_filewatch(FileWatch *w); -+ static Status watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino); -+ -+ static void all_watches_changed(void); -+ -+ DNotify(const DNotify&); // Do not copy -+ DNotify & operator = (const DNotify&); // or assign. -+}; -+ -+#endif /* !IMon_included */ -+ -+ ---- fam-2.6.9/fam/IMon.h.dnotify 2002-07-16 07:23:24.000000000 +0200 -+++ fam-2.6.9/fam/IMon.h 2003-01-31 22:23:09.000000000 +0100 -@@ -24,10 +24,7 @@ - #define IMon_included - - #include "config.h" --#include <sys/stat.h> --#include <sys/types.h> -- --#include "Boolean.h" -+#include "Monitor.h" - - struct stat; - -@@ -41,25 +38,18 @@ - // - // The user of the IMon object is the Interest class. - --class IMon { -+class IMon : public Monitor { - - public: -- -- enum Status { OK = 0, BAD = -1 }; -- enum Event { EXEC, EXIT, CHANGE }; -- -- typedef void (*EventHandler)(dev_t, ino_t, int event); -- - IMon(EventHandler h); - ~IMon(); - - static bool is_active(); - -- Status express(const char *name, struct stat *stat_return); -- Status revoke(const char *name, dev_t dev, ino_t ino); -+ virtual Status express(const char *name, struct stat *stat_return); -+ virtual Status revoke(const char *name, dev_t dev, ino_t ino); - - private: -- - // Class Variables - - static int imonfd; ---- fam-2.6.9/fam/Interest.c++.dnotify 2002-07-16 08:14:41.000000000 +0200 -+++ fam-2.6.9/fam/Interest.c++ 2003-01-31 22:23:09.000000000 +0100 -@@ -43,12 +43,21 @@ - #include "Event.h" - #include "FileSystem.h" - #include "IMon.h" -+#include "DNotify.h" - #include "Log.h" - #include "Pollster.h" - #include "timeval.h" - - Interest *Interest::hashtable[]; --IMon Interest::imon(imon_handler); -+ -+#ifdef USE_DNOTIFY -+static DNotify dnotify(Interest::monitor_handler); -+Monitor * Interest::monitor = &dnotify; -+#else -+static IMon imon(Interest::monitor_handler); -+Monitor * Interest::monitor = &imon; -+#endif -+ - bool Interest::xtab_verification = true; - - Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev) -@@ -60,11 +69,11 @@ - myhost(host), - mypath_exported_to_host(ev == NO_VERIFY_EXPORTED) - { -- memset(&old_stat, 0, sizeof(old_stat)); -- IMon::Status s = IMon::BAD; -- -- s = imon.express(name, &old_stat); -- if (s != IMon::OK) -+ memset(&old_stat, 0, sizeof(old_stat)); -+ -+ Monitor::Status s = Monitor::BAD; -+ s = monitor->express(name, &old_stat); -+ if (s != Monitor::OK) - { int rc = lstat(name, &old_stat); - if (rc < 0) - { Log::info("can't lstat %s", name); -@@ -101,7 +110,7 @@ - } - #endif - -- if (exported_to_host()) fs->ll_monitor(this, s == IMon::OK); -+ if (exported_to_host()) fs->ll_monitor(this, s == Monitor::OK); - } - - Interest::~Interest() -@@ -129,7 +138,7 @@ - pp = &p->hashlink; // move to next element - } - if (!found_same) -- (void) imon.revoke(name(), dev, ino); -+ (void) monitor->revoke(name(), dev, ino); - } - } - -@@ -148,7 +157,7 @@ - - // Express interest. - IMon::Status s = IMon::BAD; -- s = imon.express(name(), NULL); -+ s = monitor->express(name(), NULL); - if (s != IMon::OK) { - return true; - } -@@ -249,23 +258,23 @@ - } - - void --Interest::imon_handler(dev_t device, ino_t inumber, int event) -+Interest::monitor_handler(dev_t device, ino_t inumber, int event) - { - assert(device || inumber); - - for (Interest *p = *hashchain(device, inumber), *next = p; p; p = next) - { next = p->hashlink; - if (p->ino == inumber && p->dev == device) -- { if (event == IMon::EXEC) -+ { if (event == Monitor::EXEC) - { p->cur_exec_state = EXECUTING; - (void) p->report_exec_state(); - } -- else if (event == IMon::EXIT) -+ else if (event == Monitor::EXIT) - { p->cur_exec_state = NOT_EXECUTING; - (void) p->report_exec_state(); - } - else -- { assert(event == IMon::CHANGE); -+ { assert(event == Monitor::CHANGE); - p->scan(); - } - } ---- fam-2.6.9/fam/Interest.h.dnotify 2002-07-16 07:23:24.000000000 +0200 -+++ fam-2.6.9/fam/Interest.h 2003-01-31 22:23:09.000000000 +0100 -@@ -32,7 +32,7 @@ - - class Event; - class FileSystem; --class IMon; -+class Monitor; - struct stat; - - // Interest -- abstract base class for filesystem entities of interest. -@@ -74,7 +74,7 @@ - - // Public Class Method - -- static void imon_handler(dev_t, ino_t, int event); -+ static void monitor_handler(dev_t, ino_t, int event); - - static void enable_xtab_verification(bool enable); - -@@ -121,7 +121,7 @@ - - // Class Variables - -- static IMon imon; -+ static Monitor *monitor; - static Interest *hashtable[HASHSIZE]; - static bool xtab_verification; - ---- fam-2.6.9/fam/Makefile.am.dnotify 2002-07-16 07:23:24.000000000 +0200 -+++ fam-2.6.9/fam/Makefile.am 2003-01-31 22:24:29.000000000 +0100 -@@ -3,6 +3,12 @@ - bin_PROGRAMS = fam - sysconf_DATA = fam.conf - -+if USE_DNOTIFY -+DNOTIFY_FILES = DNotify.c++ -+else -+DNOTIFY_FILES = -+endif -+ - fam_SOURCES = \ - Activity.c++ \ - Activity.h \ -@@ -20,6 +26,7 @@ - Directory.h \ - DirectoryScanner.c++ \ - DirectoryScanner.h \ -+ DNotify.h \ - Event.c++ \ - Event.h \ - File.c++ \ -@@ -48,6 +55,7 @@ - NFSFileSystem.h \ - NetConnection.c++ \ - NetConnection.h \ -+ Monitor.h \ - Pollster.c++ \ - Pollster.h \ - Request.h \ -@@ -72,11 +80,12 @@ - main.c++ \ - timeval.c++ \ - timeval.h \ -- @IMON_FUNCS@.c++ -+ @IMON_FUNCS@.c++ \ -+ $(DNOTIFY_FILES) - --EXTRA_fam_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ -+EXTRA_fam_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++ - --fam_LDADD = -lrpcsvc $(top_srcdir)/support/libsupport.a -+fam_LDADD = -lrpcsvc $(top_srcdir)/support/libsupport.a -lrt -lpthread - - CLEANFILES += @MKDEPFILE@ ii_files/*.ii - sinclude @MKDEPFILE@ ---- fam-2.6.9/fam/Monitor.h.dnotify 2003-01-31 22:23:09.000000000 +0100 -+++ fam-2.6.9/fam/Monitor.h 2003-01-31 22:23:09.000000000 +0100 -@@ -0,0 +1,57 @@ -+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. -+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. -+// -+// This program is free software; you can redistribute it and/or modify it -+// under the terms of version 2 of the GNU General Public License as -+// published by the Free Software Foundation. -+// -+// This program is distributed in the hope that it would be useful, but -+// WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any -+// license provided herein, whether implied or otherwise, is limited to -+// this program in accordance with the express provisions of the GNU -+// General Public License. Patent licenses, if any, provided herein do not -+// apply to combinations of this program with other product or programs, or -+// any other product whatsoever. This program is distributed without any -+// warranty that the program is delivered free of the rightful claim of any -+// third person by way of infringement or the like. See the GNU General -+// Public License for more details. -+// -+// You should have received a copy of the GNU General Public License along -+// with this program; if not, write the Free Software Foundation, Inc., 59 -+// Temple Place - Suite 330, Boston MA 02111-1307, USA. -+ -+#ifndef Monitor_included -+#define Monitor_included -+ -+#include "config.h" -+#include <sys/stat.h> -+#include <sys/types.h> -+ -+struct stat; -+ -+// Monitor is an abstract baseclass for differend file monitoring -+// systems. The original system used was IMon, and the Montor API -+// is heavily influenced by that. -+// There can only be one instantiation of the Monitor object. -+// -+// The user of this object uses express() and revoke() to -+// express/revoke interest in a file to imon. There is also -+// a callback, the EventHandler. When an event comes in, -+// the EventHandler is called. -+// -+// The main implementers of the Monitor class is IMon and DNotify -+ -+class Monitor { -+public: -+ -+ enum Status { OK = 0, BAD = -1 }; -+ enum Event { EXEC, EXIT, CHANGE }; -+ -+ typedef void (*EventHandler)(dev_t, ino_t, int event); -+ -+ virtual Status express(const char *name, struct stat *stat_return) = 0; -+ virtual Status revoke(const char *name, dev_t dev, ino_t ino) = 0; -+}; -+ -+#endif /* !Monitor_included */ ---- fam-2.6.9/acconfig.h.dnotify 2002-07-16 08:03:58.000000000 +0200 -+++ fam-2.6.9/acconfig.h 2003-01-31 22:23:09.000000000 +0100 -@@ -17,6 +17,9 @@ - /* Define if the system has imon and IMONIOC_ ioctl flags. */ - #undef HAVE_IMON - -+/* Define if the system has the dnotify fcntl and it's gonna be used. */ -+#undef USE_DNOTIFY -+ - /* Define if the system has the struct revokdi and the IMONIOC_REVOKDI - ** ioctl flag. (IRIX 5.3 doesn't.) - */ ---- fam-2.6.9/configure.in.dnotify 2002-07-16 08:23:52.000000000 +0200 -+++ fam-2.6.9/configure.in 2003-01-31 22:23:09.000000000 +0100 -@@ -100,6 +100,24 @@ - dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h syslog.h unistd.h) - - dnl -+dnl Test for the linux dnotify fcntl -+dnl -+AC_MSG_CHECKING([for dnotify fcntl support]) -+fam_save_cppflags="$CPPFLAGS" -+CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" -+AC_TRY_COMPILE([ -+#define _GNU_SOURCE -+#include <fcntl.h> -+#include <unistd.h> -+], -+[ int fd = 1; -+ fcntl (fd, F_NOTIFY, (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB)|DN_MULTISHOT); -+], have_dnotify=yes, have_dnotify=no) -+use_dnotify=false -+CPPFLAGS="$pango_save_cppflags" -+AC_MSG_RESULT($have_dnotify) -+ -+dnl - dnl See if imon is available; if so, is it IRIX or Linux? - dnl - if test `uname` = 'IRIX' || test `uname` = 'IRIX64'; then -@@ -122,11 +140,17 @@ - if test "$have_imon" != "yes"; then - have_imon=no - AC_DEFINE(HAVE_IMON, 0) -+ if test "$have_dnotify" = "yes"; then -+ AC_DEFINE(USE_DNOTIFY) -+ use_dnotify=true -+ fi - IMON_FUNCS=IMonNone - fi -+AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify) - AC_SUBST(IMON_FUNCS) - echo "Using imon support module $IMON_FUNCS" - -+ - AC_CHECK_HEADER(sys/statvfs.h, [AC_DEFINE(HAVE_STATVFS, 1) have_statvfs="yes"], [AC_DEFINE(HAVE_STATVFS, 0) have_statvfs="no"]) - AC_CHECK_HEADER(sys/syssgi.h, AC_DEFINE(HAVE_SYSSGI, 1), AC_DEFINE(HAVE_SYSSGI, 0)) - AC_CHECK_HEADER(sys/fs/nfs_clnt.h, AC_DEFINE(HAVE_SYS_FS_NFS_CLNT_H, 1), AC_DEFINE(HAVE_SYS_FS_NFS_CLNT_H, 0)) -@@ -580,7 +604,7 @@ - dnl - dnl fam is a good deal less interesting without imon. - dnl --if test "$have_imon" != 'yes'; then -+if test "$have_imon" != 'yes' -a "$have_dnotify" != 'yes'; then - cat << EOF - - ****************************************************************** diff --git a/app-admin/fam-oss/files/fam b/app-admin/fam-oss/files/fam deleted file mode 100644 index bb9745d9b409..000000000000 --- a/app-admin/fam-oss/files/fam +++ /dev/null @@ -1,21 +0,0 @@ -#!/sbin/runscript -# Copyright 1999-2003 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/fam-oss/files/fam,v 1.5 2003/02/14 22:01:30 vapier Exp $ - -depend() { - need portmap -} - -start() { - ebegin "Starting fam" - start-stop-daemon --start --quiet --exec /usr/bin/fam --background \ - -- -T 0 -c /etc/fam.conf - eend $? -} - -stop() { - ebegin "Stopping fam" - start-stop-daemon --stop --quiet --exec /usr/bin/fam - eend $? -} diff --git a/app-admin/fam-oss/files/fam-2.6.7-cleanup.patch b/app-admin/fam-oss/files/fam-2.6.7-cleanup.patch deleted file mode 100644 index 711ccd8c4227..000000000000 --- a/app-admin/fam-oss/files/fam-2.6.7-cleanup.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- fam-2.6.7/fam/Listener.c++.cleanup Mon Dec 17 20:03:37 2001 -+++ fam-2.6.7/fam/Listener.c++ Tue Jan 15 11:44:45 2002 -@@ -287,10 +287,18 @@ - // Keep the scheduler from helpfully cleaning this up. - Scheduler::remove_onetime_task(cleanup_negotiation, nc); - -+ // Remove the temp file -+ uid_t preveuid = geteuid(); -+ if (preveuid) seteuid(0); -+ seteuid(nc->uid); -+ unlink(nc->sun.sun_path); -+ if (nc->uid) seteuid(0); -+ seteuid(preveuid); -+ - Log::debug("client fd %d is local/trusted (socket %s, uid %d).", - client_fd, nc->sun.sun_path, nc->uid); - Cred cred(nc->uid, client_fd); -- new LocalClient(client_fd, &(nc->sun), cred); -+ new LocalClient(client_fd, cred); - // We don't need a reference to this object. The constructor - // takes care of registering it with the Scheduler. - ---- fam-2.6.7/fam/LocalClient.c++.cleanup Mon Dec 17 20:03:37 2001 -+++ fam-2.6.7/fam/LocalClient.c++ Tue Jan 15 11:43:04 2002 -@@ -29,17 +29,12 @@ - #include "Log.h" - #include "Cred.h" - --LocalClient::LocalClient(int fd, const struct sockaddr_un *addr, Cred &cred) -+LocalClient::LocalClient(int fd, Cred &cred) - : TCP_Client(LOCALHOST(), fd, cred) - { - assert(cred.is_valid()); -- sun.sun_family = AF_UNIX; -- strncpy(sun.sun_path, addr->sun_path, sizeof(sun.sun_path)); -- sun.sun_path[sizeof(sun.sun_path) - 1] = '\0'; - } - - LocalClient::~LocalClient() - { -- if (geteuid() != cred.uid()) cred.become_user(); -- unlink(sun.sun_path); - } ---- fam-2.6.7/fam/LocalClient.h.cleanup Mon Dec 17 20:03:37 2001 -+++ fam-2.6.7/fam/LocalClient.h Tue Jan 15 11:43:04 2002 -@@ -33,13 +33,8 @@ - - public: - -- LocalClient(int fd, const struct sockaddr_un *addr, Cred &cred); -+ LocalClient(int fd, Cred &cred); - ~LocalClient(); -- --private: -- -- struct sockaddr_un sun; -- - }; - - #endif /* !RemoteClient_included */ diff --git a/app-admin/fam-oss/files/fam-oss-2.6.10-largefile.patch b/app-admin/fam-oss/files/fam-oss-2.6.10-largefile.patch deleted file mode 100644 index d3312a0879af..000000000000 --- a/app-admin/fam-oss/files/fam-oss-2.6.10-largefile.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- fam-2.6.9/common.am Tue Jul 16 01:23:24 2002 -+++ fam-2.6.9-largefile/common.am Mon Oct 28 16:21:55 2002 -@@ -4,7 +4,9 @@ - AUTOMAKE_OPTIONS=no-dependencies - - # why couldn't CONFIG_ETC_CONFIG_PATH be defined in config.h??? --INCLUDES = @FAMPROTOINC@ -DCONFIG_ETC_CONFIG_PATH=\"@FAM_CONF@\" -+INCLUDES = @FAMPROTOINC@ -DCONFIG_ETC_CONFIG_PATH=\"@FAM_CONF@\" \ -+ -D_FILE_OFFSET_BITS=64 \ -+ -D_LARGEFILE64_SOURCE - - # should this be set by the configure script? - EDITCONF = perl $(top_srcdir)/util/editconf/editconf.perl diff --git a/app-admin/fam-oss/files/fam-oss-2.6.10-nostatvfs.patch b/app-admin/fam-oss/files/fam-oss-2.6.10-nostatvfs.patch deleted file mode 100644 index 46783ea4f89f..000000000000 --- a/app-admin/fam-oss/files/fam-oss-2.6.10-nostatvfs.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -urN fam-2.6.10/configure.in fam-2.6.10-modified/configure.in ---- fam-2.6.10/configure.in 2003-07-30 16:28:14.000000000 -0500 -+++ fam-2.6.10-modified/configure.in 2003-07-30 16:28:59.000000000 -0500 -@@ -151,35 +151,11 @@ - echo "Using imon support module $IMON_FUNCS" - - --AC_CHECK_HEADER(sys/statvfs.h, [AC_DEFINE(HAVE_STATVFS, 1) have_statvfs="yes"], [AC_DEFINE(HAVE_STATVFS, 0) have_statvfs="no"]) - AC_CHECK_HEADER(sys/syssgi.h, AC_DEFINE(HAVE_SYSSGI, 1), AC_DEFINE(HAVE_SYSSGI, 0)) - AC_CHECK_HEADER(sys/fs/nfs_clnt.h, AC_DEFINE(HAVE_SYS_FS_NFS_CLNT_H, 1), AC_DEFINE(HAVE_SYS_FS_NFS_CLNT_H, 0)) - --dnl Linux has statvfs, but its f_fsid is a struct, and SmallTable can't --dnl be instantiated for it because there's no > or < operator for it yet. --dnl fam does work without the fs_by_id table, so we'll pretend we don't --dnl have statvfs for now. This should be fixed, though. --if test `uname` != 'IRIX' && test `uname` != 'IRIX64'; then -- AC_DEFINE(HAVE_STATVFS, 0) -- have_statvfs="no" --fi --dnl dnl --dnl dnl If we have statvfs, test for fsid_t. --dnl dnl --dnl if test "$have_statvfs" = "yes"; then --dnl for fsid_t in ulong_t fsid_t __fsid_t; do --dnl AC_MSG_CHECKING([sys/statvfs.h for $fsid_t fsid]) --dnl AC_TRY_COMPILE([#include <sys/statvfs.h>], [struct statvfs s; $fsid_t i = s.f_fsid;], have_fsid_t=yes, have_fsid_t=no) --dnl AC_MSG_RESULT($have_fsid_t) --dnl if test "$have_fsid_t" = "yes"; then --dnl AC_DEFINE_UNQUOTED(CONFIG_FSID_T, $fsid_t) --dnl break --dnl fi --dnl done --dnl if test "$have_fsid_t" != "yes"; then --dnl AC_MSG_ERROR([Have sys/statvfs.h, but couldn't get statvfs.f_fsid type]) --dnl fi --dnl fi -+AC_DEFINE(HAVE_STATVFS, 0) -+have_statvfs="no" - - dnl - dnl Test for SGI_NOHANG in syssgi.h diff --git a/app-admin/fam-oss/files/fam-oss-2.6.9-gcc3.patch b/app-admin/fam-oss/files/fam-oss-2.6.9-gcc3.patch deleted file mode 100644 index ca631a1537e6..000000000000 --- a/app-admin/fam-oss/files/fam-oss-2.6.9-gcc3.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- fam-2.6.7/fam/Scheduler.h.gcc31 2002-05-16 15:24:43.000000000 -0400 -+++ fam-2.6.7/fam/Scheduler.h 2002-05-16 15:24:48.000000000 -0400 -@@ -104,7 +104,7 @@ - // for the corresponding I/O type. - - struct IOTypeInfo { -- FDInfo::FDIOHandler FDInfo::*const iotype; -+ FDInfo::FDIOHandler FDInfo::* iotype; - unsigned int nbitsset; // number of bits set in fds - fd_set fds; - IOTypeInfo(FDInfo::FDIOHandler FDInfo::* a_iotype) : diff --git a/app-admin/fam-oss/files/fam-oss-2.6.9-largefile.patch b/app-admin/fam-oss/files/fam-oss-2.6.9-largefile.patch deleted file mode 100644 index d3312a0879af..000000000000 --- a/app-admin/fam-oss/files/fam-oss-2.6.9-largefile.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- fam-2.6.9/common.am Tue Jul 16 01:23:24 2002 -+++ fam-2.6.9-largefile/common.am Mon Oct 28 16:21:55 2002 -@@ -4,7 +4,9 @@ - AUTOMAKE_OPTIONS=no-dependencies - - # why couldn't CONFIG_ETC_CONFIG_PATH be defined in config.h??? --INCLUDES = @FAMPROTOINC@ -DCONFIG_ETC_CONFIG_PATH=\"@FAM_CONF@\" -+INCLUDES = @FAMPROTOINC@ -DCONFIG_ETC_CONFIG_PATH=\"@FAM_CONF@\" \ -+ -D_FILE_OFFSET_BITS=64 \ -+ -D_LARGEFILE64_SOURCE - - # should this be set by the configure script? - EDITCONF = perl $(top_srcdir)/util/editconf/editconf.perl |