Module Name:    src
Committed By:   lukem
Date:           Sun Apr 12 10:18:52 UTC 2009

Modified Files:
        src/usr.bin/ftp: cmds.c cmdtab.c complete.c domacro.c extern.h fetch.c
            ftp.c ftp_var.h main.c progressbar.c progressbar.h util.c version.h

Log Message:
Fix numerous WARNS=4 issues (-Wcast-qual -Wsign-compare).


To generate a diff of this commit:
cvs rdiff -u -r1.128 -r1.129 src/usr.bin/ftp/cmds.c
cvs rdiff -u -r1.50 -r1.51 src/usr.bin/ftp/cmdtab.c
cvs rdiff -u -r1.45 -r1.46 src/usr.bin/ftp/complete.c
cvs rdiff -u -r1.21 -r1.22 src/usr.bin/ftp/domacro.c
cvs rdiff -u -r1.75 -r1.76 src/usr.bin/ftp/extern.h
cvs rdiff -u -r1.186 -r1.187 src/usr.bin/ftp/fetch.c
cvs rdiff -u -r1.157 -r1.158 src/usr.bin/ftp/ftp.c
cvs rdiff -u -r1.80 -r1.81 src/usr.bin/ftp/ftp_var.h
cvs rdiff -u -r1.114 -r1.115 src/usr.bin/ftp/main.c
cvs rdiff -u -r1.20 -r1.21 src/usr.bin/ftp/progressbar.c
cvs rdiff -u -r1.7 -r1.8 src/usr.bin/ftp/progressbar.h
cvs rdiff -u -r1.149 -r1.150 src/usr.bin/ftp/util.c
cvs rdiff -u -r1.77 -r1.78 src/usr.bin/ftp/version.h

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

Modified files:

Index: src/usr.bin/ftp/cmds.c
diff -u src/usr.bin/ftp/cmds.c:1.128 src/usr.bin/ftp/cmds.c:1.129
--- src/usr.bin/ftp/cmds.c:1.128	Sun Apr 12 07:07:41 2009
+++ src/usr.bin/ftp/cmds.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: cmds.c,v 1.128 2009/04/12 07:07:41 lukem Exp $	*/
+/*	$NetBSD: cmds.c,v 1.129 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -96,7 +96,7 @@
 #if 0
 static char sccsid[] = "@(#)cmds.c	8.6 (Berkeley) 10/9/94";
 #else
-__RCSID("$NetBSD: cmds.c,v 1.128 2009/04/12 07:07:41 lukem Exp $");
+__RCSID("$NetBSD: cmds.c,v 1.129 2009/04/12 10:18:52 lukem Exp $");
 #endif
 #endif /* not lint */
 
@@ -115,6 +115,7 @@
 #include <limits.h>
 #include <netdb.h>
 #include <paths.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -125,17 +126,17 @@
 #include "version.h"
 
 static struct types {
-	char	*t_name;
-	char	*t_mode;
-	int	t_type;
-	char	*t_arg;
+	const char	*t_name;
+	const char	*t_mode;
+	int		t_type;
+	const char	*t_arg;
 } types[] = {
 	{ "ascii",	"A",	TYPE_A,	0 },
 	{ "binary",	"I",	TYPE_I,	0 },
 	{ "image",	"I",	TYPE_I,	0 },
 	{ "ebcdic",	"E",	TYPE_E,	0 },
 	{ "tenex",	"L",	TYPE_L,	bytename },
-	{ NULL }
+	{ NULL,		NULL,	0, NULL }
 };
 
 static sigjmp_buf	 jabort;
@@ -143,6 +144,7 @@
 static int	confirm(const char *, const char *);
 static void	mintr(int);
 static void	mabort(const char *);
+static void	set_type(const char *);
 
 static const char *doprocess(char *, size_t, const char *, int, int, int);
 static const char *domap(char *, size_t, const char *);
@@ -217,10 +219,9 @@
 settype(int argc, char *argv[])
 {
 	struct types *p;
-	int comret;
 
 	if (argc == 0 || argc > 2) {
-		char *sep;
+		const char *sep;
 
 		UPRINTF("usage: %s [", argv[0]);
 		sep = " ";
@@ -237,11 +238,20 @@
 		code = 0;
 		return;
 	}
+	set_type(argv[1]);
+}
+
+void
+set_type(const char *ttype)
+{
+	struct types *p;
+	int comret;
+
 	for (p = types; p->t_name; p++)
-		if (strcmp(argv[1], p->t_name) == 0)
+		if (strcmp(ttype, p->t_name) == 0)
 			break;
 	if (p->t_name == 0) {
-		fprintf(ttyout, "%s: unknown mode.\n", argv[1]);
+		fprintf(ttyout, "%s: unknown mode.\n", ttype);
 		code = -1;
 		return;
 	}
@@ -287,12 +297,6 @@
 	verbose = oldverbose;
 }
 
-char *stype[] = {
-	"type",
-	"",
-	0
-};
-
 /*
  * Set binary transfer type.
  */
@@ -306,8 +310,7 @@
 		code = -1;
 		return;
 	}
