diff options
author | will <will@FreeBSD.org> | 2001-03-31 10:45:55 +0800 |
---|---|---|
committer | will <will@FreeBSD.org> | 2001-03-31 10:45:55 +0800 |
commit | 18abbee75cd6b31030f6108f0b5e9e86c13813f1 (patch) | |
tree | ae8571c2fbfb97c418253aa8eae970869ffc37df /devel | |
parent | 6c47603d4ccfe0ffa3fbc7febc54c0a702c6edeb (diff) | |
download | freebsd-ports-gnome-18abbee75cd6b31030f6108f0b5e9e86c13813f1.tar.gz freebsd-ports-gnome-18abbee75cd6b31030f6108f0b5e9e86c13813f1.tar.zst freebsd-ports-gnome-18abbee75cd6b31030f6108f0b5e9e86c13813f1.zip |
Add fam 2.6.4, a file alteration monitor.
PR: 25926
Submitted by: Jeremy Norris <ishmael27@home.com>
Diffstat (limited to 'devel')
-rw-r--r-- | devel/Makefile | 1 | ||||
-rw-r--r-- | devel/fam/Makefile | 29 | ||||
-rw-r--r-- | devel/fam/distinfo | 1 | ||||
-rw-r--r-- | devel/fam/files/fam.sh.sample | 20 | ||||
-rw-r--r-- | devel/fam/files/patch-Makefile.am | 33 | ||||
-rw-r--r-- | devel/fam/files/patch-freebsd | 490 | ||||
-rw-r--r-- | devel/fam/pkg-comment | 1 | ||||
-rw-r--r-- | devel/fam/pkg-descr | 4 | ||||
-rw-r--r-- | devel/fam/pkg-message | 8 | ||||
-rw-r--r-- | devel/fam/pkg-plist | 8 |
10 files changed, 595 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile index 267a540620bf..31aeb7359b0a 100644 --- a/devel/Makefile +++ b/devel/Makefile @@ -91,6 +91,7 @@ SUBDIR += elib-emacs20 SUBDIR += entity SUBDIR += f77flow + SUBDIR += fam SUBDIR += fastcrc SUBDIR += ffcall SUBDIR += fhist diff --git a/devel/fam/Makefile b/devel/fam/Makefile new file mode 100644 index 000000000000..d2aca9a81817 --- /dev/null +++ b/devel/fam/Makefile @@ -0,0 +1,29 @@ +# ports collection makefile for: fam +# Date created: 20 February 2001 +# Whom: Jeremy Norris <ishmael27@home.com> +# +# $FreeBSD$ +# + +PORTNAME= fam +PORTVERSION= 2.6.4 +CATEGORIES= devel +MASTER_SITES= ftp://oss.sgi.com/projects/fam/download/ +DISTNAME= ${PORTNAME}-oss-${PORTVERSION} + +MAINTAINER= ishmael27@home.com + +USE_AUTOMAKE= yes +USE_LIBTOOL= yes +USE_GMAKE= yes +PATCH_STRIP= -p1 +INSTALLS_SHLIB= yes + +MAN1= fam.1m +MAN3= fam.3x + +post-install: + @${INSTALL_SCRIPT} -m 751 ${FILESDIR}/fam.sh.sample ${PREFIX}/etc/rc.d/fam.sh.sample + @${CAT} ${PKGMESSAGE} + +.include <bsd.port.mk> diff --git a/devel/fam/distinfo b/devel/fam/distinfo new file mode 100644 index 000000000000..f58f12f7033b --- /dev/null +++ b/devel/fam/distinfo @@ -0,0 +1 @@ +MD5 (fam-oss-2.6.4.tar.gz) = d060919b3d9ede61a8b68eae1ded53ce diff --git a/devel/fam/files/fam.sh.sample b/devel/fam/files/fam.sh.sample new file mode 100644 index 000000000000..e1c252bdb2a0 --- /dev/null +++ b/devel/fam/files/fam.sh.sample @@ -0,0 +1,20 @@ +#!/bin/sh + +if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/$(basename $0)\$"); then + echo "$0: Cannot determine the PREFIX" >&2 + exit 1 +fi + +case "$1" in +start) + [ -x ${PREFIX}/bin/fam ] && ( ${PREFIX}/bin/fam & ) && echo -n ' fam' + ;; +stop) + killall fam && echo -n ' fam' + ;; +*) + echo "Usage: `basename $0` {start|stop}" >&2 + ;; +esac + +exit 0 diff --git a/devel/fam/files/patch-Makefile.am b/devel/fam/files/patch-Makefile.am new file mode 100644 index 000000000000..f5657e4d6f37 --- /dev/null +++ b/devel/fam/files/patch-Makefile.am @@ -0,0 +1,33 @@ +--- Makefile.am.orig Fri May 19 23:46:31 2000 ++++ Makefile.am Mon Mar 19 11:51:05 2001 +@@ -7,30 +7,3 @@ + rpm: dist + @cd build && $(MAKE) $(AM_MAKEFLAGS) rpm + +-# We proceed even if these commands fail because this might be an install +-# into $DESTDIR by a non-root user. +-install-exec-hook: +- -@if test "no$(LDCONFIG)" != "no"; then \ +-## echo "Adding $(libdir) to ld.so.conf..."; \ +- $(EDITCONF) ld.so.conf add $(DESTDIR)$(libdir) $(DESTDIR)$(libdir); \ +- exec $(LDCONFIG); \ +- fi +-## @echo "Adding fam to rpc..." +- -@$(EDITCONF) rpc add 391002 "sgi_fam 391002" +-## @echo "Adding fam to inetd.conf..." +- -@$(EDITCONF) inetd.conf add '\b(fam|FAM)\b' \ +- "# fam, the File Alteration Monitor, http://oss.sgi.com/projects/fam/" \ +- "sgi_fam/1-2 stream rpc/tcp wait root $(DESTDIR)$(bindir)/fam fam" +- @echo "Restarting inetd..." +- -@killall -HUP inetd +- +-# We don't remove $(libdir) from ld.so.conf here because we don't have +-# a way to tell whether we're the ones who added it, and other things +-# probably use it as well. +-uninstall-local: +-## @echo "Removing fam from rpc..." +- -@$(EDITCONF) rpc remove 391002 +-## @echo "Removing fam from inetd.conf..." +- -@$(EDITCONF) inetd.conf remove '\b(fam|FAM)\b' +- @echo "Restarting inetd..." +- -@killall -HUP inetd diff --git a/devel/fam/files/patch-freebsd b/devel/fam/files/patch-freebsd new file mode 100644 index 000000000000..3cdbe55c225d --- /dev/null +++ b/devel/fam/files/patch-freebsd @@ -0,0 +1,490 @@ +diff -urN fam-oss-2.6.4/config.h.in fam-oss-2.6.4-freebsd/config.h.in +--- fam-oss-2.6.4/config.h.in Sat May 20 05:50:17 2000 ++++ fam-oss-2.6.4-freebsd/config.h.in Sun Mar 18 00:02:38 2001 +@@ -12,6 +12,8 @@ + /* Define if the system has imon and IMONIOC_ ioctl flags. */ + #undef HAVE_IMON + ++#undef HAVE_MNTENT_H ++ + /* Define if the system has the struct revokdi and the IMONIOC_REVOKDI + ** ioctl flag. (IRIX 5.3 doesn't.) + */ +diff -urN fam-oss-2.6.4/configure.in fam-oss-2.6.4-freebsd/configure.in +--- fam-oss-2.6.4/configure.in Sat May 20 06:23:17 2000 ++++ fam-oss-2.6.4-freebsd/configure.in Sun Mar 18 00:36:29 2001 +@@ -95,6 +95,8 @@ + dnl AC_HEADER_SYS_WAIT + dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h syslog.h unistd.h) + ++AC_CHECK_HEADER(mntent.h, AC_DEFINE(HAVE_MNTENT_H)) ++ + dnl + dnl See if imon is available; if so, is it IRIX or Linux? + dnl +@@ -299,10 +301,10 @@ + dnl If we don't have MNTTYPE_NFS , we croak. + dnl + +-FAM_DECL_IN_MNTENT(MNTTYPE_NFS, ,AC_MSG_ERROR(Didn't find MNTTYPE_NFS in mntent.h)) +-FAM_DECL_IN_MNTENT(MNTTYPE_NFS2, AC_DEFINE(HAVE_MNTTYPE_NFS2)) +-FAM_DECL_IN_MNTENT(MNTTYPE_NFS3, AC_DEFINE(HAVE_MNTTYPE_NFS3)) +-FAM_DECL_IN_MNTENT(MNTTYPE_CACHEFS, AC_DEFINE(HAVE_MNTTYPE_CACHEFS)) ++dnl FAM_DECL_IN_MNTENT(MNTTYPE_NFS, ,AC_MSG_ERROR(Didn't find MNTTYPE_NFS in mntent.h)) ++dnl FAM_DECL_IN_MNTENT(MNTTYPE_NFS2, AC_DEFINE(HAVE_MNTTYPE_NFS2)) ++dnl FAM_DECL_IN_MNTENT(MNTTYPE_NFS3, AC_DEFINE(HAVE_MNTTYPE_NFS3)) ++dnl FAM_DECL_IN_MNTENT(MNTTYPE_CACHEFS, AC_DEFINE(HAVE_MNTTYPE_CACHEFS)) + + dnl + dnl Test for bindresvport() prototype. +diff -urN fam-oss-2.6.4/fam/Client.h fam-oss-2.6.4-freebsd/fam/Client.h +--- fam-oss-2.6.4/fam/Client.h Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/Client.h Sat Mar 17 00:14:35 2001 +@@ -23,6 +23,7 @@ + #ifndef Client_included + #define Client_included + ++#include <sys/types.h> + #include <netinet/in.h> // for in_addr + + #include "Activity.h" +diff -urN fam-oss-2.6.4/fam/FileSystem.c++ fam-oss-2.6.4-freebsd/fam/FileSystem.c++ +--- fam-oss-2.6.4/fam/FileSystem.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/FileSystem.c++ Sat Mar 17 13:18:10 2001 +@@ -22,7 +22,7 @@ + + #include "FileSystem.h" + +-#include <mntent.h> ++#include "mntent.h" + #include <string.h> + + #include "Event.h" +diff -urN fam-oss-2.6.4/fam/FileSystemTable.c++ fam-oss-2.6.4-freebsd/fam/FileSystemTable.c++ +--- fam-oss-2.6.4/fam/FileSystemTable.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/FileSystemTable.c++ Sat Mar 17 23:44:17 2001 +@@ -21,9 +21,10 @@ + // Temple Place - Suite 330, Boston MA 02111-1307, USA. + + #include <stddef.h> ++#include <stdio.h> + #include "FileSystemTable.h" + +-#include <mntent.h> ++#include "mntent.h" + #include <stdlib.h> + #include <string.h> + +@@ -255,7 +256,10 @@ + // create_fs_by_name initializes our "root" member variable. + if (!fs_by_name) + { create_fs_by_name(); ++#if !defined(__FreeBSD__) ++ /* there is no mtab "file" in freebsd! */ + mtab_watcher = new InternalClient(mtab_name, mtab_event_handler, NULL); ++#endif + } + + cr.become_user(); +diff -urN fam-oss-2.6.4/fam/IMon.c++ fam-oss-2.6.4-freebsd/fam/IMon.c++ +--- fam-oss-2.6.4/fam/IMon.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/IMon.c++ Sat Mar 17 14:06:17 2001 +@@ -34,7 +34,9 @@ + #endif + #endif + +-#include <sys/sysmacros.h> ++#if !defined(__FreeBSD__) ++# include <sys/sysmacros.h> ++#endif + #include <unistd.h> + + #include "Interest.h" +diff -urN fam-oss-2.6.4/fam/Interest.c++ fam-oss-2.6.4-freebsd/fam/Interest.c++ +--- fam-oss-2.6.4/fam/Interest.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/Interest.c++ Sat Mar 17 14:06:37 2001 +@@ -25,7 +25,9 @@ + #include <string.h> + #include <errno.h> + #include <sys/param.h> +-#include <sys/sysmacros.h> ++#if !defined(__FreeBSD__) ++# include <sys/sysmacros.h> ++#endif + + #ifdef HAVE_IRIX_XTAB_VERIFICATION + #include <stdio.h> +diff -urN fam-oss-2.6.4/fam/InternalClient.c++ fam-oss-2.6.4-freebsd/fam/InternalClient.c++ +--- fam-oss-2.6.4/fam/InternalClient.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/InternalClient.c++ Sat Mar 17 23:20:15 2001 +@@ -35,8 +35,8 @@ + { + assert(filename); + assert(h); +- assert(filename[0] == '/'); + Log::debug("%s watching %s", name(), filename); ++ assert(filename[0] == '/'); + interest = new File(filename, this, Request(0), Cred::SuperUser); + } + +diff -urN fam-oss-2.6.4/fam/Listener.c++ fam-oss-2.6.4-freebsd/fam/Listener.c++ +--- fam-oss-2.6.4/fam/Listener.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/Listener.c++ Sat Mar 17 14:12:57 2001 +@@ -22,6 +22,8 @@ + + #include "Listener.h" + ++#include <stdio.h> ++#include <stdlib.h> + #include <assert.h> + #include <fcntl.h> + #include <sys/types.h> +@@ -202,7 +204,11 @@ + // requested user and pass the name back to the client. + + char *tmpfile = tempnam("/tmp", ".fam"); ++#if defined(__FreeBSD__) ++ sockaddr_un sun = { sizeof(sockaddr_un), AF_UNIX, "" }; ++#else + sockaddr_un sun = { AF_UNIX, "" }; ++#endif + if(strlen(tmpfile) >= (sizeof(sun.sun_path) - 1)) + { + Log::error("tmpnam() too long for sun_path (%d >= %d)!", +@@ -235,7 +241,7 @@ + return; + } + +- if (chown(sun.sun_path, uid, -1) != 0) ++ if (chown(sun.sun_path, uid, (gid_t)-1) != 0) + { Log::perror("localclient chown"); + close(client_sock); + return; +@@ -271,7 +277,11 @@ + + // Get the new socket. + ++#if defined(__FreeBSD__) ++ struct sockaddr_un sun = { sizeof(sockaddr_un), AF_UNIX, "" }; ++#else + struct sockaddr_un sun = { AF_UNIX, "" }; ++#endif + CONFIG_SOCKLEN_T sunlen = sizeof(sun); + int client_fd = accept(ofd, (struct sockaddr *) &sun, &sunlen); + if (client_fd < 0) +@@ -333,7 +343,11 @@ + void + Listener::dirty_ugly_hack() + { ++#if defined(__FreeBSD__) ++ static sockaddr_un sun = { sizeof (sockaddr_un), AF_UNIX, "/tmp/.fam_socket" }; ++#else + static sockaddr_un sun = { AF_UNIX, "/tmp/.fam_socket" }; ++#endif + + int sock = socket(PF_UNIX, SOCK_STREAM, 0); + if (sock < 0) +diff -urN fam-oss-2.6.4/fam/Log.c++ fam-oss-2.6.4-freebsd/fam/Log.c++ +--- fam-oss-2.6.4/fam/Log.c++ Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/Log.c++ Sat Mar 17 14:14:31 2001 +@@ -28,6 +28,8 @@ + #include <stdlib.h> + #include <string.h> + #include <syslog.h> ++#include <sys/time.h> ++#include <sys/types.h> + #include <sys/resource.h> + #include <sys/stat.h> + #include <unistd.h> +diff -urN fam-oss-2.6.4/fam/Makefile.am fam-oss-2.6.4-freebsd/fam/Makefile.am +--- fam-oss-2.6.4/fam/Makefile.am Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/fam/Makefile.am Sat Mar 17 18:12:17 2001 +@@ -72,6 +72,7 @@ + main.c++ \ + timeval.c++ \ + timeval.h \ ++ mntent_compat.c++ \ + @IMON_FUNCS@.c++ + + EXTRA_fam_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ +diff -urN fam-oss-2.6.4/fam/Scheduler.h fam-oss-2.6.4-freebsd/fam/Scheduler.h +--- fam-oss-2.6.4/fam/Scheduler.h Sat May 20 05:46:32 2000 ++++ fam-oss-2.6.4-freebsd/fam/Scheduler.h Sat Mar 17 00:14:04 2001 +@@ -24,6 +24,7 @@ + #define Scheduler_included + + #include <sys/time.h> ++#include <string.h> + + #include "Boolean.h" + +diff -urN fam-oss-2.6.4/fam/StringTable.h fam-oss-2.6.4-freebsd/fam/StringTable.h +--- fam-oss-2.6.4/fam/StringTable.h Sat May 20 05:46:32 2000 ++++ fam-oss-2.6.4-freebsd/fam/StringTable.h Sat Mar 17 18:05:38 2001 +@@ -25,6 +25,7 @@ + + #include <assert.h> + #include <string.h> ++#include "mntent.h" + + // A StringTable maps C strings onto values. It is a cheap O(n) + // implementation, suitable only for small tables that are +diff -urN fam-oss-2.6.4/fam/mntent.h fam-oss-2.6.4-freebsd/fam/mntent.h +--- fam-oss-2.6.4/fam/mntent.h Thu Jan 1 01:00:00 1970 ++++ fam-oss-2.6.4-freebsd/fam/mntent.h Sat Mar 17 18:11:08 2001 +@@ -0,0 +1,56 @@ ++/* ++ * mntent ++ * mntent.h - compatability header for FreeBSD ++ * ++ * Copyright (c) 2001 David Rufino <daverufino@btinternet.com> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#if defined(HAVE_MNTENT_H) ++#include <mntent.h> ++#else ++#ifndef _MNTENT_H ++#define _MNTENT_H ++#include <stdio.h> ++ ++#define MOUNTED "dummy" ++ ++#define MNTTYPE_NFS "nfs" ++ ++struct mntent { ++ char *mnt_fsname; ++ char *mnt_dir; ++ char *mnt_type; ++ char *mnt_opts; ++ int mnt_freq; ++ int mnt_passno; ++}; ++ ++#define setmntent(x,y) ((FILE *)0x1) ++struct mntent *getmntent __P ((FILE *fp)); ++char *hasmntopt __P ((const struct mntent *mnt, const char *option)); ++#define endmntent(x) ((int)1) ++ ++#endif /* _MNTENT_H */ ++#endif /* HAVE_MNTENT_H */ +diff -urN fam-oss-2.6.4/fam/mntent_compat.c++ fam-oss-2.6.4-freebsd/fam/mntent_compat.c++ +--- fam-oss-2.6.4/fam/mntent_compat.c++ Thu Jan 1 01:00:00 1970 ++++ fam-oss-2.6.4-freebsd/fam/mntent_compat.c++ Sat Mar 17 23:48:07 2001 +@@ -0,0 +1,151 @@ ++/* ++ * Copyright (c) 1980, 1989, 1993, 1994 ++ * The Regents of the University of California. All rights reserved. ++ * Copyright (c) 2001 ++ * David Rufino <daverufino@btinternet.com> ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++/* most of this was ripped from the mount(3) source */ ++ ++#include "config.h" ++#include "mntent.h" ++#if !defined(HAVE_MNTENT_H) ++#include <stdlib.h> ++#include <string.h> ++#include <sys/param.h> ++#include <sys/ucred.h> ++#include <sys/mount.h> ++ ++static int pos = -1; ++static int mntsize = -1; ++static struct mntent _mntent; ++ ++char * ++hasmntopt (const struct mntent *mnt, const char *option) ++{ ++ int found; ++ char *opt, *optbuf; ++ ++ optbuf = strdup(mnt->mnt_opts); ++ found = 0; ++ for (opt = optbuf; (opt = strtok(opt, " ")) != NULL; opt = NULL) { ++ if (!strcasecmp(opt, option)) { ++ opt = opt - optbuf + mnt->mnt_opts; ++ free (optbuf); ++ return (opt); ++ } ++ } ++ free (optbuf); ++ return (NULL); ++} ++ ++static char * ++catopt (char *s0, const char *s1) ++{ ++ size_t i; ++ char *cp; ++ ++ if (s1 == NULL || *s1 == '\0') ++ return s0; ++ if (s0 && *s0) { ++ i = strlen(s0) + strlen(s1) + 1 + 1; ++ if ((cp = (char *)malloc(i)) == NULL) ++ return (NULL); ++ (void)snprintf(cp, i, "%s %s", s0, s1); ++ } else ++ cp = strdup(s1); ++ ++ if (s0) ++ free(s0); ++ return (cp); ++} ++ ++ ++static char * ++flags2opts (int flags) ++{ ++ char *res; ++ res = NULL; ++ res = catopt(res, (flags & MNT_RDONLY) ? "ro" : "rw"); ++ if (flags & MNT_SYNCHRONOUS) res = catopt(res, "sync"); ++ if (flags & MNT_NOEXEC) res = catopt(res, "noexec"); ++ if (flags & MNT_NOSUID) res = catopt(res, "nosuid"); ++ if (flags & MNT_NODEV) res = catopt(res, "nodev"); ++ if (flags & MNT_UNION) res = catopt(res, "union"); ++ if (flags & MNT_ASYNC) res = catopt(res, "async"); ++ if (flags & MNT_NOATIME) res = catopt(res, "noatime"); ++ if (flags & MNT_NOCLUSTERR) res = catopt(res, "noclusterr"); ++ if (flags & MNT_NOCLUSTERW) res = catopt(res, "noclusterw"); ++ if (flags & MNT_NOSYMFOLLOW) res = catopt(res, "nosymfollow"); ++ if (flags & MNT_SUIDDIR) res = catopt(res, "suiddir"); ++ ++ return res; ++} ++ ++static struct mntent * ++statfs_to_mntent (struct statfs *mntbuf) ++{ ++ static char opts_buf[40], *tmp; ++ ++ _mntent.mnt_fsname = mntbuf->f_mntfromname; ++ _mntent.mnt_dir = mntbuf->f_mntonname; ++ _mntent.mnt_type = mntbuf->f_fstypename; ++ tmp = flags2opts (mntbuf->f_flags); ++ if (tmp) { ++ opts_buf[sizeof(opts_buf)-1] = '\0'; ++ strncpy (opts_buf, tmp, sizeof(opts_buf)-1); ++ free (tmp); ++ } else { ++ *opts_buf = '\0'; ++ } ++ _mntent.mnt_opts = opts_buf; ++ _mntent.mnt_freq = _mntent.mnt_passno = 0; ++ return (&_mntent); ++} ++ ++struct mntent * ++getmntent (FILE *fp) ++{ ++ struct statfs *mntbuf; ++ ++ if (pos == -1 || mntsize == -1) ++ mntsize = getmntinfo (&mntbuf, MNT_NOWAIT); ++ ++ ++pos; ++ if (pos == mntsize) { ++ pos = mntsize = -1; ++ return (NULL); ++ } ++ ++ return (statfs_to_mntent (&mntbuf[pos])); ++} ++ ++#endif /* HAVE_MNTENT_H */ +diff -urN fam-oss-2.6.4/libfam/Client.c++ fam-oss-2.6.4-freebsd/libfam/Client.c++ +--- fam-oss-2.6.4/libfam/Client.c++ Sat May 20 05:46:32 2000 ++++ fam-oss-2.6.4-freebsd/libfam/Client.c++ Sat Mar 17 00:12:01 2001 +@@ -20,6 +20,7 @@ + // with this program; if not, write the Free Software Foundation, Inc., 59 + // Temple Place - Suite 330, Boston MA 02111-1307, USA. + ++#include <stdio.h> + #include <stdlib.h> + #include <unistd.h> + #include <netinet/in.h> +diff -urN fam-oss-2.6.4/libfam/fam.c++ fam-oss-2.6.4-freebsd/libfam/fam.c++ +--- fam-oss-2.6.4/libfam/fam.c++ Sat May 20 05:46:32 2000 ++++ fam-oss-2.6.4-freebsd/libfam/fam.c++ Sat Mar 17 00:12:43 2001 +@@ -21,6 +21,7 @@ + // Temple Place - Suite 330, Boston MA 02111-1307, USA. + + #include <sys/types.h> ++#include <rpc/rpc.h> + #include <sys/time.h> + #include <unistd.h> + #include <stdlib.h> +diff -urN fam-oss-2.6.4/test/test.c++ fam-oss-2.6.4-freebsd/test/test.c++ +--- fam-oss-2.6.4/test/test.c++ Sat May 20 05:46:32 2000 ++++ fam-oss-2.6.4-freebsd/test/test.c++ Sat Mar 17 18:39:23 2001 +@@ -1,6 +1,7 @@ + #include <sys/types.h> + #include <sys/time.h> + #include <stdio.h> ++#include <string.h> + #include <unistd.h> + #include <signal.h> + #include <errno.h> +--- fam-oss-2.6.4/acconfig.h Sat May 20 05:46:31 2000 ++++ fam-oss-2.6.4-freebsd/acconfig.h Sun Mar 18 00:40:47 2001 +@@ -44,6 +44,8 @@ + ** Otherwise, we'll use MNTTYPE_NFS. */ + #undef HAVE_FSID_NFS2 + ++#undef HAVE_MNTENT_H ++ + /* Define if we have MNTTYPE_NFS2 */ + #define HAVE_MNTTYPE_NFS2 0 + diff --git a/devel/fam/pkg-comment b/devel/fam/pkg-comment new file mode 100644 index 000000000000..1a5ede04fee3 --- /dev/null +++ b/devel/fam/pkg-comment @@ -0,0 +1 @@ +A file alteration monitor diff --git a/devel/fam/pkg-descr b/devel/fam/pkg-descr new file mode 100644 index 000000000000..4cc0120e6781 --- /dev/null +++ b/devel/fam/pkg-descr @@ -0,0 +1,4 @@ +FAM, the File Alteration Monitor, provides an API which applications can use +to be notified when specific files or directories are changed. + +WWW: http://oss.sgi.com/projects/fam/ diff --git a/devel/fam/pkg-message b/devel/fam/pkg-message new file mode 100644 index 000000000000..d28d68afc971 --- /dev/null +++ b/devel/fam/pkg-message @@ -0,0 +1,8 @@ +************************************************************************ + +In order to run this port, please add the following line to /etc/rpc if +it is not already there: + +sgi_fam 391002 + +************************************************************************ diff --git a/devel/fam/pkg-plist b/devel/fam/pkg-plist new file mode 100644 index 000000000000..a02f68433089 --- /dev/null +++ b/devel/fam/pkg-plist @@ -0,0 +1,8 @@ +bin/fam +etc/fam.conf +include/fam.h +lib/fam/editconf.perl +lib/libfam.a +lib/libfam.so +lib/libfam.so.0 +@dirrm lib/fam |