Module Name:    src
Committed By:   christos
Date:           Fri Nov 26 18:58:43 UTC 2010

Modified Files:
        src/usr.sbin/faithd: Makefile faithd.c faithd.h ftp.c prefix.c tcp.c

Log Message:
KNF, pass lint.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/faithd/Makefile
cvs rdiff -u -r1.32 -r1.33 src/usr.sbin/faithd/faithd.c
cvs rdiff -u -r1.9 -r1.10 src/usr.sbin/faithd/faithd.h \
    src/usr.sbin/faithd/tcp.c
cvs rdiff -u -r1.18 -r1.19 src/usr.sbin/faithd/ftp.c
cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/faithd/prefix.c

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

Modified files:

Index: src/usr.sbin/faithd/Makefile
diff -u src/usr.sbin/faithd/Makefile:1.4 src/usr.sbin/faithd/Makefile:1.5
--- src/usr.sbin/faithd/Makefile:1.4	Mon May 28 08:06:34 2007
+++ src/usr.sbin/faithd/Makefile	Fri Nov 26 13:58:43 2010
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.4 2007/05/28 12:06:34 tls Exp $
+# $NetBSD: Makefile,v 1.5 2010/11/26 18:58:43 christos Exp $
 
 USE_FORT?= yes	# network server
 
@@ -6,6 +6,6 @@
 SRCS=	faithd.c tcp.c ftp.c prefix.c
 MAN=	faithd.8
 
-#CFLAGS+= -DFAITH4
+#CPPFLAGS+= -DFAITH4
 
 .include <bsd.prog.mk>

Index: src/usr.sbin/faithd/faithd.c
diff -u src/usr.sbin/faithd/faithd.c:1.32 src/usr.sbin/faithd/faithd.c:1.33
--- src/usr.sbin/faithd/faithd.c:1.32	Sat Dec 15 11:32:07 2007
+++ src/usr.sbin/faithd/faithd.c	Fri Nov 26 13:58:43 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: faithd.c,v 1.32 2007/12/15 16:32:07 perry Exp $	*/
+/*	$NetBSD: faithd.c,v 1.33 2010/11/26 18:58:43 christos Exp $	*/
 /*	$KAME: faithd.c,v 1.62 2003/08/19 21:20:33 itojun Exp $	*/
 
 /*
@@ -77,7 +77,6 @@
 
 char *serverpath = NULL;
 char *serverarg[MAXARGV + 1];
-static char *faithdname = NULL;
 char logname[BUFSIZ];
 char procname[BUFSIZ];
 struct myaddrs {
@@ -94,22 +93,21 @@
 static int inetd = 0;
 static char *configfile = NULL;
 
-int main __P((int, char **));
-static int inetd_main __P((int, char **));
-static int daemon_main __P((int, char **));
-static void play_service __P((int));
-static void play_child __P((int, struct sockaddr *));
-static int faith_prefix __P((struct sockaddr *));
-static int map6to4 __P((struct sockaddr_in6 *, struct sockaddr_in *));
-static void sig_child __P((int));
-static void sig_terminate __P((int));
-static void start_daemon __P((void));
-static void exit_stderr __P((const char *, ...))
+static int inetd_main(int, char **);
+static int daemon_main(int, char **);
+static void play_service(int);
+static void play_child(int, struct sockaddr *);
+static int faith_prefix(struct sockaddr *);
+static int map6to4(struct sockaddr_in6 *, struct sockaddr_in *);
+static void sig_child(int);
+static void sig_terminate(int);
+static void start_daemon(void);
+static void exit_stderr(const char *, ...)
 	__attribute__((__format__(__printf__, 1, 2)));
-static void grab_myaddrs __P((void));
-static void free_myaddrs __P((void));
-static void update_myaddrs __P((void));
-static void usage __P((void));
+static void grab_myaddrs(void);
+static void free_myaddrs(void);
+static void update_myaddrs(void);
+static void usage(void) __attribute__((__noreturn__));
 
 int
 main(int argc, char **argv)
@@ -119,13 +117,9 @@
 	 * Initializing stuff
 	 */
 
-	faithdname = strrchr(argv[0], '/');
-	if (faithdname)
-		faithdname++;
-	else
-		faithdname = argv[0];
+	setprogname(argv[0]);
 
-	if (strcmp(faithdname, "faithd") != 0) {
+	if (strcmp(getprogname(), "faithd") != 0) {
 		inetd = 1;
 		return inetd_main(argc, argv);
 	} else
@@ -150,9 +144,10 @@
 	}
 
 	if (strrchr(argv[0], '/') == NULL)
-		snprintf(path, sizeof(path), "%s/%s", DEFAULT_DIR, argv[0]);
+		(void)snprintf(path, sizeof(path), "%s/%s", DEFAULT_DIR,
+		    argv[0]);
 	else
-		snprintf(path, sizeof(path), "%s", argv[0]);
+		(void)snprintf(path, sizeof(path), "%s", argv[0]);
 
 #ifdef USE_ROUTE
 	grab_myaddrs();
@@ -165,26 +160,26 @@
 #endif
 
 	melen = sizeof(me);
-	if (getsockname(STDIN_FILENO, (struct sockaddr *)&me, &melen) < 0) {
+	if (getsockname(STDIN_FILENO, (void *)&me, &melen) == -1) {
 		exit_failure("getsockname: %s", strerror(errno));
 		/*NOTREACHED*/
 	}
 	fromlen = sizeof(from);
-	if (getpeername(STDIN_FILENO, (struct sockaddr *)&from, &fromlen) < 0) {
+	if (getpeername(STDIN_FILENO, (void *)&from, &fromlen) == -1) {
 		exit_failure("getpeername: %s", strerror(errno));
 		/*NOTREACHED*/
 	}
-	if (getnameinfo((struct sockaddr *)&me, melen, NULL, 0,
-	    sbuf, sizeof(sbuf), NI_NUMERICHOST) == 0)
+	if (getnameinfo((void *)&me, melen, NULL, 0,
+	    sbuf, (socklen_t)sizeof(sbuf), NI_NUMERICHOST) == 0)
 		service = sbuf;
 	else
 		service = DEFAULT_PORT_NAME;
-	if (getnameinfo((struct sockaddr *)&me, melen, NULL, 0,
-	    snum, sizeof(snum), NI_NUMERICHOST) != 0)
-		snprintf(snum, sizeof(snum), "?");
+	if (getnameinfo((void *)&me, melen, NULL, 0,
+	    snum, (socklen_t)sizeof(snum), NI_NUMERICHOST) != 0)
+		(void)snprintf(snum, sizeof(snum), "?");
 
-	snprintf(logname, sizeof(logname), "faithd %s", snum);
-	snprintf(procname, sizeof(procname), "accepting port %s", snum);
+	(void)snprintf(logname, sizeof(logname), "faithd %s", snum);
+	(void)snprintf(procname, sizeof(procname), "accepting port %s", snum);
 	openlog(logname, LOG_PID | LOG_NOWAIT, LOG_DAEMON);
 
 	if (argc >= MAXARGV) {
@@ -197,13 +192,13 @@
 	serverarg[i] = NULL;
 
 	error = setsockopt(STDIN_FILENO, SOL_SOCKET, SO_OOBINLINE, &on,
-	    sizeof(on));
+	    (socklen_t)sizeof(on));
 	if (error < 0) {
 		exit_failure("setsockopt(SO_OOBINLINE): %s", strerror(errno));
 		/*NOTREACHED*/
 	}
 
-	play_child(STDIN_FILENO, (struct sockaddr *)&from);
+	play_child(STDIN_FILENO, (void *)&from);
 	exit_failure("should not reach here");
 	return 0;	/*dummy!*/
 }
@@ -263,7 +258,7 @@
 				exit_stderr("not enough core");
 		}
 		serverarg[i] = NULL;
