Return to BSD News archive
Xref: sserve comp.os.386bsd.development:2981 comp.unix.bsd:15824 Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!newsserver.trl.OZ.AU!huon!lukem From: lukem@melb.cpr.itg.telecom.com.au (Luke Mewburn) Newsgroups: comp.os.386bsd.development,comp.unix.bsd Subject: adding a `mark' option to ftp Date: 3 Jan 95 06:22:14 GMT Organization: Telecom Research Laboratories, Melbourne, Australia. Lines: 363 Message-ID: <lukem.789114134@huon> Reply-To: lm@cpr.itg.telecom.com.au NNTP-Posting-Host: 144.136.63.213 X-Newsreader: NN version 6.5.0 #2 (NOV) The following patch (relative to NetBSD-current, mid december) added a `mark' option to ftp. This allows you to change (from the default of 1024) the number of bytes to be received before a `#' is printed when `hash' is on. There's also a couple of minor `cleanups' to tame gcc -Wall, although I gave up on this after a while. The patches _should_ apply rather painlessly against any 4.4BSD-lite or derived source. Luke. diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/cmds.c ./cmds.c *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/cmds.c Thu Dec 15 22:23:00 1994 --- ./cmds.c Tue Jan 3 17:02:25 1995 *************** *** 511,517 **** return; } for (i = 1; i < argc; i++) { ! char **cpp, **gargs; glob_t gl; int flags; --- 511,517 ---- return; } for (i = 1; i < argc; i++) { ! char **cpp; glob_t gl; int flags; *************** *** 741,747 **** if (mflag && confirm(argv[0], cp)) { tp = cp; if (mcase) { ! for (tp2 = tmpbuf; ch = *tp++;) *tp2++ = isupper(ch) ? tolower(ch) : ch; *tp2 = '\0'; tp = tmpbuf; --- 741,747 ---- if (mflag && confirm(argv[0], cp)) { tp = cp; if (mcase) { ! for (tp2 = tmpbuf; (ch = *tp++) != NULL; ) *tp2++ = isupper(ch) ? tolower(ch) : ch; *tp2 = '\0'; tp = tmpbuf; *************** *** 882,889 **** else { printf("Nmap: off\n"); } ! printf("Hash mark printing: %s; Use of PORT cmds: %s\n", ! onoff(hash), onoff(sendport)); if (macnum > 0) { printf("Macros:\n"); for (i=0; i<macnum; i++) { --- 882,889 ---- else { printf("Nmap: off\n"); } ! printf("Hash mark printing: %s; Mark count: %d\n", onoff(hash), mark); ! printf("Use of PORT cmds: %s\n", onoff(sendport)); if (macnum > 0) { printf("Macros:\n"); for (i=0; i<macnum; i++) { *************** *** 937,944 **** printf("Hash mark printing %s", onoff(hash)); code = hash; if (hash) ! printf(" (%d bytes/hash mark)", 1024); printf(".\n"); } /* --- 937,967 ---- printf("Hash mark printing %s", onoff(hash)); code = hash; if (hash) ! printf(" (%d bytes/hash mark)", mark); printf(".\n"); + } + + /* + * Set hash mark bytecount. + */ + /*VARARGS*/ + void + setmark(argc, argv) + int argc; + char *argv[]; + { + if (argc != 2) + printf("mark: bytecount not specified\n"); + else { + int nmark = atol(argv[1]); + if (nmark < 1) + printf("A hash mark bytecount of %d %s", + nmark, "is rather pointless...\n"); + else { + mark = nmark; + printf("Hash mark set to %d bytes/hash mark\n", mark); + } + } } /* diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/cmdtab.c ./cmdtab.c *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/cmdtab.c Tue Aug 30 01:33:07 1994 --- ./cmdtab.c Tue Jan 3 16:55:59 1995 *************** *** 67,72 **** --- 67,73 ---- char lcdhelp[] = "change local working directory"; char lshelp[] = "list contents of remote directory"; char macdefhelp[] = "define a macro"; + char markhelp[] = "set hashmark spacing to bytecount"; char mdeletehelp[] = "delete multiple files"; char mdirhelp[] = "list contents of multiple remote directories"; char mgethelp[] = "get multiple files"; *************** *** 139,144 **** --- 140,146 ---- { "lcd", lcdhelp, 0, 0, 0, lcd }, { "ls", lshelp, 1, 1, 1, ls }, { "macdef", macdefhelp, 0, 0, 0, macdef }, + { "mark", markhelp, 0, 0, 0, setmark }, { "mdelete", mdeletehelp, 1, 1, 1, mdelete }, { "mdir", mdirhelp, 1, 1, 1, mls }, { "mget", mgethelp, 1, 1, 1, mget }, diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/extern.h ./extern.h *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/extern.h Mon Aug 29 13:09:10 1994 --- ./extern.h Tue Jan 3 16:47:23 1995 *************** *** 119,124 **** --- 119,125 ---- void setftmode __P((int, char **)); void setglob __P((int, char **)); void sethash __P((int, char **)); + void setmark __P((int, char **)); void setnmap __P((int, char **)); void setntrans __P((int, char **)); void setpassive __P((int, char **)); diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/ftp.1 ./ftp.1 *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/ftp.1 Tue Aug 30 01:33:13 1994 --- ./ftp.1 Tue Jan 3 17:13:37 1995 *************** *** 312,318 **** .It Ic hash Toggle hash-sign (``#'') printing for each data block transferred. ! The size of a data block is 1024 bytes. .It Ic help Op Ar command Print an informative message about the meaning of .Ar command . --- 312,321 ---- .It Ic hash Toggle hash-sign (``#'') printing for each data block transferred. ! The size of a data block defaults to 1024 bytes. ! This can be changed with the ! .Ic mark ! command. .It Ic help Op Ar command Print an informative message about the meaning of .Ar command . *************** *** 383,388 **** --- 386,395 ---- on the second pass it is replaced by the second argument, and so on. A `\e' followed by any character is replaced by that character. Use the `\e' to prevent special treatment of the `$'. + .It Ic mark Ar bytecount + Set the byte count between hash mark printing to + .Ar bytecount . + This defaults to 1024 bytes/hash mark. .It Ic mdelete Op Ar remote-files Delete the .Ar remote-files diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/ftp.c ./ftp.c *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/ftp.c Tue Aug 30 01:33:14 1994 --- ./ftp.c Tue Jan 3 16:37:03 1995 *************** *** 435,442 **** longjmp(sendabort, 1); } - #define HASHBYTES 1024 - void sendrequest(cmd, local, remote, printnames) char *cmd, *local, *remote; --- 435,440 ---- *************** *** 448,454 **** FILE *fin, *dout = 0, *popen(); int (*closefunc) __P((FILE *)); sig_t oldintr, oldintp; ! long bytes = 0, hashbytes = HASHBYTES; char *lmode, buf[BUFSIZ], *bufp; if (verbose && printnames) { --- 446,452 ---- FILE *fin, *dout = 0, *popen(); int (*closefunc) __P((FILE *)); sig_t oldintr, oldintp; ! long bytes = 0, hashbytes = mark; char *lmode, buf[BUFSIZ], *bufp; if (verbose && printnames) { *************** *** 592,604 **** if (hash) { while (bytes >= hashbytes) { (void) putchar('#'); ! hashbytes += HASHBYTES; } (void) fflush(stdout); } } if (hash && bytes > 0) { ! if (bytes < HASHBYTES) (void) putchar('#'); (void) putchar('\n'); (void) fflush(stdout); --- 590,602 ---- if (hash) { while (bytes >= hashbytes) { (void) putchar('#'); ! hashbytes += mark; } (void) fflush(stdout); } } if (hash && bytes > 0) { ! if (bytes < mark) (void) putchar('#'); (void) putchar('\n'); (void) fflush(stdout); *************** *** 618,624 **** while (hash && (bytes >= hashbytes)) { (void) putchar('#'); (void) fflush(stdout); ! hashbytes += HASHBYTES; } if (ferror(dout)) break; --- 616,622 ---- while (hash && (bytes >= hashbytes)) { (void) putchar('#'); (void) fflush(stdout); ! hashbytes += mark; } if (ferror(dout)) break; *************** *** 705,711 **** int c, d, is_retr, tcrflag, bare_lfs = 0; static int bufsize; static char *buf; ! long bytes = 0, hashbytes = HASHBYTES; struct timeval start, stop; struct stat st; --- 703,709 ---- int c, d, is_retr, tcrflag, bare_lfs = 0; static int bufsize; static char *buf; ! long bytes = 0, hashbytes = mark; struct timeval start, stop; struct stat st; *************** *** 860,872 **** if (hash) { while (bytes >= hashbytes) { (void) putchar('#'); ! hashbytes += HASHBYTES; } (void) fflush(stdout); } } if (hash && bytes > 0) { ! if (bytes < HASHBYTES) (void) putchar('#'); (void) putchar('\n'); (void) fflush(stdout); --- 858,870 ---- if (hash) { while (bytes >= hashbytes) { (void) putchar('#'); ! hashbytes += mark; } (void) fflush(stdout); } } if (hash && bytes > 0) { ! if (bytes < mark) (void) putchar('#'); (void) putchar('\n'); (void) fflush(stdout); *************** *** 912,918 **** while (hash && (bytes >= hashbytes)) { (void) putchar('#'); (void) fflush(stdout); ! hashbytes += HASHBYTES; } bytes++; if ((c = getc(din)) != '\n' || tcrflag) { --- 910,916 ---- while (hash && (bytes >= hashbytes)) { (void) putchar('#'); (void) fflush(stdout); ! hashbytes += mark; } bytes++; if ((c = getc(din)) != '\n' || tcrflag) { diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/ftp_var.h ./ftp_var.h *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/ftp_var.h Tue Aug 30 01:33:14 1994 --- ./ftp_var.h Tue Jan 3 16:35:48 1995 *************** *** 43,53 **** --- 43,57 ---- #include "extern.h" + #define HASHBYTES 1024 + + /* * Options and other state info. */ int trace; /* trace packets exchanged */ int hash; /* print # for each buffer transferred */ + int mark; /* number of bytes between hashes */ int sendport; /* use PORT cmd for each data connection */ int verbose; /* print messages coming back from server */ int connected; /* connected to server */ diff -cb /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/main.c ./main.c *** /data/0/ftp/pub/NetBSD/NetBSD-current/src/usr.bin/ftp/main.c Sun Dec 25 22:27:00 1994 --- ./main.c Tue Jan 3 16:36:27 1995 *************** *** 78,83 **** --- 78,84 ---- doglob = 1; interactive = 1; autologin = 1; + mark = HASHBYTES; while ((ch = getopt(argc, argv, "dgintv")) != -1) { switch (ch) { -- Luke Mewburn UNIX Technical Support <lm@cpr.itg.telecom.com.au> CPR Project, ITG Phone: +61 3 634 2112 Telecom Australia.