-	stype[1] = "binary";
-	settype(2, stype);
+	set_type("binary");
 }
 
 /*
@@ -323,8 +326,7 @@
 		code = -1;
 		return;
 	}
-	stype[1] = "ascii";
-	settype(2, stype);
+	set_type("ascii");
 }
 
 /*
@@ -340,8 +342,7 @@
 		code = -1;
 		return;
 	}
-	stype[1] = "tenex";
-	settype(2, stype);
+	set_type("tenex");
 }
 
 /*
@@ -402,7 +403,7 @@
 put(int argc, char *argv[])
 {
 	char buf[MAXPATHLEN];
-	char *cmd;
+	const char *cmd;
 	int loc = 0;
 	char *locfile;
 	const char *remfile;
@@ -680,7 +681,7 @@
 	int ointer;
 	char *cp;
 	const char *tp;
-	int restartit;
+	int volatile restartit;
 
 	if (argc == 0 ||
 	    (argc == 1 && !another(&argc, &argv, "remote-files"))) {
@@ -747,9 +748,9 @@
 void
 fget(int argc, char *argv[])
 {
-	char	*gmode;
+	const char *gmode;
 	FILE	*fp;
-	char	buf[MAXPATHLEN];
+	char	buf[MAXPATHLEN], cmdbuf[MAX_C_NAME];
 
 	if (argc != 2) {
 		UPRINTF("usage: %s localfile\n", argv[0]);
@@ -764,7 +765,8 @@
 		return;
 	}
 
-	argv[0] = "get";
+	(void)strlcpy(cmdbuf, "get", sizeof(cmdbuf));
+	argv[0] = cmdbuf;
 	gmode = restart_point ? "r+" : "w";
 
 	while (getline(fp, buf, sizeof(buf), NULL) >= 0) {
@@ -1282,12 +1284,14 @@
 ls(int argc, char *argv[])
 {
 	const char *cmd;
-	char *remdir, *locfile;
-	int freelocfile, pagecmd, mlsdcmd;
+	char *remdir, *locbuf;
+	const char *locfile;
+	int pagecmd, mlsdcmd;
 
 	remdir = NULL;
+	locbuf = NULL;
 	locfile = "-";
-	freelocfile = pagecmd = mlsdcmd = 0;
+	pagecmd = mlsdcmd = 0;
 			/*
 			 * the only commands that start with `p' are
 			 * the `pager' versions.
@@ -1328,29 +1332,29 @@
 	}
 
 	if (pagecmd) {
-		char *p;
+		const char *p;
 		size_t len;
 
 		p = getoptionvalue("pager");
 		if (EMPTYSTRING(p))
 			p = DEFAULTPAGER;
 		len = strlen(p) + 2;
-		locfile = ftp_malloc(len);
-		locfile[0] = '|';
-		(void)strlcpy(locfile + 1, p, len - 1);
-		freelocfile = 1;
+		locbuf = ftp_malloc(len);
+		locbuf[0] = '|';
+		(void)strlcpy(locbuf + 1, p, len - 1);
+		locfile = locbuf;
 	} else if ((strcmp(locfile, "-") != 0) && *locfile != '|') {
-		if ((locfile = globulize(locfile)) == NULL ||
-		    !confirm("output to local-file:", locfile)) {
+		if ((locbuf = globulize(locfile)) == NULL ||
+		    !confirm("output to local-file:", locbuf)) {
 			code = -1;
 			goto freels;
 		}
-		freelocfile = 1;
+		locfile = locbuf;
 	}
 	recvrequest(cmd, locfile, remdir, "w", 0, 0);
  freels:
-	if (freelocfile && locfile)
-		(void)free(locfile);
+	if (locbuf)
+		(void)free(locbuf);
 }
 
 /*
@@ -1361,8 +1365,9 @@
 {
 	sigfunc oldintr;
 	int ointer, i;
-	int dolist;
-	char *lmode, *dest, *odest;
+	int volatile dolist;
+	char * volatile dest, *odest;
+	const char *lmode;
 
 	if (argc == 0)
 		goto usage;
@@ -1415,7 +1420,8 @@
 {
 	pid_t pid;
 	sigfunc oldintr;
-	char shellnam[MAXPATHLEN], *shellp, *namep;
+	char shellnam[MAXPATHLEN];
+	const char *shellp, *namep;
 	int wait_status;
 
 	if (argc == 0) {
@@ -1833,6 +1839,7 @@
 	struct cmd *c;
 	int cmdpos;
 	sigfunc oldintr;
+	char cmdbuf[MAX_C_NAME];
 
 	if (argc == 0 || (argc == 1 && !another(&argc, &argv, "command"))) {
 		UPRINTF("usage: %s command\n", argv[0]);
@@ -1871,7 +1878,8 @@
 	cmdpos = strcspn(line, " \t");
 	if (cmdpos > 0)		/* remove leading "proxy " from input buffer */
 		memmove(line, line + cmdpos + 1, strlen(line) - cmdpos + 1);