-		/* fall throuth */
+		/*FALLTHROUGH*/
 	case 1:	/* no local service */
 		service = argv[NUMPRT];
 		break;
@@ -290,23 +285,27 @@
 
 #ifdef IPV6_FAITH
 	if (res->ai_family == AF_INET6) {
-		error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_FAITH, &on, sizeof(on));
+		error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_FAITH, &on,
+		    (socklen_t)sizeof(on));
 		if (error == -1)
 			exit_failure("setsockopt(IPV6_FAITH): %s",
 			    strerror(errno));
 	}
 #endif
 
-	error = setsockopt(s_wld, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+	error = setsockopt(s_wld, SOL_SOCKET, SO_REUSEADDR, &on,
+	    (socklen_t)sizeof(on));
 	if (error == -1)
 		exit_failure("setsockopt(SO_REUSEADDR): %s", strerror(errno));
 	
-	error = setsockopt(s_wld, SOL_SOCKET, SO_OOBINLINE, &on, sizeof(on));
+	error = setsockopt(s_wld, SOL_SOCKET, SO_OOBINLINE, &on,
+	    (socklen_t)sizeof(on));
 	if (error == -1)
 		exit_failure("setsockopt(SO_OOBINLINE): %s", strerror(errno));
 
 #ifdef IPV6_V6ONLY
-	error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on));
+	error = setsockopt(s_wld, IPPROTO_IPV6, IPV6_V6ONLY, &on,
+	    (socklen_t)sizeof(on));
 	if (error == -1)
 		exit_failure("setsockopt(IPV6_V6ONLY): %s", strerror(errno));
 #endif
@@ -331,14 +330,13 @@
 	 * Everything is OK.
 	 */
 
-	snprintf(logname, sizeof(logname), "faithd %s", service);
-	snprintf(procname, sizeof(procname), "accepting port %s", service);
+	(void)snprintf(logname, sizeof(logname), "faithd %s", service);
+	(void)snprintf(procname, sizeof(procname), "accepting port %s", service);
 	openlog(logname, LOG_PID | LOG_NOWAIT, LOG_DAEMON);
 	syslog(LOG_INFO, "Staring faith daemon for %s port", service);
 
 	play_service(s_wld);
-	/* NOTREACHED */
-	exit(1);	/*pacify gcc*/
+	return 1;
 }
 
 static void
@@ -368,7 +366,7 @@
 	}
 #endif
 
-	error = poll(pfd, sizeof(pfd)/sizeof(pfd[0]), INFTIM);
+	error = poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])), INFTIM);
 	if (error < 0) {
 		if (errno == EINTR)
 			goto again;
@@ -385,7 +383,7 @@
 	if (pfd[0].revents & POLLIN)
 	{
 		len = sizeof(srcaddr);
-		s_src = accept(s_wld, (struct sockaddr *)&srcaddr, &len);
+		s_src = accept(s_wld, (void *)&srcaddr, &len);
 		if (s_src < 0) {
 			if (errno == ECONNABORTED)
 				goto again;
@@ -393,8 +391,8 @@
 			/*NOTREACHED*/
 		}
 		if (srcaddr.ss_family == AF_INET6 &&
-		    IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&srcaddr)->sin6_addr)) {
-			close(s_src);
+		    IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)(void *)&srcaddr)->sin6_addr)) {
+			(void)close(s_src);
 			syslog(LOG_ERR, "connection from IPv4 mapped address?");
 			goto again;
 		}
@@ -403,15 +401,15 @@
 
 		if (child_pid == 0) {
 			/* child process */
-			close(s_wld);
+			(void)close(s_wld);
 			closelog();
 			openlog(logname, LOG_PID | LOG_NOWAIT, LOG_DAEMON);
-			play_child(s_src, (struct sockaddr *)&srcaddr);
+			play_child(s_src, (void *)&srcaddr);
 			exit_failure("should never reach here");
 			/*NOTREACHED*/
 		} else {
 			/* parent process */
-			close(s_src);
+			(void)close(s_src);
 			if (child_pid == -1)
 				syslog(LOG_ERR, "can't fork");
 		}
@@ -436,38 +434,38 @@
 	tv.tv_sec = 1;
 	tv.tv_usec = 0;
 
-	getnameinfo(srcaddr, srcaddr->sa_len,
-		src, sizeof(src), NULL, 0, NI_NUMERICHOST);
+	(void)getnameinfo(srcaddr, (socklen_t)srcaddr->sa_len,
+	    src, (socklen_t)sizeof(src), NULL, 0, NI_NUMERICHOST);
 	syslog(LOG_INFO, "accepted a client from %s", src);
 
-	error = getsockname(s_src, (struct sockaddr *)&dstaddr6, &len);
+	error = getsockname(s_src, (void *)&dstaddr6, &len);
 	if (error == -1) {
 		exit_failure("getsockname: %s", strerror(errno));
 		/*NOTREACHED*/
 	}
 
-	getnameinfo((struct sockaddr *)&dstaddr6, len,
-		dst6, sizeof(dst6), NULL, 0, NI_NUMERICHOST);
+	(void)getnameinfo((void *)&dstaddr6, len,
+	    dst6, (socklen_t)sizeof(dst6), NULL, 0, NI_NUMERICHOST);
 	syslog(LOG_INFO, "the client is connecting to %s", dst6);
 	
