[csw-devel] SF.net SVN: gar:[10214] csw/mgar/pkg/fam/trunk

dmichelsen at users.sourceforge.net dmichelsen at users.sourceforge.net
Mon Jun 14 17:15:07 CEST 2010


Revision: 10214
          http://gar.svn.sourceforge.net/gar/?rev=10214&view=rev
Author:   dmichelsen
Date:     2010-06-14 15:15:06 +0000 (Mon, 14 Jun 2010)

Log Message:
-----------
fam: Add existing patches

Modified Paths:
--------------
    csw/mgar/pkg/fam/trunk/Makefile
    csw/mgar/pkg/fam/trunk/checksums

Added Paths:
-----------
    csw/mgar/pkg/fam/trunk/files/fam-oss-01.patch
    csw/mgar/pkg/fam/trunk/files/fam-oss-02.patch

Modified: csw/mgar/pkg/fam/trunk/Makefile
===================================================================
--- csw/mgar/pkg/fam/trunk/Makefile	2010-06-14 13:37:37 UTC (rev 10213)
+++ csw/mgar/pkg/fam/trunk/Makefile	2010-06-14 15:15:06 UTC (rev 10214)
@@ -14,6 +14,10 @@
 MASTER_SITES = ftp://oss.sgi.com/projects/fam/download/stable/
 DISTFILES  = $(GARNAME)-$(GARVERSION).tar.gz
 
+# Taken from http://pkgbuild.svn.sourceforge.net/viewvc/pkgbuild/spec-files-extra/trunk/patches/
+PATCHFILES  = fam-oss-01.patch
+PATCHFILES += fam-oss-02.patch
+
 # We define upstream file regex so we can be notifed of new upstream software release
 UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz
 

Modified: csw/mgar/pkg/fam/trunk/checksums
===================================================================
--- csw/mgar/pkg/fam/trunk/checksums	2010-06-14 13:37:37 UTC (rev 10213)
+++ csw/mgar/pkg/fam/trunk/checksums	2010-06-14 15:15:06 UTC (rev 10214)
@@ -1 +1,3 @@
 1bf3ae6c0c58d3201afc97c6a4834e39  fam-2.7.0.tar.gz
+2126d989c423c9bd469ef36e1f84cbb8  fam-oss-01.patch
+c96f6c5f57e0baaa3d1c44fd4c8628b9  fam-oss-02.patch

