git: d9f28ee265f9 - main - net/tsocks: Fix erroneous substitution

From: Emanuel Haupt <ehaupt_at_FreeBSD.org>
Date: Thu, 10 Nov 2022 07:53:12 UTC
The branch main has been updated by ehaupt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d9f28ee265f94f4bcedb7d24648042ca1325c230

commit d9f28ee265f94f4bcedb7d24648042ca1325c230
Author:     Emanuel Haupt <ehaupt@FreeBSD.org>
AuthorDate: 2022-11-10 07:40:57 +0000
Commit:     Emanuel Haupt <ehaupt@FreeBSD.org>
CommitDate: 2022-11-10 07:49:19 +0000

    net/tsocks: Fix erroneous substitution
    
    When patching the wrapper script for /usr to ${PREFIX} a part in a sed
    statement gets substituted that should be escaped. Adjust sed statement
    in a way that it doesn't break after patching ${PREFIX}.
    
    While here:
    
    - move a REINPLACE_CMD operation to a pre-existing patch file
    - pacify portclippy
    - reformat with portfmt
    
    PR:             267670
    Reported by:    chris@mumac.de
---
 net/tsocks/Makefile             |  24 ++++----
 net/tsocks/files/patch-tsocks   |  11 ++++
 net/tsocks/files/patch-tsocks.c | 118 +++++++++++++++++++++++++++++++++++++++-
 3 files changed, 138 insertions(+), 15 deletions(-)

diff --git a/net/tsocks/Makefile b/net/tsocks/Makefile
index 2f67b428b335..b7930504b128 100644
--- a/net/tsocks/Makefile
+++ b/net/tsocks/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	tsocks
 DISTVERSION=	1.8.b5
-PORTREVISION=	8
+PORTREVISION=	9
 CATEGORIES=	net security
 MASTER_SITES=	SF/${PORTNAME}/${PORTNAME}/1.8%20beta%205 \
 		http://ftp1.sourceforge.net/tsocks/ \
@@ -17,29 +17,27 @@ USES=		gmake
 USE_LDCONFIG=	yes
 
 GNU_CONFIGURE=	yes
+CONFIGURE_ARGS=	--libdir=${PREFIX}/lib \
+		--with-conf=${PREFIX}/etc/tsocks.conf
 
-WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION:C/.b.*//}
+SUB_FILES=	pkg-message
 
-CONFIGURE_ARGS=	--with-conf=${PREFIX}/etc/tsocks.conf \
-		--libdir=${PREFIX}/lib
+WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION:C/.b.*//}
 
-OPTIONS_DEFINE=	DOCS EXAMPLES HOSTNAMES MUTE OLDMETHOD SOCKSDNS
-OPTIONS_DEFAULT=HOSTNAMES
+OPTIONS_DEFINE=		DOCS EXAMPLES HOSTNAMES MUTE OLDMETHOD SOCKSDNS
+OPTIONS_DEFAULT=	HOSTNAMES
 
 HOSTNAMES_DESC=	Enable DNS lookups
-OLDMETHOD_DESC=	Do not use RTLD_NEXT parameter to dlsym
 MUTE_DESC=	Disable all error messages
+OLDMETHOD_DESC=	Do not use RTLD_NEXT parameter to dlsym
 SOCKSDNS_DESC=	Intercept DNS requests and attempt to force them to use TCP
 
 HOSTNAMES_CONFIGURE_OFF=	--disable-hostnames
-MUTE_CONFIGURE_ON=	--disable-debug
-OLDMETHOD_CONFIGURE_ON=	--enable-oldmethod
-SOCKSDNS_CONFIGURE_ON=	--enable-socksdns
-
-SUB_FILES=	pkg-message
+MUTE_CONFIGURE_ON=		--disable-debug
+OLDMETHOD_CONFIGURE_ON=		--enable-oldmethod
+SOCKSDNS_CONFIGURE_ON=		--enable-socksdns
 
 post-patch:
-	@${REINPLACE_CMD} -e 's|ufds|fds|g' ${WRKSRC}/tsocks.c
 	@${REINPLACE_CMD} -e 's|/usr|${PREFIX}|' ${WRKSRC}/tsocks
 
 post-install:
diff --git a/net/tsocks/files/patch-tsocks b/net/tsocks/files/patch-tsocks
new file mode 100644
index 000000000000..ee7b7441bf33
--- /dev/null
+++ b/net/tsocks/files/patch-tsocks
@@ -0,0 +1,11 @@
+--- tsocks.orig	2002-03-16 10:27:18 UTC
++++ tsocks
+@@ -53,7 +53,7 @@ case "$1" in
+ 		fi
+ 	;;
+ 	off)
+-		export LD_PRELOAD=`echo -n $LD_PRELOAD | sed 's/\/usr\/lib\/libtsocks.so \?//'`
++		export LD_PRELOAD=`echo -n $LD_PRELOAD | sed 's|/usr/lib/libtsocks.so[[:blank:]]*||'`
+ 		if [ -z "$LD_PRELOAD" ]
+ 			then
+ 				unset LD_PRELOAD
diff --git a/net/tsocks/files/patch-tsocks.c b/net/tsocks/files/patch-tsocks.c
index eed81cc56f58..4694fc25cf92 100644
--- a/net/tsocks/files/patch-tsocks.c
+++ b/net/tsocks/files/patch-tsocks.c
@@ -1,6 +1,120 @@
 --- tsocks.c.orig	2002-07-15 22:50:52 UTC
 +++ tsocks.c