-	if (!faith_prefix((struct sockaddr *)&dstaddr6)) {
+	if (!faith_prefix((void *)&dstaddr6)) {
 		if (serverpath) {
 			/*
 			 * Local service
 			 */
 			syslog(LOG_INFO, "executing local %s", serverpath);
 			if (!inetd) {
-				dup2(s_src, 0);
-				close(s_src);
-				dup2(0, 1);
-				dup2(0, 2);
+				(void)dup2(s_src, 0);
+				(void)close(s_src);
+				(void)dup2(0, 1);
+				(void)dup2(0, 2);
 			}
-			execv(serverpath, serverarg);
+			(void)execv(serverpath, serverarg);
 			syslog(LOG_ERR, "execv %s: %s", serverpath,
 			    strerror(errno));
 			_exit(EXIT_FAILURE);
 		} else {
-			close(s_src);
+			(void)close(s_src);
 			exit_success("no local service for %s", service);
 		}
 	}
@@ -476,29 +474,29 @@
 	 * Act as a translator
 	 */
 
-	switch (((struct sockaddr *)&dstaddr6)->sa_family) {
+	switch (((struct sockaddr *)(void *)&dstaddr6)->sa_family) {
 	case AF_INET6:
-		if (!map6to4((struct sockaddr_in6 *)&dstaddr6,
-		    (struct sockaddr_in *)&dstaddr4)) {
-			close(s_src);
+		if (!map6to4((struct sockaddr_in6 *)(void *)&dstaddr6,
+		    (struct sockaddr_in *)(void *)&dstaddr4)) {
+			(void)close(s_src);
 			exit_failure("map6to4 failed");
 			/*NOTREACHED*/
 		}
 		syslog(LOG_INFO, "translating from v6 to v4");
 		break;
 	default:
-		close(s_src);
+		(void)close(s_src);
 		exit_failure("family not supported");
 		/*NOTREACHED*/
 	}
 
-	sa4 = (struct sockaddr *)&dstaddr4;
-	getnameinfo(sa4, sa4->sa_len,
-		dst4, sizeof(dst4), NULL, 0, NI_NUMERICHOST);
+	sa4 = (void *)&dstaddr4;
+	(void)getnameinfo(sa4, (socklen_t)sa4->sa_len,
+	    dst4, (socklen_t)sizeof(dst4), NULL, 0, NI_NUMERICHOST);
 
 	conf = config_match(srcaddr, sa4);
 	if (!conf || !conf->permit) {
-		close(s_src);
+		(void)close(s_src);
 		if (conf) {
 			exit_failure("translation to %s not permitted for %s",
 			    dst4, prefix_string(&conf->match));
@@ -514,9 +512,9 @@
 	setproctitle("port %s, %s -> %s", service, src, dst4);
 
 	if (sa4->sa_family == AF_INET6)
-		hport = ntohs(((struct sockaddr_in6 *)&dstaddr4)->sin6_port);
+		hport = ntohs(((struct sockaddr_in6 *)(void *)&dstaddr4)->sin6_port);
 	else /* AF_INET */
-		hport = ntohs(((struct sockaddr_in *)&dstaddr4)->sin_port);
+		hport = ntohs(((struct sockaddr_in *)(void *)&dstaddr4)->sin_port);
 
 	if (pflag)
 		s_dst = rresvport_af(&nresvport, sa4->sa_family);
@@ -528,31 +526,34 @@
 	}
 
 	if (conf->src.a.ss_family) {
-		if (bind(s_dst, (const struct sockaddr *)&conf->src.a,
-		    conf->src.a.ss_len) < 0) {
+		if (bind(s_dst, (const void*)&conf->src.a,
+		    (socklen_t)conf->src.a.ss_len) < 0) {
 			exit_failure("bind: %s", strerror(errno));
 			/*NOTREACHED*/
 		}
 	}
 
-	error = setsockopt(s_dst, SOL_SOCKET, SO_OOBINLINE, &on, sizeof(on));
+	error = setsockopt(s_dst, SOL_SOCKET, SO_OOBINLINE, &on,
+	    (socklen_t)sizeof(on));
 	if (error < 0) {
 		exit_failure("setsockopt(SO_OOBINLINE): %s", strerror(errno));
 		/*NOTREACHED*/
 	}
 
-	error = setsockopt(s_src, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
+	error = setsockopt(s_src, SOL_SOCKET, SO_SNDTIMEO, &tv,
+	    (socklen_t)sizeof(tv));
 	if (error < 0) {
 		exit_failure("setsockopt(SO_SNDTIMEO): %s", strerror(errno));
 		/*NOTREACHED*/
 	}
-	error = setsockopt(s_dst, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
+	error = setsockopt(s_dst, SOL_SOCKET, SO_SNDTIMEO, &tv,
+	    (socklen_t)sizeof(tv));
 	if (error < 0) {
 		exit_failure("setsockopt(SO_SNDTIMEO): %s", strerror(errno));
 		/*NOTREACHED*/
 	}
 
-	error = connect(s_dst, sa4, sa4->sa_len);
+	error = connect(s_dst, sa4, (socklen_t)sa4->sa_len);
 	if (error < 0) {
 		exit_failure("connect: %s", strerror(errno));
 		/*NOTREACHED*/
@@ -592,11 +593,8 @@
 		/*NOTREACHED*/
 	}
 
-	if (memcmp(dst, &faith_prefix,
-			sizeof(struct in6_addr) - sizeof(struct in_addr) == 0) {
-		return 1;
-	}
-	return 0;
+	return memcmp(dst, &faith_prefix,
+	    sizeof(struct in6_addr) - sizeof(struct in_addr)) == 0;
 #else
 	struct myaddrs *p;
 	struct sockaddr_in6 *sin6;
@@ -605,7 +603,7 @@
 	struct sockaddr_in *dst4;
 	struct sockaddr_in dstmap;
 
-	dst6 = (struct sockaddr_in6 *)dst;
+	dst6 = (void *)dst;
 	if (dst->sa_family == AF_INET6
 	 && IN6_IS_ADDR_V4MAPPED(&dst6->sin6_addr)) {
 		/* ugly... */
@@ -614,15 +612,15 @@
 		dstmap.sin_len = sizeof(dstmap);
 		memcpy(&dstmap.sin_addr, &dst6->sin6_addr.s6_addr[12],
 			sizeof(dstmap.sin_addr));
-		dst = (struct sockaddr *)&dstmap;
+		dst = (void *)&dstmap;
 	}
 
-	dst6 = (struct sockaddr_in6 *)dst;
-	dst4 = (struct sockaddr_in *)dst;
+	dst6 = (void *)dst;
+	dst4 = (void *)dst;
 
 	for (p = myaddrs; p; p = p->next) {
-		sin6 = (struct sockaddr_in6 *)p->addr;
-		sin4 = (struct sockaddr_in *)p->addr;
+		sin6 = (void *)p->addr;
+		sin4 = (void *)p->addr;
 
 		if (p->addr->sa_len != dst->sa_len
 		 || p->addr->sa_family != dst->sa_family)
@@ -665,6 +663,7 @@
 
 
 static void
+/*ARGSUSED*/
 sig_child(int sig)
 {
 	int status;
@@ -677,6 +676,7 @@
 }
 
 void
+/*ARGSUSED*/
 sig_terminate(int sig)
 {
 	syslog(LOG_INFO, "Terminating faith daemon");	
@@ -694,11 +694,11 @@
 		exit_stderr("daemon: %s", strerror(errno));
 
 #ifdef SA_NOCLDWAIT
-	memset(&sa, 0, sizeof(sa));
+	(void)memset(&sa, 0, sizeof(sa));
 	sa.sa_handler = sig_child;
 	sa.sa_flags = SA_NOCLDWAIT;
-	sigemptyset(&sa.sa_mask);
-	sigaction(SIGCHLD, &sa, (struct sigaction *)0);
+	(void)sigemptyset(&sa.sa_mask);
+	(void)sigaction(SIGCHLD, &sa, (struct sigaction *)0);
 #else
 	if (signal(SIGCHLD, sig_child) == SIG_ERR) {
 		exit_failure("signal CHLD: %s", strerror(errno));
@@ -716,12 +716,11 @@
 exit_stderr(const char *fmt, ...)
 {
 	va_list ap;
-	char buf[BUFSIZ];
 
 	va_start(ap, fmt);
-	vsnprintf(buf, sizeof(buf), fmt, ap);
+	(void)fprintf(stderr, "%s: ", getprogname());
+	(void)vfprintf(stderr, fmt, ap);
 	va_end(ap);
-	fprintf(stderr, "%s\n", buf);
 	exit(EXIT_FAILURE);
 }
 
@@ -729,12 +728,10 @@
 exit_failure(const char *fmt, ...)
 {
 	va_list ap;
-	char buf[BUFSIZ];
 
 	va_start(ap, fmt);
-	vsnprintf(buf, sizeof(buf), fmt, ap);
+	vsyslog(LOG_ERR, fmt, ap);
 	va_end(ap);
-	syslog(LOG_ERR, "%s", buf);
 	exit(EXIT_FAILURE);
 }
 
@@ -742,18 +739,16 @@
 exit_success(const char *fmt, ...)
 {
 	va_list ap;
-	char buf[BUFSIZ];
 
 	va_start(ap, fmt);
-	vsnprintf(buf, sizeof(buf), fmt, ap);
+	vsyslog(LOG_INFO, fmt, ap);
 	va_end(ap);
-	syslog(LOG_INFO, "%s", buf);
 	exit(EXIT_SUCCESS);
 }
 
 #ifdef USE_ROUTE
 static void
-grab_myaddrs()
+grab_myaddrs(void)
 {
 	struct ifaddrs *ifap, *ifa;
 	struct myaddrs *p;
@@ -781,14 +776,15 @@
 		}
 		memcpy(p + 1, ifa->ifa_addr, ifa->ifa_addr->sa_len);
 		p->next = myaddrs;
-		p->addr = (struct sockaddr *)(p + 1);
+		p->addr = (void *)(p + 1);
 #ifdef __KAME__
 		if (ifa->ifa_addr->sa_family == AF_INET6) {
-			sin6 = (struct sockaddr_in6 *)p->addr;
+			sin6 = (void *)p->addr;
 			if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)
 			 || IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr)) {
 				sin6->sin6_scope_id =
-					ntohs(*(u_int16_t *)&sin6->sin6_addr.s6_addr[2]);
+				    ntohs(*(uint16_t *)(void *)
+				    &sin6->sin6_addr.s6_addr[3]);
 				sin6->sin6_addr.s6_addr[2] = 0;
 				sin6->sin6_addr.s6_addr[3] = 0;
 			}
@@ -797,9 +793,9 @@
 		myaddrs = p;
 		if (dflag) {
 			char hbuf[NI_MAXHOST];
-			getnameinfo(p->addr, p->addr->sa_len,
-				hbuf, sizeof(hbuf), NULL, 0,
-				NI_NUMERICHOST);
+			(void)getnameinfo(p->addr, (socklen_t)p->addr->sa_len,
+			    hbuf, (socklen_t)sizeof(hbuf), NULL, 0,
+			    NI_NUMERICHOST);
 			syslog(LOG_INFO, "my interface: %s %s", hbuf,
 			    ifa->ifa_name);
 		}
@@ -809,7 +805,7 @@
 }
 
 static void
-free_myaddrs()
+free_myaddrs(void)
 {
 	struct myaddrs *p, *q;
 
@@ -823,10 +819,10 @@
 }
 
 static void
-update_myaddrs()
+update_myaddrs(void)
 {
 	char msg[BUFSIZ];
-	int len;
+	ssize_t len;
 	struct rt_msghdr *rtm;
 
 	len = read(sockfd, msg, sizeof(msg));
@@ -834,14 +830,14 @@
 		syslog(LOG_ERR, "read(PF_ROUTE) failed");
 		return;
 	}
-	rtm = (struct rt_msghdr *)msg;
+	rtm = (void *)msg;
 	if (len < 4 || len < rtm->rtm_msglen) {
 		syslog(LOG_ERR, "read(PF_ROUTE) short read");
 		return;
 	}
 	if (rtm->rtm_version != RTM_VERSION) {
 		syslog(LOG_ERR, "routing socket version mismatch");
-		close(sockfd);
+		(void)close(sockfd);
 		sockfd = 0;
 		return;
 	}
@@ -862,9 +858,10 @@
 #endif /*USE_ROUTE*/
 
 static void
-usage()
+usage(void)
 {
-	fprintf(stderr, "usage: %s [-dp] [-f conf] service [serverpath [serverargs]]\n",
-		faithdname);
+	(void)fprintf(stderr,
+	    "Usage: %s [-dp] [-f conf] service [serverpath [serverargs]]\n",
+	    getprogname());
 	exit(0);
 }

Index: src/usr.sbin/faithd/faithd.h
diff -u src/usr.sbin/faithd/faithd.h:1.9 src/usr.sbin/faithd/faithd.h:1.10
--- src/usr.sbin/faithd/faithd.h:1.9	Thu May  9 10:24:03 2002
+++ src/usr.sbin/faithd/faithd.h	Fri Nov 26 13:58:43 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: faithd.h,v 1.9 2002/05/09 14:24:03 itojun Exp $	*/
+/*	$NetBSD: faithd.h,v 1.10 2010/11/26 18:58:43 christos Exp $	*/
 /*	$KAME: faithd.h,v 1.9 2002/05/09 09:41:24 itojun Exp $	*/
 
 /*
@@ -33,13 +33,13 @@
 extern char logname[];
 extern int dflag;
 
-extern void tcp_relay __P((int, int, const char *));
-extern void ftp_relay __P((int, int));
-extern int ftp_active __P((int, int, int *, int *));
-extern int ftp_passive __P((int, int, int *, int *));
-extern void exit_success __P((const char *, ...))
+extern void tcp_relay(int, int, const char *);
+extern void ftp_relay(int, int);
+extern int ftp_active(int, int, int *, int *);
+extern int ftp_passive(int, int, int *, int *);
+extern void exit_success(const char *, ...)
 	__attribute__((__format__(__printf__, 1, 2)));
-extern void exit_failure __P((const char *, ...))
+extern void exit_failure(const char *, ...)
 	__attribute__((__format__(__printf__, 1, 2)));
 
 #define DEFAULT_PORT_NAME	"telnet"
Index: src/usr.sbin/faithd/tcp.c
diff -u src/usr.sbin/faithd/tcp.c:1.9 src/usr.sbin/faithd/tcp.c:1.10
--- src/usr.sbin/faithd/tcp.c:1.9	Tue Aug 20 19:02:45 2002
+++ src/usr.sbin/faithd/tcp.c	Fri Nov 26 13:58:43 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: tcp.c,v 1.9 2002/08/20 23:02:45 itojun Exp $	*/
+/*	$NetBSD: tcp.c,v 1.10 2010/11/26 18:58:43 christos Exp $	*/
 /*	$KAME: tcp.c,v 1.10 2002/08/20 23:01:01 itojun Exp $	*/
 
 /*
@@ -54,7 +54,8 @@
 
 static char tcpbuf[16*1024];
 	/* bigger than MSS and may be lesser than window size */
-static int tblen, tboff, oob_exists;
+static ssize_t tblen, tboff;
+static int oob_exists;
 static fd_set readfds, writefds, exceptfds;
 static char atmark_buf[2];
 static pid_t cpid = (pid_t)0;
@@ -62,12 +63,12 @@
 volatile time_t child_lastactive = (time_t)0;
 static time_t parent_lastactive = (time_t)0;
 
-static void sig_ctimeout __P((int));
-static void sig_child __P((int));
-static void notify_inactive __P((void));
-static void notify_active __P((void));
-static void send_data __P((int, int, const char *, int));
-static void relay __P((int, int, const char *, int));
+static void sig_ctimeout(int);
+static void sig_child(int);
+static void notify_inactive(void);
+static void notify_active(void);
+static void send_data(int, int, const char *, int);
+static void relay(int, int, const char *, int);
 
 /*
  * Inactivity timer:
@@ -76,6 +77,7 @@
  * - parent side (ppid == 0) will check the last SIGUSR1 it have seen.
  */
 static void
+/*ARGSUSED*/
 sig_ctimeout(int sig)
 {
 	/* parent side: record notification from the child */
@@ -86,6 +88,7 @@
 
 /* parent will terminate if child dies. */
 static void
+/*ARGSUSED*/
 sig_child(int sig)
 {
 	int status;
@@ -118,9 +121,9 @@
 	if (FAITH_TIMEOUT < t - child_lastactive
 	 && FAITH_TIMEOUT < t - parent_lastactive) {
 		/* both side timeouted */
-		signal(SIGCHLD, SIG_DFL);
-		kill(cpid, SIGTERM);
-		wait(NULL);
+		(void)signal(SIGCHLD, SIG_DFL);
+		(void)kill(cpid, SIGTERM);
+		(void)wait(NULL);
 		exit_failure("connection timeout");
 		/* NOTREACHED */
 	}
@@ -147,9 +150,10 @@
 }
 
 static void
+/*ARGSUSED*/
 send_data(int s_rcv, int s_snd, const char *service, int direction)
 {
-	int cc;
+	ssize_t cc;
 
 	if (oob_exists) {
 		cc = send(s_snd, atmark_buf, 1, MSG_OOB);
@@ -162,7 +166,7 @@
 	}
 
 	for (; tboff < tblen; tboff += cc) {
-		cc = write(s_snd, tcpbuf + tboff, tblen - tboff);
+		cc = write(s_snd, tcpbuf + tboff, (size_t)(tblen - tboff));
 		if (cc < 0)
 			goto retry_or_err;
 	}
@@ -201,7 +205,7 @@
 	FD_ZERO(&readfds);
 	FD_ZERO(&writefds);
 	FD_ZERO(&exceptfds);
-	fcntl(s_snd, F_SETFD, O_NONBLOCK);
+	(void)fcntl(s_snd, F_SETFD, O_NONBLOCK);
 	oreadfds = readfds; owritefds = writefds; oexceptfds = exceptfds;
 	if (s_rcv >= FD_SETSIZE)
 		exit_failure("descriptor too big");
@@ -235,8 +239,8 @@
 		if (FD_ISSET(s_rcv, &exceptfds)) {
 			error = ioctl(s_rcv, SIOCATMARK, &atmark);
 			if (error != -1 && atmark == 1) {
-				int cc;
-			    oob_read_retry:
+				ssize_t cc;
+oob_read_retry:
 				cc = read(s_rcv, atmark_buf, 1);
 				if (cc == 1) {
 					if (s_rcv >= FD_SETSIZE)
@@ -269,10 +273,10 @@
 				/* NOTREACHED */
 			case 0:
 				/* to close opposite-direction relay process */
-				shutdown(s_snd, 0);
+				(void)shutdown(s_snd, 0);
 
-				close(s_rcv);
-				close(s_snd);
+				(void)close(s_rcv);
+				(void)close(s_snd);
 				exit_success("terminating %s relay", service);
 				/* NOTREACHED */
 			default:
@@ -314,8 +318,8 @@
 	default:
 		/* parent process: relay coming traffic */
 		ppid = (pid_t)0;
-		signal(SIGUSR1, sig_ctimeout);
-		signal(SIGCHLD, sig_child);
+		(void)signal(SIGUSR1, sig_ctimeout);
+		(void)signal(SIGCHLD, sig_child);
 		relay(s_dst, s_src, service, 0);
 		/* NOTREACHED */
 	}

Index: src/usr.sbin/faithd/ftp.c
diff -u src/usr.sbin/faithd/ftp.c:1.18 src/usr.sbin/faithd/ftp.c:1.19
--- src/usr.sbin/faithd/ftp.c:1.18	Sun Apr 19 02:09:42 2009
+++ src/usr.sbin/faithd/ftp.c	Fri Nov 26 13:58:43 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ftp.c,v 1.18 2009/04/19 06:09:42 lukem Exp $	*/
+/*	$NetBSD: ftp.c,v 1.19 2010/11/26 18:58:43 christos Exp $	*/
 /*	$KAME: ftp.c,v 1.23 2003/08/19 21:20:33 itojun Exp $	*/
 
 /*
@@ -52,7 +52,6 @@
 #include "faithd.h"
 
 static char rbuf[MSS];
-static char sbuf[MSS];
 static int passivemode = 0;
 static int wport4 = -1;			/* listen() to active */
 static int wport6 = -1;			/* listen() to passive */
@@ -64,19 +63,18 @@
 
 enum state { NONE, LPRT, EPRT, LPSV, EPSV };
 
-static int ftp_activeconn __P((void));
-static int ftp_passiveconn __P((void));
-static int ftp_copy __P((int, int));
-static int ftp_copyresult __P((int, int, enum state));
-static int ftp_copycommand __P((int, int, enum state *));
+static int ftp_activeconn(void);
+static int ftp_passiveconn(void);
+static ssize_t ftp_copy(int, int);
+static ssize_t ftp_copyresult(int, int, enum state);
+static ssize_t ftp_copycommand(int, int, enum state *);
 
 void
 ftp_relay(int ctl6, int ctl4)
 {
 	struct pollfd pfd[6];
-	int error;
+	ssize_t error;
 	enum state state = NONE;
-	struct timeval tv;
 
 	syslog(LOG_INFO, "starting ftp control connection");
 
@@ -110,10 +108,8 @@
 		pfd[4].fd = pfd[5].fd = -1;
 		pfd[4].events = pfd[5].events = 0;
 #endif
-		tv.tv_sec = FAITH_TIMEOUT;
-		tv.tv_usec = 0;
-
-		error = poll(pfd, sizeof(pfd)/sizeof(pfd[0]), tv.tv_sec * 1000);
+		error = poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])),
+		    FAITH_TIMEOUT * 1000);
 		if (error == -1) {
 			exit_failure("poll: %s", strerror(errno));
 		}
@@ -173,11 +169,11 @@
 				goto bad;
 			case 0:
 				if (port4 >= 0) {
-					close(port4);
+					(void)close(port4);
 					port4 = -1;
 				}
 				if (port6 >= 0) {
-					close(port6);
+					(void)close(port6);
 					port6 = -1;
 				}
 				syslog(LOG_INFO, "terminating data connection");
@@ -199,11 +195,11 @@
 				goto bad;
 			case 0:
 				if (port4 >= 0) {
-					close(port4);
+					(void)close(port4);
 					port4 = -1;
 				}
 				if (port6 >= 0) {
-					close(port6);
+					(void)close(port6);
 					port6 = -1;
 				}
 				syslog(LOG_INFO, "terminating data connection");
@@ -240,17 +236,15 @@
 	socklen_t n;
 	int error;
 	struct pollfd pfd[1];
-	struct timeval timeout;
 	struct sockaddr *sa;
 
 	/* get active connection from server */
 	pfd[0].fd = wport4;
 	pfd[0].events = POLLIN;
-	timeout.tv_sec = 120;
-	timeout.tv_usec = 0;
 	n = sizeof(data4);
-	if (poll(pfd, sizeof(pfd)/sizeof(pfd[0]), timeout.tv_sec * 1000) == 0 ||
-	    (port4 = accept(wport4, (struct sockaddr *)&data4, &n)) < 0)
+	if (poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])),
+	    120000) == 0 ||
+	    (port4 = accept(wport4, (void *)&data4, &n)) < 0)
 	{
 		(void)close(wport4);
 		wport4 = -1;
@@ -259,7 +253,7 @@
 	}
 
 	/* ask active connection to client */
-	sa = (struct sockaddr *)&data6;
+	sa = (void *)&data6;
 	port6 = socket(sa->sa_family, SOCK_STREAM, 0);
 	if (port6 == -1) {
 		(void)close(port4);
@@ -268,7 +262,7 @@
 		syslog(LOG_INFO, "active mode data connection failed");
 		return -1;
 	}
-	error = connect(port6, sa, sa->sa_len);
+	error = connect(port6, sa, (socklen_t)sa->sa_len);
 	if (error < 0) {
 		(void)close(port6);
 		(void)close(port4);
@@ -288,17 +282,15 @@
 	socklen_t len;
 	int error;
 	struct pollfd pfd[1];
-	struct timeval timeout;
 	struct sockaddr *sa;
 
 	/* get passive connection from client */
 	pfd[0].fd = wport6;
 	pfd[0].events = POLLIN;
-	timeout.tv_sec = 120;
-	timeout.tv_usec = 0;
 	len = sizeof(data6);
-	if (poll(pfd, sizeof(pfd)/sizeof(pfd[0]), timeout.tv_sec * 1000) == 0 ||
-	    (port6 = accept(wport6, (struct sockaddr *)&data6, &len)) < 0)
+	if (poll(pfd, (unsigned int)(sizeof(pfd) / sizeof(pfd[0])),
+	    120000) == 0 ||
+	    (port6 = accept(wport6, (void *)&data6, &len)) < 0)
 	{
 		(void)close(wport6);
 		wport6 = -1;
@@ -307,7 +299,7 @@
 	}
 
 	/* ask passive connection to server */
-	sa = (struct sockaddr *)&data4;
+	sa = (void *)&data4;
 	port4 = socket(sa->sa_family, SOCK_STREAM, 0);
 	if (port4 == -1) {
 		(void)close(wport6);
@@ -316,7 +308,7 @@
 		syslog(LOG_INFO, "passive mode data connection failed");
 		return -1;
 	}
-	error = connect(port4, sa, sa->sa_len);
+	error = connect(port4, sa, (socklen_t)sa->sa_len);
 	if (error < 0) {
 		(void)close(wport6);
 		(void)close(port4);
@@ -330,10 +322,11 @@
 	return 0;
 }
 
-static int
+static ssize_t
 ftp_copy(int src, int dst)
 {
-	int error, atmark, n;
+	int error, atmark;
+	ssize_t n;
 
 	/* OOB data handling */
 	error = ioctl(src, SIOCATMARK, &atmark);
@@ -341,12 +334,12 @@
 		n = read(src, rbuf, 1);
 		if (n == -1)
 			goto bad;
-		send(dst, rbuf, n, MSG_OOB);
+		(void)send(dst, rbuf, (size_t)n, MSG_OOB);
 #if 0
 		n = read(src, rbuf, sizeof(rbuf));
 		if (n == -1)
 			goto bad;
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 #endif
 	}
@@ -357,7 +350,7 @@
 	case 0:
 		return n;
 	default:
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 	}
 
@@ -367,10 +360,11 @@
 	return 0;	/* to make gcc happy */
 }
 
-static int
+static ssize_t
 ftp_copyresult(int src, int dst, enum state state)
 {
-	int error, atmark, n;
+	int error, atmark;
+	ssize_t n;
 	socklen_t len;
 	char *param;
 	int code;
@@ -383,12 +377,12 @@
 		n = read(src, rbuf, 1);
 		if (n == -1)
 			goto bad;
-		send(dst, rbuf, n, MSG_OOB);
+		(void)send(dst, rbuf, (size_t)n, MSG_OOB);
 #if 0
 		n = read(src, rbuf, sizeof(rbuf));
 		if (n == -1)
 			goto bad;
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 #endif
 	}
@@ -405,14 +399,14 @@
 	for (i = 0; i < 3; i++) {
 		if (!isdigit((unsigned char)*p)) {
 			/* invalid reply */
-			write(dst, rbuf, n);
+			(void)write(dst, rbuf, (size_t)n);
 			return n;
 		}
 		p++;
 	}
 	if (!isspace((unsigned char)*p)) {
 		/* invalid reply */
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 	}
 	code = atoi(rbuf);
@@ -428,13 +422,13 @@
 		if (!passivemode && rbuf[0] == '1') {
 			if (ftp_activeconn() < 0) {
 				n = snprintf(rbuf, sizeof(rbuf),
-					"425 Cannot open data connetion\r\n");
+				    "425 Cannot open data connetion\r\n");
 				if (n < 0 || n >= (int)sizeof(rbuf))
 					n = 0;
 			}
 		}
 		if (n)
-			write(dst, rbuf, n);
+			(void)write(dst, rbuf, (size_t)n);
 		return n;
 	case LPRT:
 	case EPRT:
@@ -449,7 +443,7 @@
 			(void)close(wport4);
 			wport4 = -1;
 		}
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 	case LPSV:
 	case EPSV:
@@ -461,7 +455,7 @@
 passivefail0:
 			(void)close(wport6);
 			wport6 = -1;
-			write(dst, rbuf, n);
+			(void)write(dst, rbuf, (size_t)n);
 			return n;
 		}
 
@@ -488,42 +482,37 @@
 
 		/* keep PORT parameter */
 		memset(&data4, 0, sizeof(data4));
-		sin = (struct sockaddr_in *)&data4;
+		sin = (void *)&data4;
 		sin->sin_len = sizeof(*sin);
 		sin->sin_family = AF_INET;
 		sin->sin_addr.s_addr = 0;
 		for (n = 0; n < 4; n++) {
-			sin->sin_addr.s_addr |=
-				htonl((ho[n] & 0xff) << ((3 - n) * 8));
+			sin->sin_addr.s_addr |= htonl(((uint32_t)(ho[n] & 0xff)
+			    << (int)((3 - n) * 8)));
 		}
 		sin->sin_port = htons(((po[0] & 0xff) << 8) | (po[1] & 0xff));
 
 		/* get ready for passive data connection */
 		memset(&data6, 0, sizeof(data6));
-		sin6 = (struct sockaddr_in6 *)&data6;
+		sin6 = (void *)&data6;
 		sin6->sin6_len = sizeof(*sin6);
 		sin6->sin6_family = AF_INET6;
 		wport6 = socket(sin6->sin6_family, SOCK_STREAM, 0);
 		if (wport6 == -1) {
 passivefail:
-			n = snprintf(sbuf, sizeof(sbuf),
-				"500 could not translate from PASV\r\n");
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src,
+			    "500 could not translate from PASV\r\n");
 		}
 #ifdef IPV6_FAITH
 	    {
 		int on = 1;
 		error = setsockopt(wport6, IPPROTO_IPV6, IPV6_FAITH,
-			&on, sizeof(on));
+			&on, (socklen_t)sizeof(on));
 		if (error == -1)
 			exit_failure("setsockopt(IPV6_FAITH): %s", strerror(errno));
 	    }
 #endif
