svn commit: r321813 - in head/net/rwhoisd: . files

Mark Felder feld at FreeBSD.org
Wed Jun 26 20:22:38 UTC 2013


Author: feld
Date: Wed Jun 26 20:22:37 2013
New Revision: 321813
URL: http://svnweb.freebsd.org/changeset/ports/321813

Log:
  - Fix sample install/uninstall
  - Fix IPv6 case
  - Clean up rc script
  
  PR: ports/179964
  Approved by: crees (mentor)

Added:
  head/net/rwhoisd/files/patch-server-daemon.c   (contents, props changed)
  head/net/rwhoisd/files/patch-server-security.c   (contents, props changed)
Modified:
  head/net/rwhoisd/Makefile
  head/net/rwhoisd/files/rwhoisd.in
  head/net/rwhoisd/pkg-plist

Modified: head/net/rwhoisd/Makefile
==============================================================================
--- head/net/rwhoisd/Makefile	Wed Jun 26 20:16:55 2013	(r321812)
+++ head/net/rwhoisd/Makefile	Wed Jun 26 20:22:37 2013	(r321813)
@@ -3,7 +3,7 @@
 
 PORTNAME=	rwhoisd
 PORTVERSION=	1.5.9.6
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	net ipv6
 MASTER_SITES=	http://projects.arin.net/rwhois/ftp/ \
 		http://www.rwhois.net/ftp/ \
@@ -34,6 +34,10 @@ MAN8=		rwhois_indexer.8 rwhoisd.8
 PORTDOCS=	INSTALL.html TODO UPGRADE operations_guide.html \
 		operations_guide.txt rfc2167.txt security.html security.txt
 
+ETCFILES=	rwhoisd.allow rwhoisd.auth_area rwhoisd.conf rwhoisd.deny \
+		rwhoisd.dir rwhoisd.root rwhoisd.x.dir
+PLIST_SUB+=	ETCFILES="${ETCFILES}"
+
 .include <bsd.port.options.mk>
 
 .if empty(PORT_OPTIONS:MIPV6)
@@ -45,8 +49,6 @@ CONFIGURE_ARGS+=	--enable-largefile
 .endif
 
 post-patch:
-	@${REINPLACE_CMD} -e 's,rwhoisd/samples,rwhoisd,' \
-		${WRKSRC}/sample.data/Makefile.in
 	@${REINPLACE_CMD} -e 's,userid: rwhoisd,userid: nobody,' \
 			  -e 's,pid-file: rwhoisd.pid,pid-file: /var/run/rwhoisd/rwhoisd.pid,' \
 		${WRKSRC}/sample.data/rwhoisd.conf
@@ -54,8 +56,6 @@ post-patch:
 		${WRKSRC}/common/conf.h
 
 post-install:
-	@${MKDIR} /var/log/rwhoisd /var/run/rwhoisd
-	@${CHOWN} -R nobody /var/log/rwhoisd /var/run/rwhoisd
 	${INSTALL_MAN} ${WRKSRC}/doc/rwhois_indexer.8 ${PREFIX}/man/man8
 	${INSTALL_MAN} ${WRKSRC}/doc/rwhoisd.8 ${PREFIX}/man/man8
 .if ${PORT_OPTIONS:MDOCS}