-@@ -852,7 +852,7 @@ static int connect_server(struct connreq
+@@ -531,12 +531,12 @@ int poll(POLL_SIGNATURE) {
+    /* If we're not currently managing any requests we can just 
+     * leave here */
+    if (!requests)
+-      return(realpoll(ufds, nfds, timeout));
++      return(realpoll(fds, nfds, timeout));
+ 
+    get_environment();
+ 
+    show_msg(MSGDEBUG, "Intercepted call to poll with %d fds, "
+-            "0x%08x timeout %d\n", nfds, ufds, timeout);
++            "0x%08x timeout %d\n", nfds, fds, timeout);
+ 
+    for (conn = requests; conn != NULL; conn = conn->next)
+       conn->selectevents = 0;
+@@ -544,16 +544,16 @@ int poll(POLL_SIGNATURE) {
+    /* Record what events on our sockets the caller was interested
+     * in */
+    for (i = 0; i < nfds; i++) {
+-      if (!(conn = find_socks_request(ufds[i].fd, 0)))
++      if (!(conn = find_socks_request(fds[i].fd, 0)))
+          continue;
+       show_msg(MSGDEBUG, "Have event checks for socks enabled socket %d\n",
+                conn->sockid);
+-      conn->selectevents = ufds[i].events;
++      conn->selectevents = fds[i].events;
+       monitoring = 1;
+    }
+ 
+    if (!monitoring)
+-      return(realpoll(ufds, nfds, timeout));
++      return(realpoll(fds, nfds, timeout));
+ 
+    /* This is our poll loop. In it we repeatedly call poll(). We 
+     * pass select the same event list as provided by the caller except we
+@@ -566,25 +566,25 @@ int poll(POLL_SIGNATURE) {
+    do {
+       /* Enable our sockets for the events WE want to hear about */
+       for (i = 0; i < nfds; i++) {
+-         if (!(conn = find_socks_request(ufds[i].fd, 0)))
++         if (!(conn = find_socks_request(fds[i].fd, 0)))
+             continue;
+ 
+          /* We always want to know about socket exceptions but they're 
+           * always returned (i.e they don't need to be in the list of 
+           * wanted events to be returned by the kernel */
+-         ufds[i].events = 0;
++         fds[i].events = 0;
+ 
+          /* If we're waiting for a connect or to be able to send
+           * on a socket we want to get write events */
+          if ((conn->state == SENDING) || (conn->state == CONNECTING))
+-            ufds[i].events |= POLLOUT;
++            fds[i].events |= POLLOUT;
+          /* If we're waiting to receive data we want to get 
+           * read events */
+          if (conn->state == RECEIVING)
+-            ufds[i].events |= POLLIN;
++            fds[i].events |= POLLIN;
+       }
+ 
+-      nevents = realpoll(ufds, nfds, timeout);
++      nevents = realpoll(fds, nfds, timeout);
+       /* If there were no events we must have timed out or had an error */
+       if (nevents <= 0)
+          break;
+@@ -597,29 +597,29 @@ int poll(POLL_SIGNATURE) {
+             continue;
+ 
+          /* Find the socket in the poll list */
+-         for (i = 0; ((i < nfds) && (ufds[i].fd != conn->sockid)); i++)
++         for (i = 0; ((i < nfds) && (fds[i].fd != conn->sockid)); i++)
+             /* Empty Loop */;
+          if (i == nfds) 
+             continue;
+ 
+          show_msg(MSGDEBUG, "Checking socket %d for events\n", conn->sockid);
+ 
+-         if (!ufds[i].revents) {
++         if (!fds[i].revents) {
+             show_msg(MSGDEBUG, "No events on socket\n");
+             continue;
+          }
+ 
+          /* Clear any read or write events on the socket, we'll reset
+           * any that are necessary later. */
+-         setevents = ufds[i].revents;
++         setevents = fds[i].revents;
+          if (setevents & POLLIN) {
+             show_msg(MSGDEBUG, "Socket had read event\n");
+-            ufds[i].revents &= ~POLLIN;
++            fds[i].revents &= ~POLLIN;
+             nevents--;
+          }
+          if (setevents & POLLOUT) {
+             show_msg(MSGDEBUG, "Socket had write event\n");
+-            ufds[i].revents &= ~POLLOUT;
++            fds[i].revents &= ~POLLOUT;
+             nevents--;
+          }
+          if (setevents & (POLLERR | POLLNVAL | POLLHUP)) 
+@@ -669,10 +669,10 @@ int poll(POLL_SIGNATURE) {
+ 
+    /* Now restore the events polled in each of the blocks */
+    for (i = 0; i < nfds; i++) {
+-      if (!(conn = find_socks_request(ufds[i].fd, 1)))
++      if (!(conn = find_socks_request(fds[i].fd, 1)))
+          continue;
+ 
+-      ufds[i].events = conn->selectevents;
++      fds[i].events = conn->selectevents;
+    }
+ 
+    return(nevents);
+@@ -852,7 +852,7 @@ static int connect_server(struct connreq *conn) {
                      sizeof(conn->serveraddr));
  
     show_msg(MSGDEBUG, "Connect returned %d, errno is %d\n", rc, errno); 
@@ -9,7 +123,7 @@
        if (errno != EINPROGRESS) {
           show_msg(MSGERR, "Error %d attempting to connect to SOCKS "
                    "server (%s)\n", errno, strerror(errno));
-@@ -862,6 +862,7 @@ static int connect_server(struct connreq
+@@ -862,6 +862,7 @@ static int connect_server(struct connreq *conn) {
           conn->state = CONNECTING;
        }
     } else {