-		error = bind(wport6, (struct sockaddr *)sin6, sin6->sin6_len);
+		error = bind(wport6, (void *)sin6, (socklen_t)sin6->sin6_len);
 		if (error == -1) {
 			(void)close(wport6);
 			wport6 = -1;
@@ -541,51 +530,42 @@
 		 * addr from dst, port from wport6
 		 */
 		len = sizeof(data6);
-		error = getsockname(wport6, (struct sockaddr *)&data6, &len);
+		error = getsockname(wport6, (void *)&data6, &len);
 		if (error == -1) {
 			(void)close(wport6);
 			wport6 = -1;
 			goto passivefail;
 		}
-		sin6 = (struct sockaddr_in6 *)&data6;
+		sin6 = (void *)&data6;
 		port = sin6->sin6_port;
 
 		len = sizeof(data6);
-		error = getsockname(dst, (struct sockaddr *)&data6, &len);
+		error = getsockname(dst, (void *)&data6, &len);
 		if (error == -1) {
 			(void)close(wport6);
 			wport6 = -1;
 			goto passivefail;
 		}
-		sin6 = (struct sockaddr_in6 *)&data6;
+		sin6 = (void *)&data6;
 		sin6->sin6_port = port;
 
 		if (state == LPSV) {
-			a = (char *)&sin6->sin6_addr;
-			p = (char *)&sin6->sin6_port;
-			n = snprintf(sbuf, sizeof(sbuf),
-"228 Entering Long Passive Mode (%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)\r\n",
-				6, 16, UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),
-				UC(a[4]), UC(a[5]), UC(a[6]), UC(a[7]),
-				UC(a[8]), UC(a[9]), UC(a[10]), UC(a[11]),
-				UC(a[12]), UC(a[13]), UC(a[14]), UC(a[15]),
-				2, UC(p[0]), UC(p[1]));
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(dst, sbuf, n);
+			a = (void *)&sin6->sin6_addr;
+			p = (void *)&sin6->sin6_port;
 			passivemode = 1;
-			return n;
+			return dprintf(dst,
+			    "228 Entering Long Passive Mode (%d,%d,%d,%d,%d,%d,"
+			    "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)\r\n",
+			    6, 16, UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),
+			    UC(a[4]), UC(a[5]), UC(a[6]), UC(a[7]),
+			    UC(a[8]), UC(a[9]), UC(a[10]), UC(a[11]),
+			    UC(a[12]), UC(a[13]), UC(a[14]), UC(a[15]),
+			    2, UC(p[0]), UC(p[1]));
 		} else {
-			n = snprintf(sbuf, sizeof(sbuf),
-"229 Entering Extended Passive Mode (|||%d|)\r\n",
-				ntohs(sin6->sin6_port));
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(dst, sbuf, n);
 			passivemode = 1;
-			return n;
+			return dprintf(dst,
+			    "229 Entering Extended Passive Mode (|||%d|)\r\n",
+			    ntohs(sin6->sin6_port));
 		}
 	    }
 	}
