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