]> git.pld-linux.org Git - packages/fam.git/commitdiff
- obsoleted by gamin (after 3 years I changed my mind) master
authorJan Rękorajski <baggins@pld-linux.org>
Fri, 24 Oct 2008 19:38:45 +0000 (19:38 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
- see last commit to fam.spec for details

Changed files:
    fam-cleanup.patch -> 1.3
    fam-dnotify.patch -> 1.6
    fam-gcc34.patch -> 1.3
    fam-gcc4.patch -> 1.3
    fam-paths.patch -> 1.3
    fam.inetd -> 1.6
    fam.init -> 1.7
    fam.sysconfig -> 1.3

fam-cleanup.patch [deleted file]
fam-dnotify.patch [deleted file]
fam-gcc34.patch [deleted file]
fam-gcc4.patch [deleted file]
fam-paths.patch [deleted file]
fam.inetd [deleted file]
fam.init [deleted file]
fam.sysconfig [deleted file]

diff --git a/fam-cleanup.patch b/fam-cleanup.patch
deleted file mode 100644 (file)
index 176e95e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
---- fam-2.6.7/src/Listener.c++.cleanup Mon Dec 17 20:03:37 2001
-+++ fam-2.6.7/src/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/src/LocalClient.c++.cleanup      Mon Dec 17 20:03:37 2001
-+++ fam-2.6.7/src/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/src/LocalClient.h.cleanup        Mon Dec 17 20:03:37 2001
-+++ fam-2.6.7/src/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/fam-dnotify.patch b/fam-dnotify.patch
deleted file mode 100644 (file)
index 8644312..0000000
+++ /dev/null
@@ -1,1121 +0,0 @@
---- /dev/null  2003-09-15 15:40:47.000000000 +0200
-+++ fam-2.6.10/src/DNotify.c++ 2004-02-04 11:13:04.000000000 +0100
-@@ -0,0 +1,655 @@
-+//  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;
-+    int n_dir_watches;
-+    dev_t file_dev;
-+    ino_t file_ino;
-+    FileWatch *hash_link;
-+    
-+    FileWatch(void) {
-+      dir_watch = 0;
-+      n_dir_watches = 0;
-+    }
-+
-+    void add_dir_watch (DirWatch *w);
-+    bool has_dir_watch (DirWatch *w);
-+};
-+
-+
-+struct DNotify::DirWatch
-+{
-+    class FileWatchList {
-+    public:
-+      struct Node {
-+          FileWatch *watch;
-+          Node *next;
-+      };
-+      
-+      Node *first;
-+
-+      FileWatchList(void) {
-+          first = 0;
-+      }
-+      
-+      void prepend(FileWatch *watch);
-+      void remove(FileWatch *watch);
-+      bool empty(void);
-+      int len(void);
-+      
-+    };
-+    
-+    dev_t dir_dev;
-+    ino_t dir_ino;
-+    int fd;
-+
-+    DirWatch *hash_link;
-+    FileWatchList file_watches;
-+};
-+
-+struct DNotify::ChangeEventData
-+{
-+    dev_t file_dev;
-+    ino_t file_ino;
-+};    
-+
-+bool
-+DNotify::FileWatch::has_dir_watch (DirWatch *w)
-+{
-+    int i;
-+
-+    for (i = 0; i < n_dir_watches; i++) {
-+      if (dir_watch[i] == w)
-+          return true;
-+    }
-+    return false;
-+}
-+
-+
-+void
-+DNotify::FileWatch::add_dir_watch (DirWatch *w)
-+{
-+    n_dir_watches++;
-+    dir_watch = (DirWatch **)realloc (dir_watch, n_dir_watches*sizeof(DirWatch *));
-+    dir_watch[n_dir_watches-1] = w;
-+}
-+
-+bool
-+DNotify::DirWatch::FileWatchList::empty(void)
-+{
-+    return first == 0;
-+}
-+
-+int
-+DNotify::DirWatch::FileWatchList::len(void)
-+{
-+    int i;
-+    Node *n;
-+
-+    i = 0;
-+    n = first;
-+    while (n) {
-+      i++;
-+      n = n->next;
-+    }
-+    
-+    return i;
-+}
-+
-+
-+void
-+DNotify::DirWatch::FileWatchList::prepend(FileWatch *watch)
-+{
-+    Node *node;
-+
-+    node = new Node;
-+    node->watch = watch;
-+    node->next = first;
-+    
-+    first = node;
-+}
-+
-+void
-+DNotify::DirWatch::FileWatchList::remove(FileWatch *watch) {
-+    Node *l, *prev;
-+    
-+    l = first;
-+    prev = 0;
-+    while (l) {
-+      if (l->watch == watch) {
-+          if (prev)
-+              prev->next = l->next;
-+          else
-+              first = l->next;
-+          
-+          delete l;
-+          break;
-+      }
-+      prev = l;
-+      l = prev->next;
-+    }
-+}
-+
-+
-+DNotify::DNotify(EventHandler h)
-+{
-+    assert(ehandler == 0);
-+    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 = 0;
-+}
-+
-+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 0;
-+}
-+
-+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 = 0;
-+}
-+
-+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 = 0;
-+}
-+
-+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 *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->hash_link = 0;
-+      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);
-+    }
-+    
-+    fw = lookup_filewatch(file_dev, file_ino);
-+    if (fw)  {
-+      if (!fw->has_dir_watch(dwatch)) {
-+          fw->add_dir_watch(dwatch);
-+          dwatch->file_watches.prepend(fw);
-+      }
-+      return OK;
-+    }
-+    
-+    // No old FileWatch, need to add one:
-+    Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino);
-+    fw = new FileWatch;
-+    fw->add_dir_watch(dwatch);
-+    dwatch->file_watches.prepend(fw);
-+    fw->file_dev = file_dev;
-+    fw->file_ino = file_ino;
-+    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 == 0) {
-+      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;
-+    int i;
-+    
-+    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 == 0)
-+      return BAD;
-+
-+    // 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);
-+    for (i = 0; i < fwatch->n_dir_watches; i++) {
-+      dwatch = fwatch->dir_watch[i];
-+      dwatch->file_watches.remove (fwatch);
-+
-+      if (dwatch->file_watches.empty()) {
-+          Log::debug ("Destroying DirWatch for (%x %x)\n",
-+                      (int)dwatch->dir_dev, (int)dwatch->dir_ino);
-+          close(dwatch->fd);
-+          unhash_dirwatch(dwatch);
-+          delete dwatch;
-+      }
-+    }
-+    unhash_filewatch(fwatch);
-+    delete fwatch;
-+  
-+    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;
-+                  DirWatch::FileWatchList::Node *n;
-+                  
-+                  Log::debug("dnotify said dev %d/%d, ino %ld changed",
-+                             major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino);
-+                  
-+                  n_watches = dw->file_watches.len();
-+                  data = new ChangeEventData[n_watches];
-+                  
-+                  i = 0;
-+                  for (n=dw->file_watches.first; n; n=n->next) {
-+                      data[i].file_dev = n->watch->file_dev;
-+                      data[i].file_ino = n->watch->file_ino;
-+                      i++;
-+                  }
-+                  assert(i == n_watches);
-+                  
-+                  for (i = 0; i < n_watches; i++) {
-+                      (*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE);
-+                  }
-+                  
-+                  delete[] data;
-+              }
-+          }
-+          last_fd = fd;
-+      }
-+    }
-+}
-+
---- /dev/null  2003-09-15 15:40:47.000000000 +0200
-+++ fam-2.6.10/src/DNotify.h   2004-02-03 18:30:26.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 = 367 };
-+    static DirWatch *dir_hash[DIR_HASHSIZE];
-+    enum { FILE_HASHSIZE = 823 };
-+    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.10/src/IMon.h.dnotify      2003-04-15 06:21:34.000000000 +0200
-+++ fam-2.6.10/src/IMon.h      2004-02-03 18:30:26.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.10/src/Interest.c++.dnotify        2003-04-15 06:21:34.000000000 +0200
-+++ fam-2.6.10/src/Interest.c++        2004-02-03 18:30:26.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(), 0);
-         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.10/src/Interest.h.dnotify  2003-04-15 06:21:34.000000000 +0200
-+++ fam-2.6.10/src/Interest.h  2004-02-03 18:30:26.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.10/src/Makefile.am.dnotify 2003-04-15 06:21:26.000000000 +0200
-+++ fam-2.6.10/src/Makefile.am 2004-02-03 18:30:26.000000000 +0100
-@@ -3,6 +3,12 @@
- sbin_PROGRAMS = famd
-+if USE_DNOTIFY
-+DNOTIFY_FILES = DNotify.c++
-+else
-+DNOTIFY_FILES =
-+endif
-+
- famd_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,7 +80,8 @@
-   main.c++ \
-   timeval.c++ \
-   timeval.h \
--  @MONITOR_FUNCS@.c++
-+  @MONITOR_FUNCS@.c++ \
-+  $(DNOTIFY_FILES)
--EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++
-+EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++
---- /dev/null  2003-09-15 15:40:47.000000000 +0200
-+++ fam-2.6.10/src/Monitor.h   2004-02-03 18:30:26.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.10/include/BTree.h.dnotify 2003-04-15 06:21:19.000000000 +0200
-+++ fam-2.6.10/include/BTree.h 2004-02-03 18:30:26.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.10/configure.ac.dnotify    2003-04-15 08:05:00.000000000 +0200
-+++ fam-2.6.10/configure.ac    2004-02-03 18:30:26.000000000 +0100
-@@ -100,6 +100,24 @@
- AC_HEADER_DIRENT
- AC_CHECK_HEADERS([fcntl.h limits.h linux/imon.h netinet/in.h rpc/rpc.h rpcsvc/mount.h stddef.h stdlib.h string.h syslog.h sys/imon.h sys/param.h sys/select.h sys/statvfs.h sys/syssgi.h sys/time.h sys/types.h sys/un.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)
-+
- if test "$have_sys_imon_h"; then
-       MONITOR_FUNCS=IMonIRIX
- elif test "$have_linux_imon_h"; then
-@@ -122,9 +140,14 @@
- elif test "$have_linux_imon_h"; then
-       MONITOR_FUNCS=IMonLinux
- else
-+      if test "$have_dnotify" = "yes"; then
-+              use_dnotify=true
-+              AC_DEFINE([USE_DNOTIFY], [1], [Define if the system has the dnotify fcntl and it's gonna be used.])
-+      fi
-       MONITOR_FUNCS=IMonNone
- fi
- AC_SUBST(MONITOR_FUNCS)
-+AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify)
- # Checks for typedefs, structures, and compiler characteristics.
- AC_HEADER_STDBOOL
diff --git a/fam-gcc34.patch b/fam-gcc34.patch
deleted file mode 100644 (file)
index 9d7deaf..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -uNr fam-2.6.10.orig/src/DNotify.c++ fam-2.6.10/src/DNotify.c++
---- fam-2.6.10.orig/src/DNotify.c++    2004-02-17 12:56:54.000000000 +0100
-+++ fam-2.6.10/src/DNotify.c++ 2004-02-17 13:00:18.321654784 +0100
-@@ -37,7 +37,7 @@
- #include "Interest.h"
- #include "Log.h"
- #include "Scheduler.h"
--#include "alloc.h"
-+#include <malloc.h>
- int DNotify::pipe_write_fd = -2;
-diff -uNr fam-2.6.10.orig/src/IMon.c++ fam-2.6.10/src/IMon.c++
---- fam-2.6.10.orig/src/IMon.c++       2003-04-15 06:21:31.000000000 +0200
-+++ fam-2.6.10/src/IMon.c++    2004-02-17 12:59:53.667402800 +0100
-@@ -42,7 +42,7 @@
- #include "Interest.h"
- #include "Log.h"
- #include "Scheduler.h"
--#include "alloc.h"
-+#include <malloc.h>
- int              IMon::imonfd = -2;
- IMon::EventHandler IMon::ehandler = NULL;
-diff -uNr fam-2.6.10.orig/lib/Client.c++ fam-2.6.10/lib/Client.c++
---- fam-2.6.10.orig/lib/Client.c++     2003-04-15 06:21:25.000000000 +0200
-+++ fam-2.6.10/lib/Client.c++  2004-02-17 12:56:54.987566264 +0100
-@@ -34,7 +34,8 @@
- #include <syslog.h>
- #include <errno.h>
--#include <iostream.h>
-+#include <iostream>
-+using namespace std;
- #include "fam.h"
- #include "Client.h"
diff --git a/fam-gcc4.patch b/fam-gcc4.patch
deleted file mode 100644 (file)
index 32e577b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
---- fam-2.7.0/src/DNotify.h.wiget      2006-02-20 13:34:22.000000000 +0100
-+++ fam-2.7.0/src/DNotify.h    2006-02-20 13:34:41.000000000 +0100
-@@ -59,8 +59,8 @@
-     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 sig_atomic_t queue_overflowed;
-+    static volatile sig_atomic_t 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;
---- fam-2.7.0/src/Interest.h.orig      2008-08-30 13:44:30.000000000 +0200
-+++ fam-2.7.0/src/Interest.h   2008-08-30 13:45:14.000000000 +0200
-@@ -81,7 +81,7 @@
- protected:
-     bool do_stat();
--    virtual void post_event(const Event&, const char * = NULL) = 0;
-+    virtual void post_event(const Event&, const char * = 0) = 0;
-     char& ci_bits()                   { return ci_char; }
-     char& dir_bits()                  { return dir_char; }
-     const char& ci_bits() const               { return ci_char; }
diff --git a/fam-paths.patch b/fam-paths.patch
deleted file mode 100644 (file)
index 2ab11f2..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -u /home/builder/rpm/BUILD/fam-2.7.0/man.orig/famd.8 man/famd.8
---- fam-2.7.0/man/famd.8       2003-01-20 02:58:11.000000000 +0200
-+++ man/famd.8 2005-12-31 12:50:49.000000000 +0200
-@@ -63,7 +63,7 @@
- files that the client can \fBstat\fR.
- .SH FILES
- .TP
--\fI/usr/local/etc/famd.conf\fR
-+\fI/etc/famd.conf\fR
- Default \fBfamd\fR configuration file.
- .SH "SEE ALSO"
- fam(3), famd.conf(5), inetd(8), portmap(8), stat(1), xinetd(8)
-diff -u /home/builder/rpm/BUILD/fam-2.7.0/man.orig/famd.conf.5 man/famd.conf.5
---- fam-2.7.0/man/famd.conf.5  2003-01-20 03:03:21.000000000 +0200
-+++ man/famd.conf.5    2005-12-31 12:50:49.000000000 +0200
-@@ -4,7 +4,7 @@
- .SH SYNOPSIS
- In addition to its command line options, \fBfamd\fR's behavior
- can also be controlled through its configuration file.  By
--default, this is \fI/usr/local/etc/fam.conf\fR.  The \fB\-c\fR
-+default, this is \fI/etc/fam.conf\fR.  The \fB\-c\fR
- command line option can be used to specify an alternate file.
- .SH "FILE FORMAT"
- Configuration lines are in the format \fBoption=value\fR.
diff --git a/fam.inetd b/fam.inetd
deleted file mode 100644 (file)
index 8231a42..0000000
--- a/fam.inetd
+++ /dev/null
@@ -1,13 +0,0 @@
-SERVICE_NAME=sgi_fam
-SOCK_TYPE=stream
-PROTOCOL=tcp
-FLAGS=wait
-USER=root
-GROUP=nobody
-SERVER=tcpd
-DAEMON=/usr/sbin/famd
-SERVICE_TYPE=RPC
-RPCNAME=sgi_fam
-RPCVERSION=2
-RPCNUMBER=391002
-INTERFACE=127.0.0.1
diff --git a/fam.init b/fam.init
deleted file mode 100644 (file)
index a3db612..0000000
--- a/fam.init
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-#
-# famd         FAM, the File Alteration Monitor server
-#
-# chkconfig:   345 75 25
-# description: FAM provides a daemon and an API which applications
-#              can use to be notified when specific files or directories
-#              are changed.
-# processname: famd
-# pidfile:     /var/run/famd.pid
-# config:      /etc/fam.conf
-
-
-# Source function library
-. /etc/rc.d/init.d/functions
-
-# Get network config
-. /etc/sysconfig/network
-
-# Get service config
-[ -f /etc/sysconfig/famd ] && . /etc/sysconfig/famd
-
-# Check that networking is up.
-if is_yes "${NETWORKING}"; then
-       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
-               msg_network_down "File Alteration Monitor"
-               exit 1
-       fi
-else
-       exit 0
-fi
-
-if [ "$1" != "stop" ]; then
-       check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
-fi
-
-start() {
-       # Check if the service is already running?
-       if [ ! -f /var/lock/subsys/famd ]; then
-               msg_starting "File Alteration Monitor"
-               daemon famd -T 0 $FAM_OPTS
-               RETVAL=$?
-               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/famd
-       else
-               msg_already_running "File Alteration Monitor"
-       fi
-}
-
-stop() {
-       # Stop daemons.
-       if [ -f /var/lock/subsys/famd ]; then
-               msg_stopping "File Alteration Monitor"
-               killproc famd
-               rm -f /var/lock/subsys/famd > /dev/null 2>&1
-       else
-               msg_not_running "File Alteration Monitor"
-       fi
-}
-
-RETVAL=0
-# See how we were called.
-case "$1" in
-  start)
-       start
-       ;;
-  stop)
-       stop
-       ;;
-  status)
-       status famd
-       exit $?
-       ;;
-  restart|force-reload)
-       stop
-       start
-       ;;
-  *)
-       msg_usage "$0 {start|stop|restart|force-reload|status}"
-       exit 3
-esac
-
-exit $RETVAL
diff --git a/fam.sysconfig b/fam.sysconfig
deleted file mode 100644 (file)
index 025d617..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Customized settings for FAM
-
-# Nice level for fam
-SERVICE_RUN_NICE_LEVEL="+5"
-
-# Cmdline options 
-FAM_OPTS="-L"
This page took 0.141733 seconds and 4 git commands to generate.