@@ -596,10 +576,11 @@
 	return 0;	/* to make gcc happy */
 }
 
-static int
+static ssize_t
 ftp_copycommand(int src, int dst, enum state *state)
 {
-	int error, atmark, n;
+	int error, atmark;
+	ssize_t n;
 	socklen_t len;
 	unsigned int af, hal, ho[16], pal, po[2];
 	char *a, *p, *q;
@@ -616,12 +597,12 @@
 		n = read(src, rbuf, 1);
 		if (n == -1)
 			goto bad;
-		send(dst, rbuf, n, MSG_OOB);
+		(void)send(dst, rbuf, (size_t)n, MSG_OOB);
 #if 0
 		n = read(src, rbuf, sizeof(rbuf));
 		if (n == -1)
 			goto bad;
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 #endif
 	}
@@ -632,7 +613,7 @@
 	rbuf[n] = '\0';
 
 	if (n < 4) {
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 	}
 
@@ -644,7 +625,7 @@
 	for (i = 0; i < 4; i++) {
 		if (!isalpha((unsigned char)*p)) {
 			/* invalid command */
-			write(dst, rbuf, n);
+			(void)write(dst, rbuf, (size_t)n);
 			return n;
 		}
 		*q++ = islower((unsigned char)*p) ? toupper((unsigned char)*p) : *p;
@@ -652,7 +633,7 @@
 	}
 	if (!isspace((unsigned char)*p)) {
 		/* invalid command */
-		write(dst, rbuf, n);
+		(void)write(dst, rbuf, (size_t)n);
 		return n;
 	}
 	*q = '\0';