Added: head/net/rwhoisd/files/patch-server-daemon.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/rwhoisd/files/patch-server-daemon.c	Wed Jun 26 20:22:37 2013	(r321813)
@@ -0,0 +1,190 @@
+--- server/daemon.c.orig	2005-06-01 09:20:55.000000000 +0900
++++ server/daemon.c	2013-06-26 14:51:58.000000000 +0900
+@@ -17,6 +17,8 @@
+ #include "session.h"
+ #include "sslave.h"
+
++#include <sys/select.h>
++
+ /* -------------------- Local Vars ---------------------- */
+
+ static int hup_recvd    = FALSE;
+@@ -173,17 +175,16 @@
+   signal(SIGCHLD, sigchld_handler);
+ }
+
++#define	MAXSOCK	16
++
+ int
+ run_daemon()
+ {
+-#ifdef HAVE_IPV6
+   struct sockaddr_storage client_addr;
+-  struct sockaddr_in6     server_addr;
+-#else
+-  struct sockaddr_in    client_addr;
+-  struct sockaddr_in    server_addr;
+-#endif
+-  int                   sockfd;
++  struct addrinfo hints, *res, *res0;
++  fd_set fds, fds0;
++  int			sockfd[MAXSOCK], nsock, maxsock, i;
++  char			servname[NI_MAXSERV];
+   int                   newsockfd;
+   int                   clilen;
+   int                   childpid;
+@@ -191,25 +192,39 @@
+   int                   port         = get_port();
+   int                   failure      = 0;
+
++  memset(&hints, 0, sizeof(hints));
++  hints.ai_family = PF_UNSPEC;
++  hints.ai_socktype = SOCK_STREAM;
++  hints.ai_flags = AI_PASSIVE | AI_NUMERICSERV;
++  snprintf(servname, sizeof(servname), "%d", port);
++  servname[sizeof(servname) - 1] = '\0';
++  failure = getaddrinfo(NULL, servname, &hints, &res0);
++
++  if (failure) {
++    log(L_LOG_ERR, CONFIG, "run_daemon: getaddrinfo().");
++    exit(1);
++  }
++  FD_ZERO(&fds0);
++  maxsock = nsock = 0;
++  for (res = res0; res && nsock < MAXSOCK; res = res->ai_next) {
++    if (res->ai_family != AF_INET
+ #ifdef HAVE_IPV6
+-  /* This will accept both IPv4 and IPv6 connections on any interface
+-     including the loopback so that a local client can send to us. */
+-  if ( ( sockfd = socket( AF_INET6, SOCK_STREAM, IPPROTO_TCP ) ) < 0 )
+-#else
+-  if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
++        && res->ai_family != AF_INET6
+ #endif
+-  {
+-    log(L_LOG_ERR, CONFIG, "run_daemon: Can not open socket: %s",
++    )
++      continue;
++    sockfd[nsock] = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
++    if (sockfd[nsock] < 0) {
++      log(L_LOG_ERR, CONFIG, "run_daemon: Can not open socket: %s",
+         strerror(errno));
+-    exit (1);
+-  }
+-
+-  if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one))
++      continue;
++    }
++  if (setsockopt(sockfd[nsock], SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one))
+       < 0)
+   {
+     log(L_LOG_ERR, CONFIG,
+         "run_daemon: Can not set socket options SO_REUSEADDR");
+-    exit(1);
++    continue;
+   }
+
+ #ifdef NEED_LINGER
+@@ -222,28 +237,31 @@
+                sizeof(struct linger));
+   }
+ #endif  /* NEED_LINGER */
+-
+-  /* for now, we will bind to all IP interfaces (INADDR_ANY) */
+-  /* Bind our local address so that the client can send to us */
+-  bzero((char *)&server_addr, sizeof(server_addr));
+-#ifdef HAVE_IPV6
+-  server_addr.sin6_family = AF_INET6;
+-  server_addr.sin6_port = htons(port);
+-  server_addr.sin6_addr = in6addr_any;
+-#else
+-  server_addr.sin_family = AF_INET;
+-  server_addr.sin_port = htons(port);
+-  server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+-#endif
+-
+-  if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
+-  {
+-    log(L_LOG_ERR, CONFIG, "run_daemon: Can not bind socket: %s",
+-        strerror(errno));
+-    exit(1);
++    if (bind(sockfd[nsock], res->ai_addr, res->ai_addrlen) < 0) {
++      log(L_LOG_ERR, CONFIG, "run_daemon: Can not bind socket: %s",
++          strerror(errno));
++      close(sockfd[nsock]);
++      sockfd[nsock] = -1;
++      continue;
++    }
++    if (listen(sockfd[nsock], get_listen_queue_length()) == -1) {
++      log(L_LOG_ERR, CONFIG, "run_daemon: listen: %s",
++          strerror(errno));
++      close(sockfd[nsock]);
++      sockfd[nsock] = -1;
++      continue;
++    }
++    FD_SET(sockfd[nsock], &fds0);
++    if (maxsock < sockfd[nsock])
++      maxsock = sockfd[nsock];
++    nsock++;
+   }
++  freeaddrinfo(res0);
+
+-  listen(sockfd, get_listen_queue_length());
++  if (nsock == 0) {
++    log(L_LOG_ERR, CONFIG, "run_daemon: Can not open socket");
++    exit (1);
++  }
+
+   no_zombies();
+
+@@ -274,16 +292,32 @@
+       hup_recvd = FALSE;
+     }
+
++    newsockfd = -1;
++    memcpy(&fds, &fds0, sizeof(fds));
+     clilen = sizeof(client_addr);
+-    newsockfd = accept(sockfd, (struct sockaddr *) &client_addr, &clilen);
+-    if (newsockfd < 0)
+-    {
+-      if (errno == EINTR)
+-      {
++    if (select(maxsock + 1, &fds, NULL, NULL, NULL) > 0) {
++      for (i = 0; i < nsock; i++) {
++        if (FD_ISSET(sockfd[i], &fds)) {
++          newsockfd = accept(sockfd[i], (struct sockaddr *) &client_addr,
++                             &clilen);
++          if (newsockfd < 0) {
++            if (errno != EINTR)
++              fprintf(stderr, "run_daemon: accept error: %s\n", strerror(errno));
++            continue;
++          } else
++            break;
++          }
++	}
++        if (newsockfd < 0) {
++          fprintf(stderr, "run_daemon: ignored\n");
++          continue;
++        }
++    } else {
++      if (errno != EINTR) {
++        fprintf(stderr, "run_daemon: select error: %s\n", strerror(errno));
++        exit(1);
++      } else
+         continue;
+-      }
+-      fprintf(stderr, "run_daemon: accept error: %s\n", strerror(errno));
+-      continue;
+     }
+
+     failure = 0;
+@@ -312,7 +346,8 @@
+         exit(1);
+       }
+
+-      close(sockfd);
++      for (i = 0; i < nsock; i++)
++        close(sockfd[i]);
+
+       if (!authorized_client())
+       {

Added: head/net/rwhoisd/files/patch-server-security.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/rwhoisd/files/patch-server-security.c	Wed Jun 26 20:22:37 2013	(r321813)
@@ -0,0 +1,83 @@
+--- server/security.c.orig	2005-06-01 09:20:55.000000000 +0900
++++ server/security.c	2013-06-26 14:56:12.000000000 +0900
+@@ -110,18 +110,17 @@
+   char                    *hosts_deny;
+   extern char             *hosts_allow_table;
+   extern char             *hosts_deny_table;
+-#  ifdef HAVE_IPV6
+-  struct sockaddr_in      *sin;
+   struct sockaddr_storage  ss;
+-  struct sockaddr_in6     *sin6;
+   struct sockaddr         *sa;
+   socklen_t                salen = sizeof ss;
++#ifdef HAVE_IPV6
+   char                     addr[INET6_ADDRSTRLEN];
+   char                     wrapper_addr[INET6_ADDRSTRLEN + 2];
++#else
++  char                     addr[INET_ADDRSTRLEN];
++  char                     wrapper_addr[INET_ADDRSTRLEN + 2];
++#endif
+   char                     client_name[NI_MAXHOST];
+-#  else
+-  struct request_info      req;
+-#  endif /* HAVE_IPV6 */
+
+   hosts_allow = get_security_allow();
+   hosts_deny  = get_security_deny();
+@@ -133,7 +132,6 @@
+   hosts_allow_table = hosts_allow;
+   hosts_deny_table  = hosts_deny;
+
+-#  ifdef HAVE_IPV6
+   /* Do this the new way, which specifically knows how to format IPv6
+      addresses. */
+
+@@ -153,42 +151,15 @@
+
+   /* convert the address to a presentation format that tcp wrapper
+      understands */
+-  switch ( sa->sa_family ) {
+-    case AF_INET: {
+-      sin = (struct sockaddr_in *) sa;
+-      strncpy( wrapper_addr,
+-               inet_ntop( AF_INET, (void *) sin->sin_addr.s_addr, addr,
+-                          sizeof addr ),
+-               sizeof wrapper_addr ) ;
+-    }
+-    case AF_INET6: {
+-      sin6 = (struct sockaddr_in6 *) sa;
+-      inet_ntop( AF_INET6, (void *) sin6->sin6_addr.s6_addr, addr, sizeof
+-                 addr );
+-      /* If it's an IPv4 mapped address, drop the leading '::ffff:' */
+-      if ( IN6_IS_ADDR_V4MAPPED( &(sin6->sin6_addr) ) )
+-        strncpy( wrapper_addr, addr + 7, sizeof wrapper_addr );
+-      /* otherwise surround the address with braces to hopefully match
+-         what tcp wrapper expects */
+-      else sprintf( wrapper_addr, "%s", addr );
+-    }
+-  }
++
++  if (getnameinfo(sa, salen, wrapper_addr, sizeof(wrapper_addr), NULL, 0,
++      NI_NUMERICHOST) != 0)
++    log(L_LOG_WARNING, CONFIG, "getnameinfo failed: %s",
++        strerror(errno));
++
+   log( L_LOG_WARNING, CONFIG, "client tcp wrapper address: %s", wrapper_addr );
+
+   return( hosts_ctl( directive, client_name, wrapper_addr, STRING_UNKNOWN ) );
+-#  else /* HAVE_IPV6 */
+-
+-  /* Do this the old way, which still seems to work */
+-
+-  /* set up the request structure */
+-  request_init(&req, RQ_FILE, 0, RQ_DAEMON, directive, 0);
+-
+-  /* fill in the client info */
+-  fromhost(&req);
+-
+-  /* return the results of the access check */
+-  return(hosts_access(&req));
+-#  endif /* HAVE_IPV6 */
+
+ #else  /* USE_TCP_WRAPPERS */
+   return TRUE;

Modified: head/net/rwhoisd/files/rwhoisd.in
==============================================================================
--- head/net/rwhoisd/files/rwhoisd.in	Wed Jun 26 20:16:55 2013	(r321812)
+++ head/net/rwhoisd/files/rwhoisd.in	Wed Jun 26 20:22:37 2013	(r321813)
@@ -1,5 +1,7 @@
 #!/bin/sh
-
+#
+# $FreeBSD$
+#
 # PROVIDE: rwhoisd
 # REQUIRE: LOGIN
 # KEYWORD: shutdown
@@ -15,18 +17,17 @@
 
 . /etc/rc.subr
 
-name="rwhoisd"
+name=rwhoisd
 rcvar=rwhoisd_enable
-
-command=%%PREFIX%%/sbin/${name}
-pidfile=${rwhoisd_pidfile}
-
 load_rc_config $name
 
-: ${rwhoisd_enable="NO"}
+: ${rwhoisd_enable:=NO}
 : ${rwhoisd_config="%%PREFIX%%/etc/rwhoisd/rwhoisd.conf"}
 : ${rwhoisd_pidfile="/var/run/${name}/${name}.pid"}
 
+command=%%PREFIX%%/sbin/${name}
+pidfile=${rwhoisd_pidfile}
+
 command_args="-d -c $rwhoisd_config"
 
 run_rc_command "$1"

Modified: head/net/rwhoisd/pkg-plist
==============================================================================
--- head/net/rwhoisd/pkg-plist	Wed Jun 26 20:16:55 2013	(r321812)
+++ head/net/rwhoisd/pkg-plist	Wed Jun 26 20:22:37 2013	(r321813)
@@ -2,66 +2,69 @@ bin/rwhois_deleter
 bin/rwhois_indexer
 bin/rwhois_repack
 sbin/rwhoisd
-etc/rwhoisd/a.com/attribute_defs/asn.tmpl
-etc/rwhoisd/a.com/attribute_defs/contact.tmpl
-etc/rwhoisd/a.com/attribute_defs/domain.tmpl
-etc/rwhoisd/a.com/attribute_defs/guardian.tmpl
-etc/rwhoisd/a.com/attribute_defs/host.tmpl
-etc/rwhoisd/a.com/attribute_defs/org.tmpl
-etc/rwhoisd/a.com/attribute_defs/referral.tmpl
-etc/rwhoisd/a.com/data/asn/asn.txt
-etc/rwhoisd/a.com/data/contact/contact.txt
-etc/rwhoisd/a.com/data/domain/domain.txt
-etc/rwhoisd/a.com/data/guardian/guardian.txt
-etc/rwhoisd/a.com/data/host/host.txt
-etc/rwhoisd/a.com/data/org/org.txt
-etc/rwhoisd/a.com/data/referral/referral.txt
-etc/rwhoisd/a.com/schema
-etc/rwhoisd/a.com/soa
-etc/rwhoisd/net-10.0.0.0-8/attribute_defs/contact.tmpl
-etc/rwhoisd/net-10.0.0.0-8/attribute_defs/guardian.tmpl
-etc/rwhoisd/net-10.0.0.0-8/attribute_defs/host.tmpl
-etc/rwhoisd/net-10.0.0.0-8/attribute_defs/network.tmpl
-etc/rwhoisd/net-10.0.0.0-8/attribute_defs/referral.tmpl
-etc/rwhoisd/net-10.0.0.0-8/data/network/network.txt
-etc/rwhoisd/net-10.0.0.0-8/data/referral/referral.txt
-etc/rwhoisd/net-10.0.0.0-8/schema
-etc/rwhoisd/net-10.0.0.0-8/soa
-etc/rwhoisd/net-fd00:1234::-32/attribute_defs/host.tmpl
-etc/rwhoisd/net-fd00:1234::-32/attribute_defs/referral.tmpl
-etc/rwhoisd/net-fd00:1234::-32/attribute_defs/contact.tmpl
-etc/rwhoisd/net-fd00:1234::-32/attribute_defs/guardian.tmpl
-etc/rwhoisd/net-fd00:1234::-32/attribute_defs/network.tmpl
-etc/rwhoisd/net-fd00:1234::-32/data/referral/referral.txt
-etc/rwhoisd/net-fd00:1234::-32/data/network/network.txt
-etc/rwhoisd/net-fd00:1234::-32/soa
-etc/rwhoisd/net-fd00:1234::-32/schema
-etc/rwhoisd/rwhoisd.allow
-etc/rwhoisd/rwhoisd.auth_area
-etc/rwhoisd/rwhoisd.conf
-etc/rwhoisd/rwhoisd.deny
-etc/rwhoisd/rwhoisd.dir
-etc/rwhoisd/rwhoisd.root
-etc/rwhoisd/rwhoisd.x.dir
- at dirrm etc/rwhoisd/net-10.0.0.0-8/data/referral
- at dirrm etc/rwhoisd/net-10.0.0.0-8/data/network
- at dirrm etc/rwhoisd/net-10.0.0.0-8/data
- at dirrm etc/rwhoisd/net-10.0.0.0-8/attribute_defs
- at dirrm etc/rwhoisd/net-10.0.0.0-8
- at dirrm etc/rwhoisd/net-fd00:1234::-32/attribute_defs
- at dirrm etc/rwhoisd/net-fd00:1234::-32/data/referral
- at dirrm etc/rwhoisd/net-fd00:1234::-32/data/network
- at dirrm etc/rwhoisd/net-fd00:1234::-32/data
- at dirrm etc/rwhoisd/net-fd00:1234::-32
- at dirrm etc/rwhoisd/a.com/data/referral
- at dirrm etc/rwhoisd/a.com/data/org
- at dirrm etc/rwhoisd/a.com/data/host
- at dirrm etc/rwhoisd/a.com/data/guardian
- at dirrm etc/rwhoisd/a.com/data/domain
- at dirrm etc/rwhoisd/a.com/data/contact
- at dirrm etc/rwhoisd/a.com/data/asn
- at dirrm etc/rwhoisd/a.com/data
- at dirrm etc/rwhoisd/a.com/attribute_defs
- at dirrm etc/rwhoisd/a.com
- at dirrmtry etc/rwhoisd
- at exec mkdir -p /var/log/rwhoisd /var/run/rwhoisd; chown -R nobody /var/log/rwhoisd /var/run/rwhoisd
+%%ETCDIR%%/samples/a.com/attribute_defs/asn.tmpl
+%%ETCDIR%%/samples/a.com/attribute_defs/contact.tmpl
+%%ETCDIR%%/samples/a.com/attribute_defs/domain.tmpl
+%%ETCDIR%%/samples/a.com/attribute_defs/guardian.tmpl
+%%ETCDIR%%/samples/a.com/attribute_defs/host.tmpl
+%%ETCDIR%%/samples/a.com/attribute_defs/org.tmpl
+%%ETCDIR%%/samples/a.com/attribute_defs/referral.tmpl
+%%ETCDIR%%/samples/a.com/data/asn/asn.txt
+%%ETCDIR%%/samples/a.com/data/contact/contact.txt
+%%ETCDIR%%/samples/a.com/data/domain/domain.txt
+%%ETCDIR%%/samples/a.com/data/guardian/guardian.txt
+%%ETCDIR%%/samples/a.com/data/host/host.txt
+%%ETCDIR%%/samples/a.com/data/org/org.txt
+%%ETCDIR%%/samples/a.com/data/referral/referral.txt
+%%ETCDIR%%/samples/a.com/schema
+%%ETCDIR%%/samples/a.com/soa
+%%ETCDIR%%/samples/net-10.0.0.0-8/attribute_defs/contact.tmpl
+%%ETCDIR%%/samples/net-10.0.0.0-8/attribute_defs/guardian.tmpl
+%%ETCDIR%%/samples/net-10.0.0.0-8/attribute_defs/host.tmpl
+%%ETCDIR%%/samples/net-10.0.0.0-8/attribute_defs/network.tmpl
+%%ETCDIR%%/samples/net-10.0.0.0-8/attribute_defs/referral.tmpl
+%%ETCDIR%%/samples/net-10.0.0.0-8/data/network/network.txt
+%%ETCDIR%%/samples/net-10.0.0.0-8/data/referral/referral.txt
+%%ETCDIR%%/samples/net-10.0.0.0-8/schema
+%%ETCDIR%%/samples/net-10.0.0.0-8/soa
+%%ETCDIR%%/samples/net-fd00:1234::-32/attribute_defs/host.tmpl
+%%ETCDIR%%/samples/net-fd00:1234::-32/attribute_defs/referral.tmpl
+%%ETCDIR%%/samples/net-fd00:1234::-32/attribute_defs/contact.tmpl
+%%ETCDIR%%/samples/net-fd00:1234::-32/attribute_defs/guardian.tmpl
+%%ETCDIR%%/samples/net-fd00:1234::-32/attribute_defs/network.tmpl
+%%ETCDIR%%/samples/net-fd00:1234::-32/data/referral/referral.txt
+%%ETCDIR%%/samples/net-fd00:1234::-32/data/network/network.txt
+%%ETCDIR%%/samples/net-fd00:1234::-32/soa
+%%ETCDIR%%/samples/net-fd00:1234::-32/schema
+%%ETCDIR%%/samples/rwhoisd.allow
+%%ETCDIR%%/samples/rwhoisd.auth_area
+%%ETCDIR%%/samples/rwhoisd.conf
+%%ETCDIR%%/samples/rwhoisd.deny
+%%ETCDIR%%/samples/rwhoisd.dir
+%%ETCDIR%%/samples/rwhoisd.root
+%%ETCDIR%%/samples/rwhoisd.x.dir
+ at dirrm %%ETCDIR%%/samples/net-10.0.0.0-8/data/referral
+ at dirrm %%ETCDIR%%/samples/net-10.0.0.0-8/data/network
+ at dirrm %%ETCDIR%%/samples/net-10.0.0.0-8/data
+ at dirrm %%ETCDIR%%/samples/net-10.0.0.0-8/attribute_defs
+ at dirrm %%ETCDIR%%/samples/net-10.0.0.0-8
+ at dirrm %%ETCDIR%%/samples/net-fd00:1234::-32/attribute_defs
+ at dirrm %%ETCDIR%%/samples/net-fd00:1234::-32/data/referral
+ at dirrm %%ETCDIR%%/samples/net-fd00:1234::-32/data/network
+ at dirrm %%ETCDIR%%/samples/net-fd00:1234::-32/data
+ at dirrm %%ETCDIR%%/samples/net-fd00:1234::-32
+ at dirrm %%ETCDIR%%/samples/a.com/data/referral
+ at dirrm %%ETCDIR%%/samples/a.com/data/org
+ at dirrm %%ETCDIR%%/samples/a.com/data/host
+ at dirrm %%ETCDIR%%/samples/a.com/data/guardian
+ at dirrm %%ETCDIR%%/samples/a.com/data/domain
+ at dirrm %%ETCDIR%%/samples/a.com/data/contact
+ at dirrm %%ETCDIR%%/samples/a.com/data/asn
+ at dirrm %%ETCDIR%%/samples/a.com/data
+ at dirrm %%ETCDIR%%/samples/a.com/attribute_defs
+ at dirrm %%ETCDIR%%/samples/a.com
+ at dirrm %%ETCDIR%%/samples
+ at dirrmtry %%ETCDIR%%
+ at exec install -d -o nobody /var/log/rwhoisd /var/run/rwhoisd
+ at exec for f in %%ETCFILES%%; do [ -f %D/%%ETCDIR%%/$f ] || cp -p %D/%%ETCDIR%%/samples/$f %D/%%ETCDIR%%/$f; done
+ at unexec for f in %%ETCFILES%%; do cmp -s %D/%%ETCDIR%%/$f %D/%%ETCDIR%%/samples/$f && rm -f %D/%%ETCDIR%%/$f || true; done


More information about the svn-ports-all mailing list