Module Name:    othersrc
Committed By:   lukem
Date:           Sat Sep 23 04:00:21 UTC 2023

Modified Files:
        othersrc/libexec/tnftpd: configure.ac tnftpd.h
        othersrc/libexec/tnftpd/libnetbsd: err.c
        othersrc/libexec/tnftpd/src: ftpd.c
Added Files:
        othersrc/libexec/tnftpd/libnetbsd: setprogname.c

Log Message:
adapt __progname to setprogname() / getprogname()

Import setprogname() and getprogname() from
othersrc/usr.bin/tnftp/libnetbsd/setprogname.c rev 1.4.

Use getprogname() instead of __progname.

Fixes link error on modern NetBSD which correctly complained
about duplicate definition of __progname.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 othersrc/libexec/tnftpd/configure.ac
cvs rdiff -u -r1.38 -r1.39 othersrc/libexec/tnftpd/tnftpd.h
cvs rdiff -u -r1.5 -r1.6 othersrc/libexec/tnftpd/libnetbsd/err.c
cvs rdiff -u -r0 -r1.1 othersrc/libexec/tnftpd/libnetbsd/setprogname.c
cvs rdiff -u -r1.37 -r1.38 othersrc/libexec/tnftpd/src/ftpd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: othersrc/libexec/tnftpd/configure.ac
diff -u othersrc/libexec/tnftpd/configure.ac:1.47 othersrc/libexec/tnftpd/configure.ac:1.48
--- othersrc/libexec/tnftpd/configure.ac:1.47	Sat Sep 23 03:26:02 2023
+++ othersrc/libexec/tnftpd/configure.ac	Sat Sep 23 04:00:21 2023
@@ -1,4 +1,4 @@
-# $NetBSD: configure.ac,v 1.47 2023/09/23 03:26:02 lukem Exp $
+# $NetBSD: configure.ac,v 1.48 2023/09/23 04:00:21 lukem Exp $
 #
 # Process this file with autoconf to produce a configure script.
 