@@ -678,35 +659,25 @@
 		wport4 = wport6 = port4 = port6 = -1;
 
 		if (epsvall) {
-			n = snprintf(sbuf, sizeof(sbuf), "501 %s disallowed in EPSV ALL\r\n",
-				cmd);
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src, "501 %s disallowed in EPSV ALL\r\n",
+			    cmd);
 		}
 
 		n = sscanf(param,
-"%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",
-			      &af, &hal, &ho[0], &ho[1], &ho[2], &ho[3],
-			      &ho[4], &ho[5], &ho[6], &ho[7],
-			      &ho[8], &ho[9], &ho[10], &ho[11],
-			      &ho[12], &ho[13], &ho[14], &ho[15],
-			      &pal, &po[0], &po[1]);
+		    "%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,"
+		    "%u,%u,%u", &af, &hal, &ho[0], &ho[1], &ho[2], &ho[3],
+		    &ho[4], &ho[5], &ho[6], &ho[7],
+		    &ho[8], &ho[9], &ho[10], &ho[11],
+		    &ho[12], &ho[13], &ho[14], &ho[15],
+		    &pal, &po[0], &po[1]);
 		if (n != 21 || af != 6 || hal != 16|| pal != 2) {
-			n = snprintf(sbuf, sizeof(sbuf),
-				"501 illegal parameter to LPRT\r\n");
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src,
+			    "501 illegal parameter to LPRT\r\n");
 		}
 
 		/* keep LPRT parameter */
 		memset(&data6, 0, sizeof(data6));
