version 1.48, 2003/12/16 21:46:22 |
version 1.49, 2004/02/28 20:08:38 |
|
|
char *argv[]; |
char *argv[]; |
char *outfile; |
char *outfile; |
{ |
{ |
static char lasthost[MAXHOSTNAMELEN]; |
|
char *xargv[5]; |
char *xargv[5]; |
char *cp, *line, *host, *dir, *file, *portnum; |
char *cp, *line, *host, *dir, *file, *portnum; |
char *user, *pass; |
char *user, *pass; |
char *ftpproxy, *httpproxy; |
char *ftpproxy, *httpproxy; |
int rval, xargc; |
int rval, xargc; |
volatile int argpos; |
volatile int argpos; |
int dirhasglob, filehasglob; |
int dirhasglob, filehasglob, oautologin; |
char rempath[MAXPATHLEN]; |
char rempath[MAXPATHLEN]; |
|
|
argpos = 0; |
argpos = 0; |
|
|
user, pass, host, portnum, dir, file); |
user, pass, host, portnum, dir, file); |
|
|
/* |
/* |
* Set up the connection if we don't have one. |
* Set up the connection. |
*/ |
*/ |
if (strcmp(host, lasthost) != 0) { |
if (connected) |
int oautologin; |
disconnect(0, NULL); |
|
xargv[0] = __progname; |
(void)strlcpy(lasthost, host, sizeof lasthost); |
xargv[1] = host; |
if (connected) |
|
disconnect(0, NULL); |
|
xargv[0] = __progname; |
|
xargv[1] = host; |
|
xargv[2] = NULL; |
|
xargc = 2; |
|
if (!EMPTYSTRING(portnum)) { |
|
xargv[2] = portnum; |
|
xargv[3] = NULL; |
|
xargc = 3; |
|
} |
|
oautologin = autologin; |
|
if (user != NULL) |
|
autologin = 0; |
|
setpeer(xargc, xargv); |
|
autologin = oautologin; |
|
if ((connected == 0) || |
|
((connected == 1) && !ftp_login(host, user, pass))) { |
|
warnx("Can't connect or login to host `%s'", |
|
host); |
|
rval = argpos + 1; |
|
continue; |
|
} |
|
|
|
/* Always use binary transfers. */ |
|
setbinary(0, NULL); |
|
} |
|
/* cd back to '/' */ |
|
xargv[0] = "cd"; |
|
xargv[1] = "/"; |
|
xargv[2] = NULL; |
xargv[2] = NULL; |
cd(2, xargv); |
xargc = 2; |
if (!dirchange) { |
if (!EMPTYSTRING(portnum)) { |
|
xargv[2] = portnum; |
|
xargv[3] = NULL; |
|
xargc = 3; |
|
} |
|
oautologin = autologin; |
|
if (user != NULL) |
|
autologin = 0; |
|
setpeer(xargc, xargv); |
|
autologin = oautologin; |
|
if ((connected == 0) || |
|
((connected == 1) && !ftp_login(host, user, pass))) { |
|
warnx("Can't connect or login to host `%s'", host); |
rval = argpos + 1; |
rval = argpos + 1; |
continue; |
continue; |
} |
} |
|
|
|
/* Always use binary transfers. */ |
|
setbinary(0, NULL); |
|
|
dirhasglob = filehasglob = 0; |
dirhasglob = filehasglob = 0; |
if (doglob) { |
if (doglob) { |