@@ -281,7 +281,7 @@ AC_FUNC_STRCOLL()
 AC_REPLACE_FUNCS([daemon err explicit_memset fgetln fparseln \
                   getaddrinfo getgrouplist getnameinfo getusershell \
                   inet_net_pton inet_ntop inet_pton mkstemp \
-                  sl_init snprintf strdup strerror strsuftollx \
+                  setprogname sl_init snprintf strdup strerror strsuftollx \
                   strlcat strlcpy strsep usleep])
 AC_CHECK_FUNCS([dirfd getcwd gethostbyaddr gethostbyname gethostbyname2 \
                 gethostname getrusage getspnam gettimeofday \

Index: othersrc/libexec/tnftpd/tnftpd.h
diff -u othersrc/libexec/tnftpd/tnftpd.h:1.38 othersrc/libexec/tnftpd/tnftpd.h:1.39
--- othersrc/libexec/tnftpd/tnftpd.h:1.38	Sat Sep 23 02:56:08 2023
+++ othersrc/libexec/tnftpd/tnftpd.h	Sat Sep 23 04:00:21 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tnftpd.h,v 1.38 2023/09/23 02:56:08 lukem Exp $ */
+/* $NetBSD: tnftpd.h,v 1.39 2023/09/23 04:00:21 lukem Exp $ */
 
 #define	FTPD_VERSION	PACKAGE_STRING
 
@@ -464,6 +464,11 @@ int	inet_pton(int, const char *, void *)
 int	mkstemp(const char *);
 #endif
 
+#if !defined(HAVE_SETPROGNAME)
+const char *getprogname(void);
+void	setprogname(const char *);
+#endif
+
 #if !defined(HAVE_SETEGID)
 # if defined(HAVE_SETRESGID)
 #  define setegid(i) setresgid(-1, (i), -1)

Index: othersrc/libexec/tnftpd/libnetbsd/err.c
diff -u othersrc/libexec/tnftpd/libnetbsd/err.c:1.5 othersrc/libexec/tnftpd/libnetbsd/err.c:1.6
--- othersrc/libexec/tnftpd/libnetbsd/err.c:1.5	Wed Jan 23 05:20:01 2019
+++ othersrc/libexec/tnftpd/libnetbsd/err.c	Sat Sep 23 04:00:21 2023
@@ -1,7 +1,10 @@
-/* $NetBSD: err.c,v 1.5 2019/01/23 05:20:01 lukem Exp $ */
+/* $NetBSD: err.c,v 1.6 2023/09/23 04:00:21 lukem Exp $ */
+
+/* from:	NetBSD: err.c,v 1.6 2020/07/05 09:54:26 lukem Exp */
+/* upstream:	othersrc/usr.bin/tnftp/libnetbsd/err.c */
 
 /*
- * Copyright 1997-2002 Luke Mewburn <lu...@netbsd.org>.
+ * Copyright 1997-2000,2020 Luke Mewburn <lu...@netbsd.org>.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,8 +30,6 @@
 
 #include "tnftpd.h"
 
-extern char *__progname;
-
 void
 err(int eval, const char *fmt, ...)
 {
@@ -36,7 +37,7 @@ err(int eval, const char *fmt, ...)
 	int	sverrno;
 
 	sverrno = errno;
-	(void)fprintf(stderr, "%s: ", __progname);
+	(void)fprintf(stderr, "%s: ", getprogname());
 	va_start(ap, fmt);
 	if (fmt != NULL) {
 		(void)vfprintf(stderr, fmt, ap);
@@ -52,7 +53,7 @@ errx(int eval, const char *fmt, ...)
 {
 	va_list ap;
 
-	(void)fprintf(stderr, "%s: ", __progname);
+	(void)fprintf(stderr, "%s: ", getprogname());
 	va_start(ap, fmt);
 	if (fmt != NULL)
 		(void)vfprintf(stderr, fmt, ap);
@@ -68,7 +69,7 @@ warn(const char *fmt, ...)
 	int	sverrno;
 
 	sverrno = errno;
-	(void)fprintf(stderr, "%s: ", __progname);
+	(void)fprintf(stderr, "%s: ", getprogname());
 	va_start(ap, fmt);
 	if (fmt != NULL) {
 		(void)vfprintf(stderr, fmt, ap);
@@ -83,7 +84,7 @@ warnx(const char *fmt, ...)
 {
 	va_list ap;
 
-	(void)fprintf(stderr, "%s: ", __progname);
+	(void)fprintf(stderr, "%s: ", getprogname());
 	va_start(ap, fmt);
 	if (fmt != NULL)
 		(void)vfprintf(stderr, fmt, ap);

Index: othersrc/libexec/tnftpd/src/ftpd.c
diff -u othersrc/libexec/tnftpd/src/ftpd.c:1.37 othersrc/libexec/tnftpd/src/ftpd.c:1.38
--- othersrc/libexec/tnftpd/src/ftpd.c:1.37	Sat Jul  4 04:00:53 2020
+++ othersrc/libexec/tnftpd/src/ftpd.c	Sat Sep 23 04:00:21 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ftpd.c,v 1.37 2020/07/04 04:00:53 lukem Exp $	*/
+/*	$NetBSD: ftpd.c,v 1.38 2023/09/23 04:00:21 lukem Exp $	*/
 /*	from	NetBSD: ftpd.c,v 1.205 2019/10/15 18:29:32 christos Exp	*/
 
 /*
@@ -299,8 +299,6 @@ int	k5login(struct passwd *, char *, cha
 void	k5destroy(void);
 #endif
 
-char * __progname;
-
 int
 main(int argc, char *argv[])
 {
@@ -315,11 +313,7 @@ main(int argc, char *argv[])
 	struct sigaction sa;
 	sa_family_t	af = AF_UNSPEC;
 
-	__progname  = strrchr(argv[0], '/');
-	if (__progname == NULL)
-		__progname = argv[0];
-	else
-		__progname++;
+	setprogname(argv[0]);
 
 	connections = 1;
 	ftpd_debug = 0;
@@ -4205,7 +4199,7 @@ auth_sia(struct passwd *pw, char *pwstr)
 	int ret;
 	char *args[2];
 
-	args[0] = __progname;
+	args[0] = getprogname();
 	args[1] = NULL;
 
 	if (sia_ses_init(&ent, 1, args, remotehost, pw->pw_name,

Added files:

Index: othersrc/libexec/tnftpd/libnetbsd/setprogname.c
diff -u /dev/null othersrc/libexec/tnftpd/libnetbsd/setprogname.c:1.1
--- /dev/null	Sat Sep 23 04:00:21 2023
+++ othersrc/libexec/tnftpd/libnetbsd/setprogname.c	Sat Sep 23 04:00:21 2023
@@ -0,0 +1,53 @@
+/* $NetBSD: setprogname.c,v 1.1 2023/09/23 04:00:21 lukem Exp $	*/
+
+/* from:	NetBSD: setprogname.c,v 1.4 2008/04/29 08:13:38 martin Exp	*/
+/* upstream:	othersrc/usr.bin/tnftp/libnetbsd/setprogname.c */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Todd Vierling.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tnftpd.h"
+
+static const char *__progname = "<unset_progname>";
+
+void
+setprogname(const char *progname)
+{
+	__progname = strrchr(progname, '/');
+	if (__progname == NULL)
+		__progname = progname;
+	else
+		__progname++;
+}
+
+const char *
+getprogname(void)
+{
+	return __progname;
+}

Reply via email to