-		sin6 = (struct sockaddr_in6 *)&data6;
+		sin6 = (void *)&data6;
 		sin6->sin6_len = sizeof(*sin6);
 		sin6->sin6_family = AF_INET6;
 		for (n = 0; n < 16; n++)
@@ -716,25 +687,20 @@
 sendport:
 		/* get ready for active data connection */
 		len = sizeof(data4);
-		error = getsockname(dst, (struct sockaddr *)&data4, &len);
+		error = getsockname(dst, (void *)&data4, &len);
 		if (error == -1) {
 lprtfail:
-			n = snprintf(sbuf, sizeof(sbuf),
-				"500 could not translate to PORT\r\n");
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src,
+			    "500 could not translate to PORT\r\n");
 		}
-		if (((struct sockaddr *)&data4)->sa_family != AF_INET)
+		if (((struct sockaddr *)(void *)&data4)->sa_family != AF_INET)
 			goto lprtfail;
-		sin = (struct sockaddr_in *)&data4;
+		sin = (void *)&data4;
 		sin->sin_port = 0;
 		wport4 = socket(sin->sin_family, SOCK_STREAM, 0);
 		if (wport4 == -1)
 			goto lprtfail;
-		error = bind(wport4, (struct sockaddr *)sin, sin->sin_len);
+		error = bind(wport4, (void *)sin, (socklen_t)sin->sin_len);
 		if (error == -1) {
 			(void)close(wport4);
 			wport4 = -1;
@@ -749,30 +715,24 @@
 
 		/* transmit PORT */
 		len = sizeof(data4);
-		error = getsockname(wport4, (struct sockaddr *)&data4, &len);
+		error = getsockname(wport4, (void *)&data4, &len);
 		if (error == -1) {
 			(void)close(wport4);
 			wport4 = -1;
 			goto lprtfail;
 		}
-		if (((struct sockaddr *)&data4)->sa_family != AF_INET) {
+		if (((struct sockaddr *)(void *)&data4)->sa_family != AF_INET) {
 			(void)close(wport4);
 			wport4 = -1;
 			goto lprtfail;
 		}
-		sin = (struct sockaddr_in *)&data4;
-		a = (char *)&sin->sin_addr;
-		p = (char *)&sin->sin_port;
-		n = snprintf(sbuf, sizeof(sbuf), "PORT %d,%d,%d,%d,%d,%d\r\n",
-				  UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),
-				  UC(p[0]), UC(p[1]));
-		if (n < 0 || n >= (int)sizeof(sbuf))
-			n = 0;
-		if (n)
-			write(dst, sbuf, n);
+		sin = (void *)&data4;
+		a = (void *)&sin->sin_addr;
+		p = (void *)&sin->sin_port;
 		*state = nstate;
 		passivemode = 0;
-		return n;
+		return dprintf(dst, "PORT %d,%d,%d,%d,%d,%d\r\n",
+		    UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]), UC(p[0]), UC(p[1]));
 	} else if (strcmp(cmd, "EPRT") == 0 && param) {
 		/*
 		 * EPRT -> PORT
@@ -789,13 +749,8 @@
 		wport4 = wport6 = port4 = port6 = -1;
 
 		if (epsvall) {
-			n = snprintf(sbuf, sizeof(sbuf), "501 %s disallowed in EPSV ALL\r\n",
-				cmd);
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src, "501 %s disallowed in EPSV ALL\r\n",
+			    cmd);
 		}
 
 		p = param;
@@ -805,13 +760,8 @@
 			p++;
 		if (!*p) {
 eprtparamfail:
-			n = snprintf(sbuf, sizeof(sbuf),
-				"501 illegal parameter to EPRT\r\n");
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src,
+			    "501 illegal parameter to EPRT\r\n");
 		}
 		*p++ = '\0';
 		hostp = p;
@@ -829,13 +779,8 @@
 
 		n = sscanf(afp, "%d", &af);
 		if (n != 1 || af != 2) {
-			n = snprintf(sbuf, sizeof(sbuf),
-				"501 unsupported address family to EPRT\r\n");
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src,
+			    "501 unsupported address family to EPRT\r\n");
 		}
 		memset(&hints, 0, sizeof(hints));
 		hints.ai_family = AF_UNSPEC;
@@ -843,23 +788,14 @@
 		hints.ai_protocol = IPPROTO_TCP;
 		error = getaddrinfo(hostp, portp, &hints, &res);
 		if (error) {
-			n = snprintf(sbuf, sizeof(sbuf),
-				"501 EPRT: %s\r\n", gai_strerror(error));
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src,
+			    "501 EPRT: %s\r\n", gai_strerror(error));
 		}
 		if (res->ai_next) {
-			n = snprintf(sbuf, sizeof(sbuf),
-				"501 EPRT: %s resolved to multiple addresses\r\n", hostp);
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
 			freeaddrinfo(res);
-			return n;
+			return dprintf(src,
+			    "501 EPRT: %s resolved to multiple addresses\r\n",
+			    hostp);
 		}
 
 		memcpy(&data6, res->ai_addr, res->ai_addrlen);
@@ -879,24 +815,14 @@
 		wport4 = wport6 = port4 = port6 = -1;
 
 		if (epsvall) {
-			n = snprintf(sbuf, sizeof(sbuf), "501 %s disallowed in EPSV ALL\r\n",
-				cmd);
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
-			return n;
+			return dprintf(src, "501 %s disallowed in EPSV ALL\r\n",
+			    cmd);
 		}
 
-		/* transmit PASV */
-		n = snprintf(sbuf, sizeof(sbuf), "PASV\r\n");
-		if (n < 0 || n >= (int)sizeof(sbuf))
-			n = 0;
-		if (n)
-			write(dst, sbuf, n);
 		*state = LPSV;
 		passivemode = 0;	/* to be set to 1 later */
-		return n;
+		/* transmit PASV */
+		return dprintf(dst, "PASV\r\n");
 	} else if (strcmp(cmd, "EPSV") == 0 && !param) {
 		/*
 		 * EPSV -> PASV
@@ -907,36 +833,22 @@
 		(void)close(port6);
 		wport4 = wport6 = port4 = port6 = -1;
 
-		n = snprintf(sbuf, sizeof(sbuf), "PASV\r\n");
-		if (n < 0 || n >= (int)sizeof(sbuf))
-			n = 0;
-		if (n)
-			write(dst, sbuf, n);
 		*state = EPSV;
 		passivemode = 0;	/* to be set to 1 later */
-		return n;
-	} else if (strcmp(cmd, "EPSV") == 0 && param
-	 && strncasecmp(param, "ALL", 3) == 0 && isspace((unsigned char)param[3])) {
+		return dprintf(dst, "PASV\r\n");
+	} else if (strcmp(cmd, "EPSV") == 0 && param &&
+	    strncasecmp(param, "ALL", 3) == 0 &&
+	    isspace((unsigned char)param[3])) {
 		/*
 		 * EPSV ALL
 		 */
 		epsvall = 1;
-		n = snprintf(sbuf, sizeof(sbuf), "200 EPSV ALL command successful.\r\n");
-		if (n < 0 || n >= (int)sizeof(sbuf))
-			n = 0;
-		if (n)
-			write(src, sbuf, n);
-		return n;
+		return dprintf(src, "200 EPSV ALL command successful.\r\n");
 	} else if (strcmp(cmd, "PORT") == 0 || strcmp(cmd, "PASV") == 0) {
 		/*
 		 * reject PORT/PASV
 		 */
-		n = snprintf(sbuf, sizeof(sbuf), "502 %s not implemented.\r\n", cmd);
-		if (n < 0 || n >= (int)sizeof(sbuf))
-			n = 0;
-		if (n)
-			write(src, sbuf, n);
-		return n;
+		return dprintf(src, "502 %s not implemented.\r\n", cmd);
 	} else if (passivemode
 		&& (strcmp(cmd, "STOR") == 0
 		 || strcmp(cmd, "STOU") == 0
@@ -949,24 +861,18 @@
 		 * mode data connection.
 		 */
 
+		*state = NONE;
 		if (ftp_passiveconn() < 0) {
-			n = snprintf(sbuf, sizeof(sbuf), "425 Cannot open data connetion\r\n");
-			if (n < 0 || n >= (int)sizeof(sbuf))
-				n = 0;
-			if (n)
-				write(src, sbuf, n);
+			return dprintf(src,
+			    "425 Cannot open data connetion\r\n");
 		} else {
 			/* simply relay the command */
-			write(dst, rbuf, n);
+			return write(dst, rbuf, (size_t)n);
 		}
-
-		*state = NONE;
-		return n;
 	} else {
 		/* simply relay it */
 		*state = NONE;
-		write(dst, rbuf, n);
-		return n;
+		return write(dst, rbuf, (size_t)n);
 	}
 
  bad:

Index: src/usr.sbin/faithd/prefix.c
diff -u src/usr.sbin/faithd/prefix.c:1.7 src/usr.sbin/faithd/prefix.c:1.8
--- src/usr.sbin/faithd/prefix.c:1.7	Sun Apr 19 02:09:42 2009
+++ src/usr.sbin/faithd/prefix.c	Fri Nov 26 13:58:43 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: prefix.c,v 1.7 2009/04/19 06:09:42 lukem Exp $	*/
+/*	$NetBSD: prefix.c,v 1.8 2010/11/26 18:58:43 christos Exp $	*/
 /*	$KAME: prefix.c,v 1.13 2003/09/02 22:50:17 itojun Exp $	*/
 
 /*
@@ -63,7 +63,6 @@
 	char *p = NULL, *q, *r;
 	struct addrinfo hints, *res = NULL;
 	int max;
-	char *a;
 
 	p = strdup(s);
 	if (!p)
@@ -88,14 +87,11 @@
 	switch (prefix->a.ss_family) {
 	case AF_INET:
 		max = 32;
-		a = (char *)&((struct sockaddr_in *)&prefix->a)->sin_addr;
 		break;
 	case AF_INET6:
 		max = 128;
-		a = (char *)&((struct sockaddr_in6 *)&prefix->a)->sin6_addr;
 		break;
 	default:
-		a = NULL;
 		max = -1;
 		break;
 	}
@@ -130,10 +126,10 @@
 	static char buf[NI_MAXHOST + 20];
 	char hbuf[NI_MAXHOST];
 
-	if (getnameinfo((const struct sockaddr *)&prefix->a, prefix->a.ss_len,
-	    hbuf, sizeof(hbuf), NULL, 0, niflags))
+	if (getnameinfo((const void *)&prefix->a, (socklen_t)prefix->a.ss_len,
+	    hbuf, (socklen_t)sizeof(hbuf), NULL, 0, niflags))
 		return NULL;
-	snprintf(buf, sizeof(buf), "%s/%d", hbuf, prefix->l);
+	(void)snprintf(buf, sizeof(buf), "%s/%d", hbuf, prefix->l);
 	return buf;
 }
 
@@ -173,8 +169,8 @@
 	if (off + l > a.ss_len)
 		return 0;
 
-	pa = ((char *)&a) + off;
-	pb = ((char *)&b) + off;
+	pa = ((char *)(void *)&a) + off;
+	pb = ((char *)(void *)&b) + off;
 	if (prefix->l % 8) {
 		pa[prefix->l / 8] &= 0xff00 >> (prefix->l % 8);
 		pb[prefix->l / 8] &= 0xff00 >> (prefix->l % 8);
@@ -200,7 +196,7 @@
 
 	if (strlen(line) + 1 > sizeof(buf))
 		return NULL;
-	strlcpy(buf, line, sizeof(buf));
+	(void)strlcpy(buf, line, sizeof(buf));
 
 	p = strchr(buf, '\n');
 	if (!p)
@@ -280,7 +276,7 @@
 
 	p = &sentinel;
 	sentinel.next = NULL;
-	while (fgets(buf, sizeof(buf), fp) != NULL) {
+	while (fgets(buf, (int)sizeof(buf), fp) != NULL) {
 		conf = config_load1(buf);
 		if (conf) {
 			p->next = conf;
@@ -289,7 +285,7 @@
 	}
 	config_list = sentinel.next;
 
-	fclose(fp);
+	(void)fclose(fp);
 	return 0;
 }
 

Reply via email to