commit: ae7ffa7c12ba7632b17569fddbd4c605b483c10f Author: Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr> AuthorDate: Sat Sep 27 05:32:10 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Sep 30 08:24:59 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ae7ffa7c
net-misc/portfwd: fix c23, new initd update HOMEPAGE http+S update SRC_URI (redirect) don't use bundled getopt remove register keyword (c17) rename configure.in to configure.ac refresh initd w/o bashism Closes: https://bugs.gentoo.org/822075 Closes: https://bugs.gentoo.org/849284 Closes: https://bugs.gentoo.org/921659 Closes: https://bugs.gentoo.org/945521 Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr> Part-of: https://github.com/gentoo/gentoo/pull/43966 Closes: https://github.com/gentoo/gentoo/pull/43966 Signed-off-by: Sam James <sam <AT> gentoo.org> net-misc/portfwd/files/portfwd-0.29-fix_c23.patch | 191 ++++++++++++++++++++++ net-misc/portfwd/files/portfwd-2.init | 17 ++ net-misc/portfwd/portfwd-0.29-r3.ebuild | 40 +++++ 3 files changed, 248 insertions(+) diff --git a/net-misc/portfwd/files/portfwd-0.29-fix_c23.patch b/net-misc/portfwd/files/portfwd-0.29-fix_c23.patch new file mode 100644 index 000000000000..36142ea40e3d --- /dev/null +++ b/net-misc/portfwd/files/portfwd-0.29-fix_c23.patch @@ -0,0 +1,191 @@ +don't use bundled getopt, bug #945521 +remove register keyword, bug #921659 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,4 +1,4 @@ +-SUBDIRS = getopt src tools doc ++SUBDIRS = src tools doc + + docdir = $(prefix)/doc/portfwd + doc_DATA = COPYING README CREDITS TODO +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -8,8 +8,6 @@ portfwd_SOURCES = addr.cc from_addr.cc host_map.cc portfwd.cc \ + proto_map.cc forward.cc port_pair.cc solve.cc \ + yconf.c lexconf.c util.cc fd_set.cc + +-LDADD = getopt.o getopt1.o +- + yconf.c: conf.y + $(YACC) -v -d -o $@ $< + +--- a/src/lexconf.c ++++ b/src/lexconf.c +@@ -759,9 +759,9 @@ extern int yylex (void); + */ + YY_DECL + { +- register yy_state_type yy_current_state; +- register char *yy_cp, *yy_bp; +- register int yy_act; ++ yy_state_type yy_current_state; ++ char *yy_cp, *yy_bp; ++ int yy_act; + + #line 94 "conf.lex" + +@@ -814,7 +814,7 @@ YY_DECL + yy_match: + do + { +- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; ++ YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -1207,9 +1207,9 @@ case YY_STATE_EOF(INITIAL): + */ + static int yy_get_next_buffer (void) + { +- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +- register char *source = (yytext_ptr); +- register int number_to_move, i; ++ char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; ++ char *source = (yytext_ptr); ++ int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) +@@ -1333,14 +1333,14 @@ static int yy_get_next_buffer (void) + + static yy_state_type yy_get_previous_state (void) + { +- register yy_state_type yy_current_state; +- register char *yy_cp; ++ yy_state_type yy_current_state; ++ char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { +- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); ++ YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -1365,10 +1365,10 @@ static int yy_get_next_buffer (void) + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) + { +- register int yy_is_jam; +- register char *yy_cp = (yy_c_buf_p); ++ int yy_is_jam; ++ char *yy_cp = (yy_c_buf_p); + +- register YY_CHAR yy_c = 1; ++ YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -1386,9 +1386,9 @@ static int yy_get_next_buffer (void) + return yy_is_jam ? 0 : yy_current_state; + } + +- static void yyunput (int c, register char * yy_bp ) ++ static void yyunput (int c, char * yy_bp ) + { +- register char *yy_cp; ++ char *yy_cp; + + yy_cp = (yy_c_buf_p); + +@@ -1398,10 +1398,10 @@ static int yy_get_next_buffer (void) + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ +- register int number_to_move = (yy_n_chars) + 2; +- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ ++ int number_to_move = (yy_n_chars) + 2; ++ char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; +- register char *source = ++ char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +@@ -1978,7 +1978,7 @@ int yylex_destroy (void) + #ifndef yytext_ptr + static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) + { +- register int i; ++ int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +@@ -1987,7 +1987,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) + #ifdef YY_NEED_STRLEN + static int yy_flex_strlen (yyconst char * s ) + { +- register int n; ++ int n; + for ( n = 0; s[n]; ++n ) + ; + +--- a/src/yconf.c ++++ b/src/yconf.c +@@ -318,7 +318,7 @@ union yyalloc + # define YYCOPY(To, From, Count) \ + do \ + { \ +- register YYSIZE_T yyi; \ ++ YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ +@@ -798,7 +798,7 @@ yystrlen (yystr) + const char *yystr; + # endif + { +- register const char *yys = yystr; ++ const char *yys = yystr; + + while (*yys++ != '\0') + continue; +@@ -823,8 +823,8 @@ yystpcpy (yydest, yysrc) + const char *yysrc; + # endif + { +- register char *yyd = yydest; +- register const char *yys = yysrc; ++ char *yyd = yydest; ++ const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; +@@ -954,8 +954,8 @@ yyparse () + #endif + { + +- register int yystate; +- register int yyn; ++ int yystate; ++ int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; +@@ -973,12 +973,12 @@ yyparse () + /* The state stack. */ + short yyssa[YYINITDEPTH]; + short *yyss = yyssa; +- register short *yyssp; ++ short *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; +- register YYSTYPE *yyvsp; ++ YYSTYPE *yyvsp; + + + diff --git a/net-misc/portfwd/files/portfwd-2.init b/net-misc/portfwd/files/portfwd-2.init new file mode 100644 index 000000000000..3a2768d2c864 --- /dev/null +++ b/net-misc/portfwd/files/portfwd-2.init @@ -0,0 +1,17 @@ +#!/sbin/openrc-run +# Copyright 2025 Gentoo Authors +# # Distributed under the terms of the GNU General Public License v2 + +: ${PORTFWD_CONFIG:=/etc/portfwd.cfg} + +name="portfwd" +description="Port Forwarding Daemon" +command="/usr/sbin/portfwd" +command_args="--foreground --config ${PORTFWD_CONFIG} ${PORTFWD_OPTS}" +command_background=true +pidfile="/run/${RC_SVCNAME}.pid" +required_files="${PORTFWD_CONFIG}" + +depend() { + need net +} diff --git a/net-misc/portfwd/portfwd-0.29-r3.ebuild b/net-misc/portfwd/portfwd-0.29-r3.ebuild new file mode 100644 index 000000000000..153bd7e68f3a --- /dev/null +++ b/net-misc/portfwd/portfwd-0.29-r3.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools systemd + +DESCRIPTION="Port Forwarding Daemon" +HOMEPAGE="https://portfwd.sourceforge.net" +SRC_URI="https://downloads.sourceforge.net/project/${PN}/${PN}/${PV}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~sparc ~x86" + +PATCHES=( + "${FILESDIR}"/${PN}-0.29-build-system.patch + "${FILESDIR}"/${PN}-0.29-fix_c23.patch +) + +src_prepare() { + default + + # bug 945521, use header from glibc/musl instead + rm getopt/getopt.h || die + + mv configure.in configure.ac || die # bug 822075 + + eautoreconf +} + +src_install() { + default + + dodoc cfg/* + + newinitd "${FILESDIR}"/${PN}-2.init ${PN} + newconfd "${FILESDIR}"/${PN}.confd ${PN} + systemd_dounit "${FILESDIR}"/${PN}.service +}