-	argv[1] = c->c_name;
+	(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
+	argv[1] = cmdbuf;
 	(*c->c_handler)(argc-1, argv+1);
 	if (connected) {
 		proxflag = 1;
@@ -1963,7 +1971,7 @@
 				found++;
 				if (i < ostop) {
 					*cp2++ = *(ntout + i);
-					if (cp2 - dst >= dlen - 1)
+					if (cp2 - dst >= (ptrdiff_t)(dlen - 1))
 						goto out;
 				}
 				break;
@@ -2545,7 +2553,8 @@
 lpage(int argc, char *argv[])
 {
 	size_t len;
-	char *p, *pager, *locfile;
+	const char *p;
+	char *pager, *locfile;
 
 	if (argc == 0 || argc > 2 ||
 	    (argc == 1 && !another(&argc, &argv, "local-file"))) {
@@ -2579,7 +2588,8 @@
 {
 	int ohash, orestart_point, overbose;
 	size_t len;
-	char *p, *pager;
+	const char *p;
+	char *pager;
 
 	if (argc == 0 || argc > 2 ||
 	    (argc == 1 && !another(&argc, &argv, "remote-file"))) {
@@ -2667,20 +2677,28 @@
 			    o->name, o->value ? o->value : "");
 		}
 	} else {
-		o = getoption(argv[1]);
-		if (o == NULL) {
-			fprintf(ttyout, "No such option `%s'.\n", argv[1]);
-			return;
-		}
-		FREEPTR(o->value);
-		o->value = ftp_strdup(argv[2]);
-		if (verbose)
-			fprintf(ttyout, "Setting `%s' to `%s'.\n",
-			    o->name, o->value);
+		set_option(argv[1], argv[2], 1);
 	}
 	code = 0;
 }
 
+void
+set_option(const char * option, const char * value, int doverbose)
+{
+	struct option *o;
+
+	o = getoption(option);
+	if (o == NULL) {
+		fprintf(ttyout, "No such option `%s'.\n", option);
+		return;
+	}
+	FREEPTR(o->value);
+	o->value = ftp_strdup(value);
+	if (verbose && doverbose)
+		fprintf(ttyout, "Setting `%s' to `%s'.\n",
+		    o->name, o->value);
+}
+
 /*
  * Unset an option
  */

Index: src/usr.bin/ftp/cmdtab.c
diff -u src/usr.bin/ftp/cmdtab.c:1.50 src/usr.bin/ftp/cmdtab.c:1.51
--- src/usr.bin/ftp/cmdtab.c:1.50	Tue Sep 30 03:41:53 2008
+++ src/usr.bin/ftp/cmdtab.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: cmdtab.c,v 1.50 2008/09/30 03:41:53 lukem Exp $	*/
+/*	$NetBSD: cmdtab.c,v 1.51 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -63,7 +63,7 @@
 #if 0
 static char sccsid[] = "@(#)cmdtab.c	8.4 (Berkeley) 10/9/94";
 #else
-__RCSID("$NetBSD: cmdtab.c,v 1.50 2008/09/30 03:41:53 lukem Exp $");
+__RCSID("$NetBSD: cmdtab.c,v 1.51 2009/04/12 10:18:52 lukem Exp $");
 #endif
 #endif /* not lint */
 
@@ -291,7 +291,7 @@
 	{ "verbose",	H(verbosehelp),	0, 0, 0, CMPL0		setverbose },
 	{ "xferbuf",	H(xferbufhelp),	0, 0, 0, CMPL0		setxferbuf },
 	{ "?",		H(helphelp),	0, 0, 1, CMPL(C)	help },
-	{ 0 },
+	{ NULL,		NULL,		0, 0, 0, CMPL0		NULL },
 };
 
 struct option optiontab[] = {
@@ -302,5 +302,5 @@
 	{ "pager",	NULL },
 	{ "prompt",	NULL },
 	{ "rprompt",	NULL },
-	{ 0 },
+	{ NULL,		NULL },
 };

Index: src/usr.bin/ftp/complete.c
diff -u src/usr.bin/ftp/complete.c:1.45 src/usr.bin/ftp/complete.c:1.46
--- src/usr.bin/ftp/complete.c:1.45	Sun Apr 12 07:07:41 2009
+++ src/usr.bin/ftp/complete.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: complete.c,v 1.45 2009/04/12 07:07:41 lukem Exp $	*/
+/*	$NetBSD: complete.c,v 1.46 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1997-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: complete.c,v 1.45 2009/04/12 07:07:41 lukem Exp $");
+__RCSID("$NetBSD: complete.c,v 1.46 2009/04/12 10:18:52 lukem Exp $");
 #endif /* not lint */
 
 /*
@@ -80,7 +80,7 @@
 {
 	char insertstr[MAXPATHLEN];
 	char *lastmatch, *p;
-	int i, j;
+	size_t i, j;
 	size_t matchlen, wordlen;
 
 	wordlen = strlen(word);
@@ -143,7 +143,7 @@
 		if (wordlen > strlen(c->c_name))
 			continue;
 		if (strncmp(word, c->c_name, wordlen) == 0)
-			ftp_sl_add(words, c->c_name);
+			ftp_sl_add(words, ftp_strdup(c->c_name));
 	}
 
 	rv = complete_ambiguous(word, list, words);
@@ -151,7 +151,7 @@
 		if (el_insertstr(el, " ") == -1)
 			rv = CC_ERROR;
 	}
-	sl_free(words, 0);
+	sl_free(words, 1);
 	return (rv);
 }
 
@@ -255,7 +255,7 @@
 		if (wordlen > strlen(o->name))
 			continue;
 		if (strncmp(word, o->name, wordlen) == 0)
-			ftp_sl_add(words, o->name);
+			ftp_sl_add(words, ftp_strdup(o->name));
 	}
 
 	rv = complete_ambiguous(word, list, words);
@@ -263,7 +263,7 @@
 		if (el_insertstr(el, " ") == -1)
 			rv = CC_ERROR;
 	}
-	sl_free(words, 0);
+	sl_free(words, 1);
 	return (rv);
 }
 
@@ -278,10 +278,13 @@
 	StringList	*words;
 	char		 dir[MAXPATHLEN];
 	char		*file, *cp;
-	int		 i;
+	size_t		 i;
 	unsigned char	 rv;
+	char		 cmdbuf[MAX_C_NAME];
+	char		*dummyargv[3] = { NULL, NULL, NULL };
 
-	char *dummyargv[] = { "complete", NULL, NULL };
+	(void)strlcpy(cmdbuf, "complete", sizeof(cmdbuf));
+	dummyargv[0] = cmdbuf;
 	dummyargv[1] = dir;
 
 	if ((file = strrchr(word, '/')) == NULL) {
@@ -350,12 +353,12 @@
 complete(EditLine *cel, int ch)
 {
 	static char word[FTPBUFLEN];
-	static int lastc_argc, lastc_argo;
+	static size_t lastc_argc, lastc_argo;
 
 	struct cmd *c;
 	const LineInfo *lf;
-	int celems, dolist, cmpltype;
-	size_t len;
+	int dolist, cmpltype;
+	size_t celems, len;
 
 	lf = el_line(cel);
 	len = lf->lastchar - lf->buffer;
@@ -376,7 +379,7 @@
 	    && strncmp(word, margv[cursor_argc] ? margv[cursor_argc] : "",
 			cursor_argo) == 0)
 		dolist = 1;
-	else if (cursor_argc < margc)
+	else if (cursor_argc < (size_t)margc)
 		(void)strlcpy(word, margv[cursor_argc], cursor_argo + 1);
 	word[cursor_argo] = '\0';
 

Index: src/usr.bin/ftp/domacro.c
diff -u src/usr.bin/ftp/domacro.c:1.21 src/usr.bin/ftp/domacro.c:1.22
--- src/usr.bin/ftp/domacro.c:1.21	Wed Jun 29 02:31:19 2005
+++ src/usr.bin/ftp/domacro.c	Sun Apr 12 10:18:52 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: domacro.c,v 1.21 2005/06/29 02:31:19 christos Exp $	*/
+/*	$NetBSD: domacro.c,v 1.22 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*
  * Copyright (c) 1985, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)domacro.c	8.3 (Berkeley) 4/2/94";
 #else
-__RCSID("$NetBSD: domacro.c,v 1.21 2005/06/29 02:31:19 christos Exp $");
+__RCSID("$NetBSD: domacro.c,v 1.22 2009/04/12 10:18:52 lukem Exp $");
 #endif
 #endif /* not lint */
 
@@ -50,6 +50,7 @@
 	int i, j, count = 2, loopflg = 0;
 	char *cp1, *cp2, line2[FTPBUFLEN];
 	struct cmd *c;
+	char cmdbuf[MAX_C_NAME];
 
 	if ((argc == 0 && argv != NULL) ||
 	    (argc < 2 && !another(&argc, &argv, "macro name"))) {
@@ -126,7 +127,8 @@
 				fputs(line, ttyout);
 				putc('\n', ttyout);
 			}
-			margv[0] = c->c_name;
+			(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
+			margv[0] = cmdbuf;
 			(*c->c_handler)(margc, margv);
 			if (bell && c->c_bell)
 				(void)putc('\007', ttyout);

Index: src/usr.bin/ftp/extern.h
diff -u src/usr.bin/ftp/extern.h:1.75 src/usr.bin/ftp/extern.h:1.76
--- src/usr.bin/ftp/extern.h:1.75	Sat May 10 00:05:31 2008
+++ src/usr.bin/ftp/extern.h	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: extern.h,v 1.75 2008/05/10 00:05:31 skd Exp $	*/
+/*	$NetBSD: extern.h,v 1.76 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -142,7 +142,7 @@
 char   *globulize(const char *);
 char   *gunique(const char *);
 void	help(int, char **);
-char   *hookup(char *, char *);
+char   *hookup(const char *, const char *);
 void	idlecmd(int, char **);
 int	initconn(void);
 void	intr(int);
@@ -228,6 +228,7 @@
 void	setupsockbufsize(int);
 void	setverbose(int, char **);
 void	setxferbuf(int, char **);
+void	set_option(const char *, const char *, int);
 void	shell(int, char **);
 void	site(int, char **);
 void	sizecmd(int, char **);

Index: src/usr.bin/ftp/fetch.c
diff -u src/usr.bin/ftp/fetch.c:1.186 src/usr.bin/ftp/fetch.c:1.187
--- src/usr.bin/ftp/fetch.c:1.186	Sun Apr 12 07:07:41 2009
+++ src/usr.bin/ftp/fetch.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: fetch.c,v 1.186 2009/04/12 07:07:41 lukem Exp $	*/
+/*	$NetBSD: fetch.c,v 1.187 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1997-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: fetch.c,v 1.186 2009/04/12 07:07:41 lukem Exp $");
+__RCSID("$NetBSD: fetch.c,v 1.187 2009/04/12 10:18:52 lukem Exp $");
 #endif /* not lint */
 
 /*
@@ -141,7 +141,8 @@
 {
 	const char	*cp, *scheme, *errormsg;
 	char		*ep, *clear, *realm;
-	char		 uuser[BUFSIZ], *pass;
+	char		 uuser[BUFSIZ], *gotpass;
+	const char	*upass;
 	int		 rval;
 	size_t		 len, clen, rlen;
 
@@ -150,6 +151,7 @@
 	rval = -1;
 	cp = challenge;
 	scheme = "Basic";	/* only support Basic authentication */
+	gotpass = NULL;
 
 	DPRINTF("auth_url: challenge `%s'\n", challenge);
 
@@ -190,22 +192,23 @@
 		}
 	}
 	if (gpass != NULL)