Added: csw/mgar/pkg/fam/trunk/files/fam-oss-01.patch
===================================================================
--- csw/mgar/pkg/fam/trunk/files/fam-oss-01.patch	                        (rev 0)
+++ csw/mgar/pkg/fam/trunk/files/fam-oss-01.patch	2010-06-14 15:15:06 UTC (rev 10214)
@@ -0,0 +1,800 @@
+--- fam-2.6.10/include/BTree.h.orig	2006-03-13 09:32:01.000000000 +0530
++++ fam-2.6.10/include/BTree.h	2006-03-13 09:32:40.000000000 +0530
+@@ -236,7 +236,7 @@
+ //  to the right and returns them.
+ 
+ template <class Key, class Value>
+-BTree<Key, Value>::Closure
++struct BTree<Key, Value>::Closure
+ BTree<Key, Value>::Node::remove(unsigned j)
+ {
+     Key k = key[j];
+@@ -348,7 +348,7 @@
+ }
+ 
+ template <class Key, class Value>
+-BTree<Key, Value>::Closure
++struct BTree<Key, Value>::Closure
+ BTree<Key, Value>::Node::next(const Key& pred) const
+ {
+     if (!this)
+@@ -404,7 +404,7 @@
+ //  nodes as necessary on the way back.
+ 
+ template <class Key, class Value>
+-BTree<Key, Value>::Closure
++struct BTree<Key, Value>::Closure
+ BTree<Key, Value>::insert(Node *p, const Key& key, const Value& value)
+ {
+     if (!p) return Closure(key, value, NULL);
+@@ -499,7 +499,7 @@
+ //  Returns UNDER if node p is too small afterward, OK otherwise.
+ 
+ template <class Key, class Value>
+-BTree<Key, Value>::Status
++struct BTree<Key, Value>::Status
+ BTree<Key, Value>::underflow(Node *p, unsigned i)
+ {
+     assert(p);
+@@ -557,7 +557,7 @@
+ 
+ 
+ template <class Key, class Value>
+-BTree<Key, Value>::Closure
++struct BTree<Key, Value>::Closure
+ BTree<Key, Value>::remove_rightmost(Node *p)
+ {
+     int i = p->n;
+@@ -587,7 +587,7 @@
+ //  back up.
+ 
+ template <class Key, class Value>
+-BTree<Key, Value>::Status
++struct BTree<Key, Value>::Status
+ BTree<Key, Value>::remove(Node *p, const Key& key)
+ {
+     if (!p)
+--- fam-2.6.10/include/fam.h.orig	2006-03-13 09:36:21.000000000 +0530
++++ fam-2.6.10/include/fam.h	2006-03-13 11:30:53.000000000 +0530
+@@ -308,6 +308,11 @@
+ 
+ int FAMDebugLevel(FAMConnection *fc, int debugLevel);
+ 
++#if defined(__sun) || defined(__sun__)
++#include <inttypes.h>
++typedef uint32_t u_int32_t;
++#endif
++
+ #ifdef __cplusplus
+ }
+ #endif
+--- fam-2.6.10/fam/ClientConnection.c++.orig	2006-03-13 11:13:44.000000000 +0530
++++ fam-2.6.10/fam/ClientConnection.c++	2006-03-13 11:14:04.000000000 +0530
+@@ -57,7 +57,7 @@
+ }
+ 
+ void
+-ClientConnection::send_sockaddr_un(const sockaddr_un &sun)
++ClientConnection::send_sockaddr_un(const sockaddr_un &sun1)
+ {
+-    mprintf("%s", sun.sun_path);
++    mprintf("%s", sun1.sun_path);
+ }
+--- fam-2.6.10/fam/ServerHost.h.orig	2006-03-13 13:59:35.000000000 +0530
++++ fam-2.6.10/fam/ServerHost.h	2006-03-13 14:00:57.000000000 +0530
+@@ -23,6 +23,11 @@
+ #ifndef ServerHost_included
+ #define ServerHost_included
+ 
++#include "config.h"
++#if defined(__sun) || defined(__sun__)
++#include <stdio.h>
++#endif
++
+ #include <limits.h>
+ #include "Boolean.h"
+ #include "ClientInterest.h"
+@@ -101,7 +106,11 @@
+     private:
+ 
+ 	Request myrequest;
++#if defined(__sun) || defined(__sun__)
++	char mypath[FILENAME_MAX];
++#else
+ 	char mypath[NAME_MAX];
++#endif
+ 
+     };
+ 
+--- fam-2.6.10/fam/NetConnection.h.orig	2006-03-13 11:15:25.000000000 +0530
++++ fam-2.6.10/fam/NetConnection.h	2006-03-13 11:16:09.000000000 +0530
+@@ -27,6 +27,10 @@
+ #include "Boolean.h"
+ #include <limits.h>
+ 
++#if defined(__sun) || defined(__sun__)
++typedef uint32_t u_int32_t;
++#endif
++
+ //  NetConnection is an abstract base class that implements an event
+ //  driven, flow controlled reliable datagram connection over an
+ //  already open stream socket.
+--- fam-2.6.10/fam/LocalClient.h.orig	2006-03-13 13:49:51.000000000 +0530
++++ fam-2.6.10/fam/LocalClient.h	2006-03-13 13:50:08.000000000 +0530
+@@ -38,7 +38,7 @@
+ 
+ private:
+ 
+-    struct sockaddr_un sun;
++    struct sockaddr_un sun1;
+ 
+ };
+ 
+--- fam-2.6.10/fam/DirectoryScanner.h.orig	2006-03-13 11:23:13.000000000 +0530
++++ fam-2.6.10/fam/DirectoryScanner.h	2006-03-13 11:28:59.000000000 +0530
+@@ -27,7 +27,12 @@
+ 
+ #include <stddef.h>
+ #include <sys/types.h>
++#if defined(__sun) || defined(__sun__)
++#include <dirent.h>
++#define direct dirent
++#else
+ #include <sys/dir.h>
++#endif
+ 
+ #include "Event.h"
+ 
+--- fam-2.6.10/fam/TCP_Client.h.orig	2006-03-13 14:01:27.000000000 +0530
++++ fam-2.6.10/fam/TCP_Client.h	2006-03-13 14:01:53.000000000 +0530
+@@ -53,7 +53,7 @@
+     virtual void enqueue_scanner(Scanner *);
+     virtual void suggest_insecure_compat(const char *path);
+ 
+-    void send_sockaddr_un(sockaddr_un &sun) { conn.send_sockaddr_un(sun); }
++    void send_sockaddr_un(sockaddr_un &sun1) { conn.send_sockaddr_un(sun1); }
+ 
+ protected:
+     Cred cred;  //  if !is_valid, we believe the uid/gid in each client request.
+--- fam-2.6.10/fam/SmallTable.h.orig	2006-03-13 11:18:02.000000000 +0530
++++ fam-2.6.10/fam/SmallTable.h	2006-03-13 11:17:43.000000000 +0530
+@@ -98,7 +98,7 @@
+ }
+ 
+ template <class Tkey, class Tvalue>
+-SmallTable<Tkey, Tvalue>::Closure
++struct SmallTable<Tkey, Tvalue>::Closure
+ SmallTable<Tkey, Tvalue>::position(const Tkey& key) const
+ {
+     unsigned l = 0, r = n;
+--- fam-2.6.10/fam/Directory.c++.orig	2006-03-13 11:22:11.000000000 +0530
++++ fam-2.6.10/fam/Directory.c++	2006-03-13 11:28:29.000000000 +0530
+@@ -21,12 +21,16 @@
+ //  Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ 
+ #include "Directory.h"
+-
+ #include <assert.h>
+ #include <errno.h>
+ #include <string.h>
+ #include <stdio.h>
++#if defined(__sun) || defined(__sun__)
++#include <dirent.h>
++#define direct dirent
++#else
+ #include <sys/dir.h>
++#endif
+ #include <sys/stat.h>
+ #include <sys/wait.h>
+ #include <unistd.h>
+--- fam-2.6.10/fam/FileSystem.h.orig	2006-03-13 12:15:17.000000000 +0530
++++ fam-2.6.10/fam/FileSystem.h	2006-03-13 13:14:31.000000000 +0530
+@@ -27,7 +27,14 @@
+ #include "Request.h"
+ #include "Set.h"
+ 
++#if defined(__sun) || defined(__sun__)
++struct mnttab;
++#define mntent mnttab
++
++#else
+ struct mntent;
++#endif
++
+ struct stat;
+ 
+ //  FileSystem is the abstract base class for a per-filesystem object.
+--- fam-2.6.10/fam/FileSystem.c++.orig	2006-03-13 09:13:19.000000000 +0530
++++ fam-2.6.10/fam/FileSystem.c++	2006-03-13 13:13:31.000000000 +0530
+@@ -22,7 +22,18 @@
+ 
+ #include "FileSystem.h"
+ 
+-#include <mntent.h>
++#if defined(__sun) || defined(__sun__)
++#include <stdio.h>
++#include <sys/mntent.h>
++#include <sys/mnttab.h>
++#define mnt_dir mnt_mountp
++#define mnt_fsname mnt_special
++#include <sys/mntent.h>
++
++#else
++#include <sys/mntent.h>
++#endif
++
+ #include <string.h>
+ 
+ #include "Event.h"
+--- fam-2.6.10/fam/NetConnection.c++.orig	2006-03-13 13:54:29.000000000 +0530
++++ fam-2.6.10/fam/NetConnection.c++	2006-03-13 13:55:05.000000000 +0530
+@@ -33,6 +33,10 @@
+ #include <unistd.h>
+ #include <netinet/in.h>
+ 
++#if defined(__sun) || defined(__sun__)
++#include <sys/filio.h>
++#endif
++
+ #include "Log.h"
+ #include "Scheduler.h"
+ 
+--- fam-2.6.10/fam/ClientConnection.h.orig	2006-03-13 11:13:27.000000000 +0530
++++ fam-2.6.10/fam/ClientConnection.h	2006-03-13 11:13:32.000000000 +0530
+@@ -49,7 +49,7 @@
+     ClientConnection(int fd, InputHandler, UnblockHandler, void *closure);
+ 
+     void send_event(const Event&, Request, const char *name);
+-    void send_sockaddr_un(const sockaddr_un &sun);
++    void send_sockaddr_un(const sockaddr_un &sun1);
+ 
+ protected:
+ 
+--- fam-2.6.10/fam/Scheduler.h.orig	2006-03-13 13:58:16.000000000 +0530
++++ fam-2.6.10/fam/Scheduler.h	2006-03-13 13:59:25.000000000 +0530
+@@ -23,6 +23,11 @@
+ #ifndef Scheduler_included
+ #define Scheduler_included
+ 
++#include "config.h"
++#if defined(__sun) || defined(__sun__)
++#include <memory.h>
++#endif
++
+ #include <sys/time.h>
+ #include <string.h>
+ 
+--- fam-2.6.10/fam/Log.c++.orig	2006-03-13 13:50:24.000000000 +0530
++++ fam-2.6.10/fam/Log.c++	2006-03-13 13:52:08.000000000 +0530
+@@ -264,6 +264,8 @@
+ //  New back end for assert() will log to syslog, put core file
+ //  in known directory.
+ 
++// I'm taking this out on Solaris ... -- cK
++#if !defined(__sun) && !defined(__sun__)
+ void __assert(const char *msg, const char *file, int line)
+ {
+     char *dirname = new char[strlen(Log::getName()) + 20];
+@@ -283,6 +285,7 @@
+     delete[] dirname;
+     abort();
+ }
++#endif
+ 
+ #endif /* !NDEBUG */
+ 
+--- fam-2.6.10/fam/RPC_TCP_Connector.c++.orig	2006-03-13 13:55:29.000000000 +0530
++++ fam-2.6.10/fam/RPC_TCP_Connector.c++	2006-03-13 15:45:21.000000000 +0530
+@@ -22,6 +22,10 @@
+ 
+ #include "RPC_TCP_Connector.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ #include <errno.h>
+ #include <rpc/rpc.h>
+ #include <rpc/pmap_prot.h>
+@@ -31,6 +35,15 @@
+ #include <string.h>
+ #include <netdb.h>  // for rresvport
+ 
++#if defined(__sun) || defined(__sun__)
++#include <sys/filio.h>
++#include <rpc/clnt_soc.h>
++#endif
++
++#ifdef __cplusplus
++}
++#endif
++
+ #include "Log.h"
+ #include "Scheduler.h"
+ #include "Cred.h"  // for Cred::SuperUser
+@@ -101,7 +114,11 @@
+         deactivate();
+ 	return;
+     }
++#if defined(__sun) || defined(__sun__)
++    rc = connect(fd, (sockaddr *)&address, sizeof address);
++#else
+     rc = connect(fd, (const sockaddr *)&address, sizeof address);
++#endif
+     if (rc == 0)
+     {   sockfd = fd;
+ 	write_handler(fd, this);
+@@ -123,7 +140,11 @@
+     (void) Scheduler::remove_write_handler(fd);
+     RPC_TCP_Connector *conn = (RPC_TCP_Connector *) closure;
+     assert(fd == conn->sockfd);
++#if defined(__sun) || defined(__sun__)
++    int rc = connect(fd, (sockaddr *)(&conn->address), sizeof conn->address);
++#else
+     int rc = connect(fd, (const sockaddr *)(&conn->address), sizeof conn->address);
++#endif
+     if (rc < 0 && errno != EISCONN)
+     {
+ 	Log::perror("connect");
+--- fam-2.6.10/fam/FileSystemTable.h.orig	2006-03-13 13:43:07.000000000 +0530
++++ fam-2.6.10/fam/FileSystemTable.h	2006-03-13 13:44:19.000000000 +0530
+@@ -27,6 +27,10 @@
+ #include "SmallTable.h"
+ #include "StringTable.h"
+ 
++#if defined(__sun) || defined(__sun__)
++#define MOUNTED MNTTAB
++#endif
++
+ class Cred;
+ class Event;
+ class FileSystem;
+--- fam-2.6.10/fam/Listener.c++.orig	2006-03-13 13:44:57.000000000 +0530
++++ fam-2.6.10/fam/Listener.c++	2006-03-13 13:48:23.000000000 +0530
+@@ -37,6 +37,10 @@
+ #include <sys/un.h>
+ #include <unistd.h>
+ 
++#if defined(__sun) || defined(__sun__)
++#include <stdlib.h>
++#endif
++
+ #include <errno.h>
+ 
+ #include "Log.h"
+@@ -54,7 +58,7 @@
+     NegotiatingClient(int fd, uid_t u, struct sockaddr_un *s);
+     int sock;
+     uid_t uid;
+-    struct sockaddr_un sun;
++    struct sockaddr_un sun1;
+ };
+ 
+ BTree<int, NegotiatingClient *> negotiating_clients;
+@@ -207,18 +211,18 @@
+ 
+     char *tmpfile = tempnam("/tmp", ".fam");
+ #if defined(__FreeBSD__)
+-    sockaddr_un sun = { sizeof(sockaddr_un), AF_UNIX, "" };
++    sockaddr_un sun1 = { sizeof(sockaddr_un), AF_UNIX, "" };
+ #else
+-    sockaddr_un sun = { AF_UNIX, "" };
++    sockaddr_un sun1 = { AF_UNIX, "" };
+ #endif
+-    if(strlen(tmpfile) >= (sizeof(sun.sun_path) - 1))
++    if(strlen(tmpfile) >= (sizeof(sun1.sun_path) - 1))
+     {
+         Log::error("tmpnam() too long for sun_path (%d >= %d)!",
+-                   strlen(tmpfile), sizeof(sun.sun_path) - 1);
++                   strlen(tmpfile), sizeof(sun1.sun_path) - 1);
+         free(tmpfile);
+         return;
+     }
+-    strcpy(sun.sun_path, tmpfile);
++    strcpy(sun1.sun_path, tmpfile);
+     free(tmpfile);
+ 
+     Cred::SuperUser.become_user();
+@@ -229,22 +233,22 @@
+     }
+ 
+     Log::debug("client %s said uid %d; creating %s",
+-               inet_client.name(), uid, sun.sun_path);
++               inet_client.name(), uid, sun1.sun_path);
+ 
+-    unlink(sun.sun_path);
+-    if (bind(client_sock, (sockaddr *) &sun, sizeof sun) != 0)
++    unlink(sun1.sun_path);
++    if (bind(client_sock, (sockaddr *) &sun1, sizeof sun1) != 0)
+     {   Log::perror("localclient bind");
+ 	close(client_sock);
+         return;
+     }
+ 
+-    if (chmod(sun.sun_path, 0600) != 0)
++    if (chmod(sun1.sun_path, 0600) != 0)
+     {   Log::perror("localclient chmod");
+ 	close(client_sock);
+         return;
+     }
+ 
+-    if (chown(sun.sun_path, uid, (gid_t)-1) != 0)
++    if (chown(sun1.sun_path, uid, (gid_t)-1) != 0)
+     {   Log::perror("localclient chown");
+ 	close(client_sock);
+         return;
+@@ -252,7 +256,7 @@
+ 
+     //  Since we're going to start listening on this socket, set a task
+     //  to clean it up if we don't receive a connection within 60 seconds.
+-    NegotiatingClient *nc = new NegotiatingClient(client_sock, uid, &sun);
++    NegotiatingClient *nc = new NegotiatingClient(client_sock, uid, &sun1);
+     negotiating_clients.insert(client_sock, nc);
+     timeval nto;
+     gettimeofday(&nto, NULL);
+@@ -267,9 +271,9 @@
+ 
+     Scheduler::install_read_handler(client_sock, accept_localclient, NULL);
+     Log::debug("listening for requests for uid %d on descriptor %d (%s)",
+-               uid, client_sock, sun.sun_path);
++               uid, client_sock, sun1.sun_path);
+ 
+-    inet_client.send_sockaddr_un(sun);
++    inet_client.send_sockaddr_un(sun1);
+ }
+ 
+ void
+@@ -281,12 +285,12 @@
+     // Get the new socket.
+ 
+ #if defined(__FreeBSD__)
+-    struct sockaddr_un sun = { sizeof(sockaddr_un), AF_UNIX, "" };
++    struct sockaddr_un sun1 = { sizeof(sockaddr_un), AF_UNIX, "" };
+ #else
+-    struct sockaddr_un sun = { AF_UNIX, "" };
++    struct sockaddr_un sun1 = { AF_UNIX, "" };
+ #endif
+-    CONFIG_SOCKLEN_T sunlen = sizeof(sun);
+-    int client_fd = accept(ofd, (struct sockaddr *) &sun, &sunlen);
++    CONFIG_SOCKLEN_T sunlen = sizeof(sun1);
++    int client_fd = accept(ofd, (struct sockaddr *) &sun1, &sunlen);
+     if (client_fd < 0)
+     {
+ 	Log::perror("failed to accept new client");
+@@ -297,9 +301,9 @@
+     Scheduler::remove_onetime_task(cleanup_negotiation, nc);
+ 
+     Log::debug("client fd %d is local/trusted (socket %s, uid %d).",
+-               client_fd, nc->sun.sun_path, nc->uid);
++               client_fd, nc->sun1.sun_path, nc->uid);
+     Cred cred(nc->uid, client_fd);
+-    new LocalClient(client_fd, &(nc->sun), cred);
++    new LocalClient(client_fd, &(nc->sun1), cred);
+     // We don't need a reference to this object.  The constructor
+     // takes care of registering it with the Scheduler.
+ 
+@@ -349,7 +353,7 @@
+ #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" };
++    static sockaddr_un sun1 = { AF_UNIX, "/tmp/.fam_socket" };
+ #endif
+ 
+     int sock = socket(PF_UNIX, SOCK_STREAM, 0);
+@@ -359,10 +363,10 @@
+     }
+     
+     struct stat sb;
+-    if (lstat(sun.sun_path, &sb) == 0 &&
++    if (lstat(sun1.sun_path, &sb) == 0 &&
+ 	sb.st_uid == 0 && S_ISSOCK(sb.st_mode))
+     {
+-	if (connect(sock, (sockaddr *) &sun, sizeof sun) == 0)
++	if (connect(sock, (sockaddr *) &sun1, sizeof sun1) == 0)
+ 	{   
+ 	    // Another fam is listening to /tmp/.fam_socket.
+ 	    // Pass our rendezvous fd to the other fam and
+@@ -387,13 +391,13 @@
+     //  We were unable to connect to another fam.
+     //	We'll create our own dirty ugly hack socket and accept connections.
+ 
+-    (void) unlink(sun.sun_path);
+-    if (bind(sock, (sockaddr *) &sun, sizeof sun) != 0)
++    (void) unlink(sun1.sun_path);
++    if (bind(sock, (sockaddr *) &sun1, sizeof sun1) != 0)
+     {   Log::perror("bind");
+ 	exit(1);
+     }
+ 
+-    if (chmod(sun.sun_path, 0700) != 0)
++    if (chmod(sun1.sun_path, 0700) != 0)
+     {   Log::perror("chmod");
+ 	exit(1);
+     }
+@@ -416,9 +420,9 @@
+     
+     //  Accept a new ugly connection.
+ 
+-    struct sockaddr_un sun;
+-    CONFIG_SOCKLEN_T sunlen = sizeof sun;
+-    int sock = accept(ugly, (struct sockaddr *)(&sun), &sunlen);
++    struct sockaddr_un sun1;
++    CONFIG_SOCKLEN_T sunlen = sizeof sun1;
++    int sock = accept(ugly, (struct sockaddr *)(&sun1), &sunlen);
+     if (sock < 0)
+     {   Log::perror("accept");
+ 	return;
+@@ -462,8 +466,8 @@
+ NegotiatingClient::NegotiatingClient(int fd, uid_t u, struct sockaddr_un *sunp)
+     : sock(fd), uid(u)
+ {
+-    sun.sun_family = AF_UNIX;
+-    strcpy(sun.sun_path, sunp->sun_path);
++    sun1.sun_family = AF_UNIX;
++    strcpy(sun1.sun_path, sunp->sun_path);
+ }
+ 
+ static void
+@@ -485,7 +489,7 @@
+     uid_t preveuid = geteuid();
+     if (preveuid) seteuid(0);
+     seteuid(nc->uid);
+-    unlink(nc->sun.sun_path);
++    unlink(nc->sun1.sun_path);
+     if (nc->uid) seteuid(0);
+     seteuid(preveuid);
+ 
+--- fam-2.6.10/fam/LocalClient.c++.orig	2006-03-13 13:49:04.000000000 +0530
++++ fam-2.6.10/fam/LocalClient.c++	2006-03-13 13:49:37.000000000 +0530
+@@ -33,13 +33,13 @@
+ : 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';
++    sun1.sun_family = AF_UNIX;
++    strncpy(sun1.sun_path, addr->sun_path, sizeof(sun1.sun_path));
++    sun1.sun_path[sizeof(sun1.sun_path) - 1] = '\0';
+ }
+ 
+ LocalClient::~LocalClient()
+ {
+     if (geteuid() != cred.uid()) cred.become_user();
+-    unlink(sun.sun_path);
++    unlink(sun1.sun_path);
+ }
+--- fam-2.6.10/fam/FileSystemTable.c++.orig	2006-03-13 09:13:26.000000000 +0530
++++ fam-2.6.10/fam/FileSystemTable.c++	2006-03-13 18:05:59.000000000 +0530
+@@ -23,7 +23,17 @@
+ #include <stddef.h>
+ #include "FileSystemTable.h"
+ 
+-#include <mntent.h>
++#if defined(__sun) || defined(__sun__)
++#include <stdio.h>
++#include <sys/mntent.h>
++#include <sys/mnttab.h>
++#define mnt_dir mnt_mountp
++#define mnt_fsname mnt_special
++#define mnt_type mnt_fstype
++#else
++#include <sys/mntent.h>
++#endif
++
+ #include <stdlib.h>
+ #include <string.h>
+ 
+@@ -106,7 +116,11 @@
+ 
+     //  Read /etc/mtab.
+     Cred::SuperUser.become_user();
++#if defined(__sun) || defined(__sun__)
++    FILE *mtab = fopen(mtab_name, "r");
++#else
+     FILE *mtab = setmntent(mtab_name, "r");
++#endif
+     if(mtab == NULL)
+     {
+         Log::error("couldn't open %s for reading", mtab_name);
+@@ -114,8 +128,16 @@
+         return;
+     }
+     root = NULL;
++
++#if defined(__sun) || defined(__sun__)
++    struct mnttab mmp;
++    struct mnttab *mp = &mmp;
++    for ( ; (getmntent(mtab, mp) == 0); )
++    {
++#else
+     for (mntent *mp; ((mp = getmntent(mtab)) != NULL); )
+     {
++#endif
+ 	FileSystem *fs = fs_by_name ? fs_by_name->find(mp->mnt_dir) : NULL;
+ 	if (fs && fs->matches(*mp))
+ 	{
+@@ -172,7 +194,11 @@
+ 	if (!strcmp(mp->mnt_dir, "/"))
+ 	    root = fs;
+     }
++#if defined(__sun) || defined(__sun__)
++    fclose(mtab);
++#else
+     endmntent(mtab);
++#endif
+ 
+     if(root == NULL)
+     {
+--- fam-2.6.10/fam/NFSFileSystem.c++.orig	2006-03-13 09:13:34.000000000 +0530
++++ fam-2.6.10/fam/NFSFileSystem.c++	2006-03-13 14:16:45.000000000 +0530
+@@ -24,7 +24,16 @@
+ #include "NFSFileSystem.h"
+ 
+ #include <assert.h>
++#if defined(__sun) || defined(__sun__)
++#include <unistd.h>
++#include <sys/mnttab.h>
++#include <sys/mntent.h>
++#define mnt_fsname mnt_special
++#define mnt_opts mnt_mntopts
++#else
+ #include <mntent.h>
++#endif
++
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -45,6 +54,9 @@
+     : FileSystem(mnt)
+ {
+     //  Extract the host name from the fs name.
++#if defined(__sun) || defined(__sun__)
++    long __name_max_ = sysconf(_SC_HOST_NAME_MAX);
++#endif
+ 
+     const char *fsname = mnt.mnt_fsname;
+     const char *colon = strchr(fsname, ':');
+@@ -55,13 +67,27 @@
+         assert(colon);
+         colon = fsname;
+     }
++
++#if defined(__sun) || defined(__sun__)
++    char hostname[__name_max_ + 1];
++#else
+     char hostname[NAME_MAX + 1];
++#endif
+     int hostnamelen = colon - fsname;
++
++#if defined(__sun) || defined(__sun__)
++    if(hostnamelen > __name_max_)
++    {
++        assert(hostnamelen <= __name_max_);
++        hostnamelen = __name_max_;
++    }
++#else
+     if(hostnamelen > NAME_MAX)
+     {
+         assert(hostnamelen <= NAME_MAX);
+         hostnamelen = NAME_MAX;
+     }
++#endif
+     strncpy(hostname, fsname, hostnamelen);
+     hostname[hostnamelen] = '\0';
+ 
+--- fam-2.6.10/libfam/Client.c++.orig	2006-03-13 11:11:23.000000000 +0530
++++ fam-2.6.10/libfam/Client.c++	2006-03-13 11:12:23.000000000 +0530
+@@ -129,13 +129,13 @@
+         return;
+     }
+ 
+-    struct sockaddr_un sun;
+-    memset(&sun, 0, sizeof sun);
+-    sun.sun_family = AF_UNIX;
++    struct sockaddr_un sun1;
++    memset(&sun1, 0, sizeof sun1);
++    sun1.sun_family = AF_UNIX;
+ 
+     //  We will block here, waiting for response from fam.
+     unsigned int nread = 0;
+-    char inbuf[sizeof(sun.sun_path)];
++    char inbuf[sizeof(sun1.sun_path)];
+     while(nread < sizeof(u_int32_t))
+     {
+         int rv = read(insock, inbuf + nread, sizeof(u_int32_t) - nread);
+@@ -150,7 +150,7 @@
+     u_int32_t mlen;
+     memcpy(&mlen, inbuf, sizeof(mlen));
+     mlen = ntohl(mlen);
+-    if (mlen >= sizeof(sun.sun_path))
++    if (mlen >= sizeof(sun1.sun_path))
+     {
+         close(insock);
+         sock = -8;
+@@ -169,8 +169,8 @@
+         }
+         nread += rv;
+     }
+-    strncpy(sun.sun_path, inbuf, mlen);
+-    sun.sun_path[mlen] = '\0';
++    strncpy(sun1.sun_path, inbuf, mlen);
++    sun1.sun_path[mlen] = '\0';
+ 
+     //  When we connected to the inet socket and told fam our UID, fam
+     //  created a new UNIX domain socket and sent its name to us.  Now
+@@ -182,7 +182,7 @@
+         sock = -10;
+         return;
+     }
+-    if (connect(sock, (const struct sockaddr *)&sun, sizeof(sun)) < 0)
++    if (connect(sock, (const struct sockaddr *)&sun1, sizeof(sun1)) < 0)
+     {
+         close(sock);
+         close(insock);
+--- fam-2.6.10/libfam/fam.c++.orig	2006-03-13 09:33:42.000000000 +0530
++++ fam-2.6.10/libfam/fam.c++	2006-03-13 09:37:19.000000000 +0530
+@@ -22,6 +22,9 @@
+ 
+ #include <sys/types.h>
+ #include <rpc/rpc.h>
++#if defined(__sun) || defined(__sun__)
++#include <rpc/rpcent.h>
++#endif
+ #include <sys/time.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+--- fam-2.6.10/test/test.c++.orig	2006-03-13 14:04:55.000000000 +0530
++++ fam-2.6.10/test/test.c++	2006-03-13 14:05:36.000000000 +0530
+@@ -10,6 +10,12 @@
+ //#include <fcntl.h>
+ #include "fam.h"
+ //#include "Boolean.h"
++
++#include "config.h"
++#if defined(__sun) || defined(__sun__)
++#include <memory.h>
++#endif
++
+ /* 
+ 
+ FILE test.c - simple fam test program
+--- fam-2.6.10/configure.orig	2006-03-13 09:10:44.000000000 +0530
++++ fam-2.6.10/configure	2006-03-13 09:11:42.000000000 +0530
+@@ -9800,7 +9800,7 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+-#include <mntent.h>
++#include <sys/mntent.h>
+ int
+ main ()
+ {
+@@ -9849,7 +9849,7 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+-#include <mntent.h>
++#include <sys/mntent.h>
+ int
+ main ()
+ {
+@@ -9899,7 +9899,7 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+-#include <mntent.h>
++#include <sys/mntent.h>
+ int
+ main ()
+ {
+@@ -9949,7 +9949,7 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+-#include <mntent.h>
++#include <sys/mntent.h>
+ int
+ main ()
+ {

Added: csw/mgar/pkg/fam/trunk/files/fam-oss-02.patch
===================================================================
--- csw/mgar/pkg/fam/trunk/files/fam-oss-02.patch	                        (rev 0)
+++ csw/mgar/pkg/fam/trunk/files/fam-oss-02.patch	2010-06-14 15:15:06 UTC (rev 10214)
@@ -0,0 +1,20 @@
+--- fam-2.6.10/Makefile.orig	2006-03-13 15:47:02.000000000 +0530
++++ fam-2.6.10/Makefile	2006-03-13 15:47:04.000000000 +0530
+@@ -480,7 +480,7 @@
+ 	    "#  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..."
+-	- at killall -HUP inetd
++	- at kill -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
+@@ -489,7 +489,7 @@
+ 	-@$(EDITCONF) rpc remove 391002
+ 	-@$(EDITCONF) inetd.conf remove '\b(fam|FAM)\b'
+ 	@echo "Restarting inetd..."
+-	- at killall -HUP inetd
++	- at kill -HUP inetd
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.


More information about the devel mailing list