verbose multi-file transfer (and print before rather than after transfer)
SCCS-vsn: usr.bin/ftp/cmds.c 5.16
SCCS-vsn: usr.bin/ftp/ftp.c 5.26
-static char sccsid[] = "@(#)cmds.c 5.15 (Berkeley) %G%";
+static char sccsid[] = "@(#)cmds.c 5.16 (Berkeley) %G%";
{
char *cmd;
int loc = 0;
{
char *cmd;
int loc = 0;
+ char *oldargv1, *oldargv2;
if (argc < 3)
goto usage;
oldargv1 = argv[1];
if (argc < 3)
goto usage;
oldargv1 = argv[1];
if (!globulize(&argv[1])) {
code = -1;
return;
if (!globulize(&argv[1])) {
code = -1;
return;
if (loc && mapflag) {
argv[2] = domap(argv[2]);
}
if (loc && mapflag) {
argv[2] = domap(argv[2]);
}
- sendrequest(cmd, argv[1], argv[2]);
+ sendrequest(cmd, argv[1], argv[2],
+ argv[1] != oldargv1 || argv[2] != oldargv2);
if (mapflag) {
tp = domap(tp);
}
if (mapflag) {
tp = domap(tp);
}
- sendrequest((sunique) ? "STOU" : "STOR", cp,tp);
+ sendrequest((sunique) ? "STOU" : "STOR",
+ cp, tp, cp != tp || !interactive);
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
tp = (ntflag) ? dotrans(argv[i]) : argv[i];
tp = (mapflag) ? domap(tp) : tp;
sendrequest((sunique) ? "STOU" : "STOR",
tp = (ntflag) ? dotrans(argv[i]) : argv[i];
tp = (mapflag) ? domap(tp) : tp;
sendrequest((sunique) ? "STOU" : "STOR",
+ argv[i], tp, tp != argv[i] || !interactive);
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
tp = (ntflag) ? dotrans(*cpp) : *cpp;
tp = (mapflag) ? domap(tp) : tp;
sendrequest((sunique) ? "STOU" : "STOR",
tp = (ntflag) ? dotrans(*cpp) : *cpp;
tp = (mapflag) ? domap(tp) : tp;
sendrequest((sunique) ? "STOU" : "STOR",
+ *cpp, tp, *cpp != tp || !interactive);
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
char *argv[];
{
int loc = 0;
char *argv[];
{
int loc = 0;
+ char *oldargv1, *oldargv2;
}
if (argc < 3)
goto usage;
}
if (argc < 3)
goto usage;
+ oldargv1 = argv[1];
+ oldargv2 = argv[2];
if (!globulize(&argv[2])) {
code = -1;
return;
if (!globulize(&argv[2])) {
code = -1;
return;
if (mapflag) {
tp = domap(tp);
}
if (mapflag) {
tp = domap(tp);
}
- recvrequest("RETR", tp, cp, "w");
+ recvrequest("RETR", tp, cp, "w",
+ tp != cp || !interactive);
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
pswitch(!proxy);
}
for (mode = "w"; *++argv != NULL; mode = "a")
pswitch(!proxy);
}
for (mode = "w"; *++argv != NULL; mode = "a")
- recvrequest ("NLST", temp, *argv, mode);
+ recvrequest ("NLST", temp, *argv, mode, 0);
if (doswitch) {
pswitch(!proxy);
}
if (doswitch) {
pswitch(!proxy);
}
- recvrequest(cmd, argv[2], argv[1], "w");
+ recvrequest(cmd, argv[2], argv[1], "w", 0);
(void) setjmp(jabort);
for (i = 1; mflag && i < argc-1; ++i) {
*mode = (i == 1) ? 'w' : 'a';
(void) setjmp(jabort);
for (i = 1; mflag && i < argc-1; ++i) {
*mode = (i == 1) ? 'w' : 'a';
- recvrequest(cmd, dest, argv[i], mode);
+ recvrequest(cmd, dest, argv[i], mode, 0);
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
if (!mflag && fromatty) {
ointer = interactive;
interactive = 1;
-static char sccsid[] = "@(#)ftp.c 5.24.1.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)ftp.c 5.26 (Berkeley) %G%";
#endif /* not lint */
#include <sys/param.h>
#endif /* not lint */
#include <sys/param.h>
-sendrequest(cmd, local, remote)
+sendrequest(cmd, local, remote, printnames)
char *cmd, *local, *remote;
char *cmd, *local, *remote;
{
FILE *fin, *dout = 0, *popen();
int (*closefunc)(), pclose(), fclose(), (*oldintr)(), (*oldintp)();
{
FILE *fin, *dout = 0, *popen();
int (*closefunc)(), pclose(), fclose(), (*oldintr)(), (*oldintp)();
struct timeval start, stop;
char *mode;
struct timeval start, stop;
char *mode;
+ if (verbose && printnames) {
+ if (local && *local != '-')
+ printf("local: %s ", local);
+ if (remote)
+ printf("remote: %s\n", remote);
+ }
if (proxy) {
proxtrans(cmd, local, remote);
return;
if (proxy) {
proxtrans(cmd, local, remote);
return;
if (oldintp)
(void) signal(SIGPIPE, oldintp);
if (bytes > 0)
if (oldintp)
(void) signal(SIGPIPE, oldintp);
if (bytes > 0)
- ptransfer("sent", bytes, &start, &stop, local, remote);
+ ptransfer("sent", bytes, &start, &stop);
return;
abort:
(void) gettimeofday(&stop, (struct timezone *)0);
return;
abort:
(void) gettimeofday(&stop, (struct timezone *)0);
if (closefunc != NULL && fin != NULL)
(*closefunc)(fin);
if (bytes > 0)
if (closefunc != NULL && fin != NULL)
(*closefunc)(fin);
if (bytes > 0)
- ptransfer("sent", bytes, &start, &stop, local, remote);
+ ptransfer("sent", bytes, &start, &stop);
-recvrequest(cmd, local, remote, mode)
+recvrequest(cmd, local, remote, mode, printnames)
char *cmd, *local, *remote, *mode;
{
FILE *fout, *din = 0, *popen();
char *cmd, *local, *remote, *mode;
{
FILE *fout, *din = 0, *popen();
extern char *malloc();
is_retr = strcmp(cmd, "RETR") == 0;
extern char *malloc();
is_retr = strcmp(cmd, "RETR") == 0;
+ if (is_retr && verbose && printnames) {
+ if (local && *local != '-')
+ printf("local: %s ", local);
+ if (remote)
+ printf("remote: %s\n", remote);
+ }
if (proxy && is_retr) {
proxtrans(cmd, local, remote);
return;
if (proxy && is_retr) {
proxtrans(cmd, local, remote);
return;
(void) fclose(din);
(void) getreply(0);
if (bytes > 0 && is_retr)
(void) fclose(din);
(void) getreply(0);
if (bytes > 0 && is_retr)
- ptransfer("received", bytes, &start, &stop, local, remote);
+ ptransfer("received", bytes, &start, &stop);
if (oldtype) {
if (!debug)
verbose = 0;
if (oldtype) {
if (!debug)
verbose = 0;
if (din)
(void) fclose(din);
if (bytes > 0)
if (din)
(void) fclose(din);
if (bytes > 0)
- ptransfer("received", bytes, &start, &stop, local, remote);
+ ptransfer("received", bytes, &start, &stop);
(void) signal(SIGINT,oldintr);
}
(void) signal(SIGINT,oldintr);
}
return (fdopen(data, mode));
}
return (fdopen(data, mode));
}
-ptransfer(direction, bytes, t0, t1, local, remote)
- char *direction, *local, *remote;
+ptransfer(direction, bytes, t0, t1)
+ char *direction;
long bytes;
struct timeval *t0, *t1;
{
long bytes;
struct timeval *t0, *t1;
{
bs = bytes / nz(s);
printf("%ld bytes %s in %.2g seconds (%.2g Kbytes/s)\n",
bytes, direction, s, bs / 1024.);
bs = bytes / nz(s);
printf("%ld bytes %s in %.2g seconds (%.2g Kbytes/s)\n",
bytes, direction, s, bs / 1024.);
- } else {
- if (local && *local != '-')
- printf("local: %s ", local);
- if (remote)
- printf("remote: %s\n", remote);