-		pass = (char *)gpass;
+		upass = gpass;
 	else {
-		pass = getpass("Password: ");
-		if (pass == NULL) {
+		gotpass = getpass("Password: ");
+		if (gotpass == NULL) {
 			warnx("Can't read password");
 			goto cleanup_auth_url;
 		}
+		upass = gotpass;
 	}
 
-	clen = strlen(uuser) + strlen(pass) + 2;	/* user + ":" + pass + "\0" */
+	clen = strlen(uuser) + strlen(upass) + 2;	/* user + ":" + pass + "\0" */
 	clear = (char *)ftp_malloc(clen);
 	(void)strlcpy(clear, uuser, clen);
 	(void)strlcat(clear, ":", clen);
-	(void)strlcat(clear, pass, clen);
-	if (gpass == NULL)
-		memset(pass, 0, strlen(pass));
+	(void)strlcat(clear, upass, clen);
+	if (gotpass)
+		memset(gotpass, 0, strlen(gotpass));
 
 						/* scheme + " " + enc + "\0" */
 	rlen = strlen(scheme) + 1 + (clen + 2) * 4 / 3 + 1;
@@ -234,7 +237,7 @@
 	static const unsigned char enc[] =
 	    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 	unsigned char	*cp;
-	int	 i;
+	size_t	 i;
 
 	cp = encoded;
 	for (i = 0; i < len; i += 3) {
@@ -313,8 +316,8 @@
 		char **uuser, char **pass, char **host, char **port,
 		in_port_t *portnum, char **path)
 {
-	const char	*origurl;
-	char		*cp, *ep, *thost, *tport;
+	const char	*origurl, *tport;
+	char		*cp, *ep, *thost;
 	size_t		 len;
 
 	if (url == NULL || desc == NULL || utype == NULL || uuser == NULL
@@ -477,7 +480,8 @@
 	int volatile		isproxy;
 	int volatile		rval;
 	int volatile		hcode;
-	size_t			len;
+	int			len;
+	size_t			flen;
 	static size_t		bufsize;
 	static char		*xferbuf;
 	const char		*cp, *token;
@@ -590,7 +594,7 @@
 			fputs("\n", ttyout);
 		}
 	} else {				/* ftp:// or http:// URLs */
-		char *leading;
+		const char *leading;
 		int hasleading;
 
 		if (proxyenv == NULL) {
@@ -1131,7 +1135,7 @@
 	(void)xsignal(SIGQUIT, psummary);
 	oldintr = xsignal(SIGINT, aborthttp);
 
-	if (rcvbuf_size > bufsize) {
+	if ((size_t)rcvbuf_size > bufsize) {
 		if (xferbuf)
 			(void)free(xferbuf);
 		bufsize = rcvbuf_size;
@@ -1200,18 +1204,18 @@
 
 			if (rate_get)
 				(void)gettimeofday(&then, NULL);
-			bufrem = rate_get ? rate_get : bufsize;
+			bufrem = rate_get ? rate_get : (off_t)bufsize;
 			if (ischunked)
 				bufrem = MIN(chunksize, bufrem);
 			while (bufrem > 0) {
-				len = fread(xferbuf, sizeof(char),
-				    MIN(bufsize, bufrem), fin);
-				if (len <= 0)
+				flen = fread(xferbuf, sizeof(char),
+				    MIN((off_t)bufsize, bufrem), fin);
+				if (flen <= 0)
 					goto chunkdone;
-				bytes += len;
-				bufrem -= len;
-				if (fwrite(xferbuf, sizeof(char), len, fout)
-				    != len) {
+				bytes += flen;
+				bufrem -= flen;
+				if (fwrite(xferbuf, sizeof(char), flen, fout)
+				    != flen) {
 					warn("Writing `%s'", savefile);
 					goto cleanup_fetch_url;
 				}
@@ -1223,7 +1227,7 @@
 					(void)fflush(ttyout);
 				}
 				if (ischunked) {
-					chunksize -= len;
+					chunksize -= flen;
 					if (chunksize <= 0)
 						break;
 				}
@@ -1353,6 +1357,8 @@
 	char		*cp, *xargv[5], rempath[MAXPATHLEN];
 	char		*host, *path, *dir, *file, *uuser, *pass;
 	char		*port;
+	char		 cmdbuf[MAXPATHLEN];
+	char		 dirbuf[4];
 	int		 dirhasglob, filehasglob, rval, transtype, xargc;
 	int		 oanonftp, oautologin;
 	in_port_t	 portnum;
@@ -1441,7 +1447,8 @@
 		cp = strrchr(dir, '/');
 		if (cp == dir && urltype == CLASSIC_URL_T) {
 			file = cp + 1;
-			dir = "/";
+			(void)strlcpy(dirbuf, "/", sizeof(dirbuf));
+			dir = dirbuf;
 		} else if (cp != NULL) {
 			*cp++ = '\0';
 			file = cp;
@@ -1474,7 +1481,8 @@
 	if (connected)
 		disconnect(0, NULL);
 	anonftp = oanonftp;
-	xargv[0] = (char *)getprogname();	/* XXX discards const */
+	(void)strlcpy(cmdbuf, getprogname(), sizeof(cmdbuf));
+	xargv[0] = cmdbuf;
 	xargv[1] = host;
 	xargv[2] = NULL;
 	xargc = 2;
@@ -1587,7 +1595,8 @@
 			DPRINTF("fetch_ftp: dir `%s', nextpart `%s'\n",
 			    STRorNULL(dir), STRorNULL(nextpart));
 			if (urltype == FTP_URL_T || *dir != '\0') {
-				xargv[0] = "cd";
+				(void)strlcpy(cmdbuf, "cd", sizeof(cmdbuf));
+				xargv[0] = cmdbuf;
 				xargv[1] = dir;
 				xargv[2] = NULL;
 				dirchange = 0;
@@ -1622,7 +1631,8 @@
 
 			/* Fetch the file(s). */
 	xargc = 2;
-	xargv[0] = "get";
+	(void)strlcpy(cmdbuf, "get", sizeof(cmdbuf));
+	xargv[0] = cmdbuf;
 	xargv[1] = file;
 	xargv[2] = NULL;
 	if (dirhasglob || filehasglob) {
@@ -1631,9 +1641,10 @@
 		ointeractive = interactive;
 		interactive = 0;
 		if (restartautofetch)
-			xargv[0] = "mreget";
+			(void)strlcpy(cmdbuf, "mreget", sizeof(cmdbuf));
 		else
-			xargv[0] = "mget";
+			(void)strlcpy(cmdbuf, "mget", sizeof(cmdbuf));
+		xargv[0] = cmdbuf;
 		mget(xargc, xargv);
 		interactive = ointeractive;
 	} else {
@@ -1804,10 +1815,12 @@
 	char	*uargv[4], *path, *pathsep;
 	int	 uargc, rval, argpos;
 	size_t	 len;
+	char	 cmdbuf[MAX_C_NAME];
 
-	uargc = 0;
-	uargv[uargc++] = "mput";
-	uargv[uargc++] = argv[0];
+	(void)strlcpy(cmdbuf, "mput", sizeof(cmdbuf));
+	uargv[0] = cmdbuf;
+	uargv[1] = argv[0];
+	uargc = 2;
 	uargv[2] = uargv[3] = NULL;
 	pathsep = NULL;
 	rval = 1;
@@ -1827,7 +1840,8 @@
 			(void)strlcpy(path, uploadserver, len);
 			(void)strlcat(path, "/", len);
 		} else {		/* single file to upload */
-			uargv[0] = "put";
+			(void)strlcpy(cmdbuf, "put", sizeof(cmdbuf));
+			uargv[0] = cmdbuf;
 			pathsep = strrchr(path, '/');
 			if (pathsep == NULL) {
 				pathsep = strrchr(path, ':');

Index: src/usr.bin/ftp/ftp.c
diff -u src/usr.bin/ftp/ftp.c:1.157 src/usr.bin/ftp/ftp.c:1.158
--- src/usr.bin/ftp/ftp.c:1.157	Sun Apr 12 07:07:41 2009
+++ src/usr.bin/ftp/ftp.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: ftp.c,v 1.157 2009/04/12 07:07:41 lukem Exp $	*/
+/*	$NetBSD: ftp.c,v 1.158 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -92,7 +92,7 @@
 #if 0
 static char sccsid[] = "@(#)ftp.c	8.6 (Berkeley) 10/27/94";
 #else
-__RCSID("$NetBSD: ftp.c,v 1.157 2009/04/12 07:07:41 lukem Exp $");
+__RCSID("$NetBSD: ftp.c,v 1.158 2009/04/12 10:18:52 lukem Exp $");
 #endif
 #endif /* not lint */
 
@@ -155,7 +155,7 @@
 struct sockinet myctladdr, hisctladdr, data_addr;
 
 char *
-hookup(char *host, char *port)
+hookup(const char *host, const char *port)
 {
 	int s = -1, error;
 	struct addrinfo hints, *res, *res0;
@@ -598,7 +598,7 @@
 					/* copy bufchunk at a time */
 		bufrem = bufchunk;
 		while (bufrem > 0) {
-			inc = read(infd, buf, MIN(bufsize, bufrem));
+			inc = read(infd, buf, MIN((off_t)bufsize, bufrem));
 			if (inc <= 0)
 				goto copy_done;
 			bytes += inc;
@@ -660,7 +660,7 @@
 	sigfunc volatile oldintp;
 	off_t volatile hashbytes;
 	int hash_interval;
-	char *volatile lmode;
+	const char *lmode;
 	static size_t bufsize;
 	static char *buf;
 	int oprogress;
@@ -764,7 +764,7 @@
 	if (dout == NULL)
 		goto abort;
 
-	if (sndbuf_size > bufsize) {
+	if ((size_t)sndbuf_size > bufsize) {
 		if (buf)
 			(void)free(buf);
 		bufsize = sndbuf_size;
@@ -1025,7 +1025,7 @@
 		progress = 0;
 		preserve = 0;
 	}
-	if (rcvbuf_size > bufsize) {
+	if ((size_t)rcvbuf_size > bufsize) {
 		if (buf)
 			(void)free(buf);
 		bufsize = rcvbuf_size;
@@ -1199,7 +1199,7 @@
 	unsigned int addr[16], port[2];
 	unsigned int af, hal, pal;
 	socklen_t len;
-	char *pasvcmd = NULL;
+	const char *pasvcmd = NULL;
 	int overbose;
 
 #ifdef INET6
@@ -1423,7 +1423,7 @@
 				data_addr.su_family = AF_INET6;
 				data_addr.su_len = sizeof(struct sockaddr_in6);
 			    {
-				int i;
+				size_t i;
 				for (i = 0; i < sizeof(struct in6_addr); i++) {
 					data_addr.si_su.su_sin6.sin6_addr.s6_addr[i] =
 					    UC(addr[i]);
@@ -1831,7 +1831,7 @@
 	sigfunc volatile oldintr;
 	int prox_type, nfnd;
 	int volatile secndflag;
-	char *volatile cmd2;
+	const char *volatile cmd2;
 
 	oldintr = NULL;
 	secndflag = 0;

Index: src/usr.bin/ftp/ftp_var.h
diff -u src/usr.bin/ftp/ftp_var.h:1.80 src/usr.bin/ftp/ftp_var.h:1.81
--- src/usr.bin/ftp/ftp_var.h:1.80	Tue Sep 30 03:41:53 2008
+++ src/usr.bin/ftp/ftp_var.h	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: ftp_var.h,v 1.80 2008/09/30 03:41:53 lukem Exp $	*/
+/*	$NetBSD: ftp_var.h,v 1.81 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -121,7 +121,7 @@
  * Format of command table.
  */
 struct cmd {
-	char		*c_name;	/* name of command */
+	const char	*c_name;	/* name of command */
 	const char	*c_help;	/* help string */
 	char		c_bell;		/* give bell when command completes */
 	char		c_conn;		/* must be connected to use command */
@@ -132,6 +132,8 @@
 	void		(*c_handler)(int, char **); /* function to call */
 };
 
+#define MAX_C_NAME	12		/* maximum length of cmd.c_name */
+
 /*
  * Format of macro table
  */
@@ -145,8 +147,8 @@
  * Format of option table
  */
 struct option {
-	char	*name;
-	char	*value;
+	const char	*name;
+	char		*value;
 };
 
 /*
@@ -210,7 +212,7 @@
 GLOBAL	int	proxy;		/* proxy server connection active */
 GLOBAL	int	proxflag;	/* proxy connection exists */
 GLOBAL	int	gatemode;	/* use gate-ftp */
-GLOBAL	char   *gateserver;	/* server to use for gate-ftp */
+GLOBAL	const char *gateserver;	/* server to use for gate-ftp */
 GLOBAL	int	sunique;	/* store files on server with unique name */
 GLOBAL	int	runique;	/* store local files with unique name */
 GLOBAL	int	mcase;		/* map upper to lower case for mget names */
@@ -245,7 +247,7 @@
 GLOBAL	int	rate_put;	/* maximum put xfer rate */
 GLOBAL	int	rate_put_incr;	/* increment for put xfer rate */
 GLOBAL	int	retry_connect;	/* seconds between retrying connection */
-GLOBAL	char   *tmpdir;		/* temporary directory */
+GLOBAL	const char *tmpdir;	/* temporary directory */
 GLOBAL	int	epsv4;		/* use EPSV/EPRT on IPv4 connections */
 GLOBAL	int	epsv4bad;	/* EPSV doesn't work on the current server */
 GLOBAL	int	epsv6;		/* use EPSV/EPRT on IPv6 connections */
@@ -261,8 +263,6 @@
 GLOBAL	size_t	  cursor_argo;	/* offset of cursor in margv[cursor_argc] */
 #endif /* !NO_EDITCOMPLETE */
 
-GLOBAL	char   *direction;	/* direction transfer is occurring */
-
 GLOBAL	char   *hostname;	/* name of host connected to */
 GLOBAL	int	unix_server;	/* server is unix, can use binary for ascii */
 GLOBAL	int	unix_proxy;	/* proxy is unix, can use binary for ascii */
@@ -271,9 +271,9 @@
 GLOBAL	char   *username;	/* name of user logged in as. (dynamic) */
 
 GLOBAL	sa_family_t family;	/* address family to use for connections */
-GLOBAL	char	*ftpport;	/* port number to use for FTP connections */
-GLOBAL	char	*httpport;	/* port number to use for HTTP connections */
-GLOBAL	char	*gateport;	/* port number to use for gateftp connections */
+GLOBAL	const char *ftpport;	/* port number to use for FTP connections */
+GLOBAL	const char *httpport;	/* port number to use for HTTP connections */
+GLOBAL	const char *gateport;	/* port number to use for gateftp connections */
 GLOBAL	struct addrinfo *bindai; /* local address to bind as */
 
 GLOBAL	char   *outfile;	/* filename to output URLs to */

Index: src/usr.bin/ftp/main.c
diff -u src/usr.bin/ftp/main.c:1.114 src/usr.bin/ftp/main.c:1.115
--- src/usr.bin/ftp/main.c:1.114	Sun Apr 12 07:07:41 2009
+++ src/usr.bin/ftp/main.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: main.c,v 1.114 2009/04/12 07:07:41 lukem Exp $	*/
+/*	$NetBSD: main.c,v 1.115 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -98,7 +98,7 @@
 #if 0
 static char sccsid[] = "@(#)main.c	8.6 (Berkeley) 10/9/94";
 #else
-__RCSID("$NetBSD: main.c,v 1.114 2009/04/12 07:07:41 lukem Exp $");
+__RCSID("$NetBSD: main.c,v 1.115 2009/04/12 10:18:52 lukem Exp $");
 #endif
 #endif /* not lint */
 
@@ -129,7 +129,7 @@
 #define	NO_PROXY	"no_proxy"	/* env var with list of non-proxied
 					 * hosts, comma or space separated */
 
-static void	setupoption(char *, char *, char *);
+static void	setupoption(const char *, const char *, const char *);
 int		main(int, char *[]);
 
 int
@@ -137,7 +137,8 @@
 {
 	int ch, rval;
 	struct passwd *pw;
-	char *cp, *ep, *anonuser, *anonpass, *upload_path, *src_addr;
+	char *cp, *ep, *anonpass, *upload_path, *src_addr;
+	const char *anonuser;
 	int dumbterm, s, isupload;
 	size_t len;
 	socklen_t slen;
@@ -391,10 +392,12 @@
 		{
 			int targc;
 			char *targv[6], *oac;
+			char cmdbuf[MAX_C_NAME];
 
 				/* look for `dir,max[,incr]' */
 			targc = 0;
-			targv[targc++] = "-T";
+			(void)strlcpy(cmdbuf, "-T", sizeof(cmdbuf));
+			targv[targc++] = cmdbuf;
 			oac = ftp_strdup(optarg);
 
 			while ((cp = strsep(&oac, ",")) != NULL) {
@@ -544,6 +547,7 @@
 				goto sigint_or_rval_exit;
 		} else {
 			char *xargv[4], *uuser, *host;
+			char cmdbuf[MAXPATHLEN];
 
 			if ((rval = sigsetjmp(toplevel, 1)))
 				goto sigint_or_rval_exit;
@@ -557,8 +561,8 @@
 				uuser = host;
 				host = cp + 1;
 			}
-			/* XXX discards const */
-			xargv[0] = (char *)getprogname();
+			(void)strlcpy(cmdbuf, getprogname(), sizeof(cmdbuf));
+			xargv[0] = cmdbuf;
 			xargv[1] = host;
 			xargv[2] = argv[1];
 			xargv[3] = NULL;
@@ -570,7 +574,7 @@
 					anonftp = 0;
 					autologin = 0;
 				}
-				setpeer(argc+1, xargv);
+				setpeer(3, xargv);
 				autologin = oautologin;
 				if (connected == 1 && uuser != NULL)
 					(void)ftp_login(host, uuser, NULL);
@@ -656,6 +660,7 @@
 	size_t		 num;
 #endif
 	int		 len;
+	char		 cmdbuf[MAX_C_NAME];
 
 	for (;;) {
 #ifndef NO_EDITCOMPLETE
@@ -742,7 +747,8 @@
 			continue;
 		}
 		confirmrest = 0;
-		margv[0] = c->c_name;
+		(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
+		margv[0] = cmdbuf;
 		(*c->c_handler)(margc, margv);
 		if (bell && c->c_bell)
 			(void)putc('\007', ttyout);
@@ -836,6 +842,8 @@
 char *
 slurpstring(void)
 {
+	static char bangstr[2] = { '!', '\0' };
+	static char dollarstr[2] = { '$', '\0' };
 	int got_one = 0;
 	char *sb = stringbase;
 	char *ap = argbase;
@@ -846,7 +854,7 @@
 			case 0:
 				slrflag++;
 				INC_CHKCURSOR(stringbase);
-				return ((*sb == '!') ? "!" : "$");
+				return ((*sb == '!') ? bangstr : dollarstr);
 				/* NOTREACHED */
 			case 1:
 				slrflag++;
@@ -969,7 +977,8 @@
 help(int argc, char *argv[])
 {
 	struct cmd *c;
-	char *nargv[1], *p, *cmd;
+	char *nargv[1], *cmd;
+	const char *p;
 	int isusage;
 
 	cmd = argv[0];
@@ -987,9 +996,9 @@
 		    proxy ? "Proxy c" : "C");
 		for (c = cmdtab; (p = c->c_name) != NULL; c++)
 			if (!proxy || c->c_proxy)
-				ftp_sl_add(buf, p);
+				ftp_sl_add(buf, ftp_strdup(p));
 		list_vertical(buf);
-		sl_free(buf, 0);
+		sl_free(buf, 1);
 		return;
 	}
 
@@ -997,6 +1006,7 @@
 
 	while (--argc > 0) {
 		char *arg;
+		char cmdbuf[MAX_C_NAME];
 
 		arg = *++argv;
 		c = getcmd(arg);
@@ -1008,7 +1018,8 @@
 			    cmd, arg);
 		else {
 			if (isusage) {
-				nargv[0] = c->c_name;
+				(void)strlcpy(cmdbuf, c->c_name, sizeof(cmdbuf));
+				nargv[0] = cmdbuf;
 				(*c->c_handler)(0, nargv);
 			} else
 				fprintf(ttyout, "%-*s\t%s\n", HELPINDENT,
@@ -1047,18 +1058,9 @@
 }
 
 static void
-setupoption(char *name, char *value, char *defaultvalue)
+setupoption(const char *name, const char *value, const char *defaultvalue)
 {
-	char *nargv[3];
-	int overbose;
-
-	nargv[0] = "setupoption()";
-	nargv[1] = name;
-	nargv[2] = (value ? value : defaultvalue);
-	overbose = verbose;
-	verbose = 0;
-	setoption(3, nargv);
-	verbose = overbose;
+	set_option(name, value ? value : defaultvalue, 0);
 }
 
 void

Index: src/usr.bin/ftp/progressbar.c
diff -u src/usr.bin/ftp/progressbar.c:1.20 src/usr.bin/ftp/progressbar.c:1.21
--- src/usr.bin/ftp/progressbar.c:1.20	Tue Sep 30 03:41:53 2008
+++ src/usr.bin/ftp/progressbar.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: progressbar.c,v 1.20 2008/09/30 03:41:53 lukem Exp $	*/
+/*	$NetBSD: progressbar.c,v 1.21 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1997-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: progressbar.c,v 1.20 2008/09/30 03:41:53 lukem Exp $");
+__RCSID("$NetBSD: progressbar.c,v 1.21 2009/04/12 10:18:52 lukem Exp $");
 #endif /* not lint */
 
 /*
@@ -100,7 +100,7 @@
 	"YiB",	/* 2^80 Yobibyte */
 #endif
 };
-#define NSUFFIXES	(sizeof(suffixes) / sizeof(suffixes[0]))
+#define NSUFFIXES	(int)(sizeof(suffixes) / sizeof(suffixes[0]))
 
 /*
  * Display a transfer progress bar if progress is non-zero.
@@ -219,7 +219,7 @@
 			 * calculate the length of the `*' bar, ensuring that
 			 * the number of stars won't exceed the buffer size
 			 */
-		barlength = MIN(sizeof(buf) - 1, ttywidth) - BAROVERHEAD;
+		barlength = MIN((int)(sizeof(buf) - 1), ttywidth) - BAROVERHEAD;
 		if (prefix)
 			barlength -= (int)strlen(prefix);
 		if (barlength > 0) {

Index: src/usr.bin/ftp/progressbar.h
diff -u src/usr.bin/ftp/progressbar.h:1.7 src/usr.bin/ftp/progressbar.h:1.8
--- src/usr.bin/ftp/progressbar.h:1.7	Tue Sep 30 03:41:53 2008
+++ src/usr.bin/ftp/progressbar.h	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: progressbar.h,v 1.7 2008/09/30 03:41:53 lukem Exp $	*/
+/*	$NetBSD: progressbar.h,v 1.8 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1996-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -59,7 +59,7 @@
 GLOBAL	int	verbose;	/* print messages coming back from server */
 GLOBAL	int	quit_time;	/* maximum time to wait if stalled */
 
-GLOBAL	char   *direction;	/* direction transfer is occurring */
+GLOBAL	const char  *direction;	/* direction transfer is occurring */
 
 GLOBAL	sigjmp_buf toplevel;	/* non-local goto stuff for cmd scanner */
 #endif	/* !STANDALONE_PROGRESS */

Index: src/usr.bin/ftp/util.c
diff -u src/usr.bin/ftp/util.c:1.149 src/usr.bin/ftp/util.c:1.150
--- src/usr.bin/ftp/util.c:1.149	Sun Apr 12 07:07:41 2009
+++ src/usr.bin/ftp/util.c	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: util.c,v 1.149 2009/04/12 07:07:41 lukem Exp $	*/
+/*	$NetBSD: util.c,v 1.150 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1997-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -64,7 +64,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: util.c,v 1.149 2009/04/12 07:07:41 lukem Exp $");
+__RCSID("$NetBSD: util.c,v 1.150 2009/04/12 10:18:52 lukem Exp $");
 #endif /* not lint */
 
 /*
@@ -103,7 +103,7 @@
 setpeer(int argc, char *argv[])
 {
 	char *host;
-	char *port;
+	const char *port;
 
 	if (argc == 0)
 		goto usage;
@@ -808,7 +808,8 @@
 void
 updateremotecwd(void)
 {
-	int	 overbose, ocode, i;
+	int	 overbose, ocode;
+	size_t	 i;
 	char	*cp;
 
 	overbose = verbose;
@@ -877,8 +878,8 @@
 void
 list_vertical(StringList *sl)
 {
-	int i, j;
-	int columns, lines;
+	size_t i, j;
+	size_t columns, lines;
 	char *p;
 	size_t w, width;
 
@@ -1067,7 +1068,7 @@
 void
 ftpvis(char *dst, size_t dstlen, const char *src, size_t srclen)
 {
-	int	di, si;
+	size_t	di, si;
 
 	for (di = si = 0;
 	    src[si] != '\0' && di < dstlen && si < srclen;
@@ -1097,7 +1098,8 @@
 formatbuf(char *buf, size_t len, const char *src)
 {
 	const char	*p, *p2, *q;
-	int		 i, op, updirs, pdirs;
+	size_t		 i;
+	int		 op, updirs, pdirs;
 
 #define ADDBUF(x) do { \
 		if (i >= len - 1) \

Index: src/usr.bin/ftp/version.h
diff -u src/usr.bin/ftp/version.h:1.77 src/usr.bin/ftp/version.h:1.78
--- src/usr.bin/ftp/version.h:1.77	Wed Aug 13 04:59:13 2008
+++ src/usr.bin/ftp/version.h	Sun Apr 12 10:18:52 2009
@@ -1,7 +1,7 @@
-/*	$NetBSD: version.h,v 1.77 2008/08/13 04:59:13 lukem Exp $	*/
+/*	$NetBSD: version.h,v 1.78 2009/04/12 10:18:52 lukem Exp $	*/
 
 /*-
- * Copyright (c) 1999-2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 1999-2009 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * This code is derived from software contributed to The NetBSD Foundation
@@ -34,5 +34,5 @@
 #endif
 
 #ifndef FTP_VERSION
-#define	FTP_VERSION	"20080813"
+#define	FTP_VERSION	"20090412"
 #endif

Reply via email to