david@wubios.wustl.edu (David J. Camp) (09/20/89)
Here are some hacks to the ftp source from wuarchive:/archive/unix/4.3BSD-tahoe/ucb/ftp/* They solve a problem with piping binary files to the ftp put command. I do not know why it was failing, and I know my changes will slow it down, but it works now and it did not before (when piping binary files). I tried not to make it too sun-specific, but I know little of other machines. Often I just used '#ifdef sun' around a change, when it may be appropriate for other machines also. -David- Bitnet: david@wubios.wustl ^ Mr. David J. Camp Internet: david%wubios@wucs1.wustl.edu < * > Box 8067, Biostatistics uucp: uunet!wucs1!wubios!david v 660 South Euclid Washington University (314) 36-23635 Saint Louis, MO 63110 diff -bc oftpsrc/Makefile ftpsrc/Makefile *** oftpsrc/Makefile Tue Sep 19 23:00:10 1989 --- ftpsrc/Makefile Tue Sep 19 22:49:59 1989 *************** *** 18,26 **** # CFLAGS= -O LIBC= /lib/libc.a ! SRCS= cmds.c cmdtab.c ftp.c getpass.c glob.c main.c pclose.c ruserpass.c domacro.c ! OBJS= cmds.o cmdtab.o ftp.o getpass.o glob.o main.o pclose.o ruserpass.o domacro.o all: ftp ftp: ${OBJS} ${LIBC} --- 18,30 ---- # CFLAGS= -O LIBC= /lib/libc.a ! SRCS= cmds.c cmdtab.c ftp.c getpass.c glob.c main.c ruserpass.c domacro.c mypopen.c ! OBJS= cmds.o cmdtab.o ftp.o getpass.o glob.o main.o ruserpass.o domacro.o mypopen.o ! MACHINE=sun3 + .c.o: + ${CC} -o $*.o ${CFLAGS} $*.c -c + all: ftp ftp: ${OBJS} ${LIBC} *************** *** 47,84 **** # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. cmds.o: cmds.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! cmds.o: /usr/include/signal.h /usr/include/machine/trap.h ! cmds.o: /usr/include/machine/machparam.h /usr/include/machine/endian.h cmds.o: /usr/include/setjmp.h /usr/include/sys/socket.h /usr/include/arpa/ftp.h cmds.o: /usr/include/signal.h /usr/include/stdio.h /usr/include/errno.h cmds.o: /usr/include/netdb.h /usr/include/ctype.h /usr/include/sys/wait.h cmdtab.o: cmdtab.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! cmdtab.o: /usr/include/signal.h /usr/include/machine/trap.h ! cmdtab.o: /usr/include/machine/machparam.h /usr/include/machine/endian.h cmdtab.o: /usr/include/setjmp.h ftp.o: ftp.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! ftp.o: /usr/include/signal.h /usr/include/machine/trap.h ! ftp.o: /usr/include/machine/machparam.h /usr/include/machine/endian.h ftp.o: /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/sys/ioctl.h ftp.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h ftp.o: /usr/include/sys/socket.h /usr/include/sys/time.h /usr/include/time.h ftp.o: /usr/include/sys/param.h /usr/include/sys/types.h /usr/include/signal.h ! ftp.o: /usr/include/machine/machparam.h /usr/include/netinet/in.h ftp.o: /usr/include/arpa/ftp.h /usr/include/arpa/telnet.h /usr/include/stdio.h ftp.o: /usr/include/signal.h /usr/include/errno.h /usr/include/netdb.h ftp.o: /usr/include/fcntl.h /usr/include/pwd.h /usr/include/ctype.h getpass.o: getpass.c /usr/include/stdio.h /usr/include/signal.h ! getpass.o: /usr/include/machine/trap.h /usr/include/sgtty.h getpass.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h getpass.o: /usr/include/sys/ttydev.h glob.o: glob.c /usr/include/sys/param.h /usr/include/sys/types.h ! glob.o: /usr/include/signal.h /usr/include/machine/trap.h ! glob.o: /usr/include/machine/machparam.h /usr/include/machine/endian.h glob.o: /usr/include/sys/stat.h /usr/include/sys/dir.h /usr/include/stdio.h glob.o: /usr/include/errno.h /usr/include/pwd.h main.o: main.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! main.o: /usr/include/signal.h /usr/include/machine/trap.h ! main.o: /usr/include/machine/machparam.h /usr/include/machine/endian.h main.o: /usr/include/setjmp.h /usr/include/sys/socket.h main.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h main.o: /usr/include/sys/ttydev.h /usr/include/sys/types.h --- 51,88 ---- # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. cmds.o: cmds.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! cmds.o: /usr/include/signal.h /usr/include/${MACHINE}/trap.h ! cmds.o: /usr/include/${MACHINE}/param.h cmds.o: /usr/include/setjmp.h /usr/include/sys/socket.h /usr/include/arpa/ftp.h cmds.o: /usr/include/signal.h /usr/include/stdio.h /usr/include/errno.h cmds.o: /usr/include/netdb.h /usr/include/ctype.h /usr/include/sys/wait.h cmdtab.o: cmdtab.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! cmdtab.o: /usr/include/signal.h /usr/include/${MACHINE}/trap.h ! cmdtab.o: /usr/include/${MACHINE}/param.h cmdtab.o: /usr/include/setjmp.h ftp.o: ftp.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! ftp.o: /usr/include/signal.h /usr/include/${MACHINE}/trap.h ! ftp.o: /usr/include/${MACHINE}/param.h ftp.o: /usr/include/setjmp.h /usr/include/sys/stat.h /usr/include/sys/ioctl.h ftp.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h ftp.o: /usr/include/sys/socket.h /usr/include/sys/time.h /usr/include/time.h ftp.o: /usr/include/sys/param.h /usr/include/sys/types.h /usr/include/signal.h ! ftp.o: /usr/include/${MACHINE}/param.h /usr/include/netinet/in.h ftp.o: /usr/include/arpa/ftp.h /usr/include/arpa/telnet.h /usr/include/stdio.h ftp.o: /usr/include/signal.h /usr/include/errno.h /usr/include/netdb.h ftp.o: /usr/include/fcntl.h /usr/include/pwd.h /usr/include/ctype.h getpass.o: getpass.c /usr/include/stdio.h /usr/include/signal.h ! getpass.o: /usr/include/${MACHINE}/trap.h /usr/include/sgtty.h getpass.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h getpass.o: /usr/include/sys/ttydev.h glob.o: glob.c /usr/include/sys/param.h /usr/include/sys/types.h ! glob.o: /usr/include/signal.h /usr/include/${MACHINE}/trap.h ! glob.o: /usr/include/${MACHINE}/param.h glob.o: /usr/include/sys/stat.h /usr/include/sys/dir.h /usr/include/stdio.h glob.o: /usr/include/errno.h /usr/include/pwd.h main.o: main.c ftp_var.h /usr/include/sys/param.h /usr/include/sys/types.h ! main.o: /usr/include/signal.h /usr/include/${MACHINE}/trap.h ! main.o: /usr/include/${MACHINE}/param.h main.o: /usr/include/setjmp.h /usr/include/sys/socket.h main.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h main.o: /usr/include/sys/ttydev.h /usr/include/sys/types.h *************** *** 85,102 **** main.o: /usr/include/arpa/ftp.h /usr/include/signal.h /usr/include/stdio.h main.o: /usr/include/errno.h /usr/include/ctype.h /usr/include/netdb.h main.o: /usr/include/pwd.h - pclose.o: pclose.c /usr/include/stdio.h /usr/include/signal.h - pclose.o: /usr/include/machine/trap.h /usr/include/sys/param.h - pclose.o: /usr/include/sys/types.h /usr/include/signal.h - pclose.o: /usr/include/machine/machparam.h /usr/include/machine/endian.h - pclose.o: /usr/include/sys/wait.h ruserpass.o: ruserpass.c /usr/include/stdio.h /usr/include/utmp.h ruserpass.o: /usr/include/ctype.h /usr/include/sys/types.h ruserpass.o: /usr/include/sys/stat.h /usr/include/errno.h domacro.o: domacro.c ftp_var.h /usr/include/sys/param.h domacro.o: /usr/include/sys/types.h /usr/include/signal.h ! domacro.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h ! domacro.o: /usr/include/machine/endian.h /usr/include/setjmp.h domacro.o: /usr/include/signal.h /usr/include/stdio.h /usr/include/errno.h domacro.o: /usr/include/ctype.h /usr/include/sys/ttychars.h --- 89,101 ---- main.o: /usr/include/arpa/ftp.h /usr/include/signal.h /usr/include/stdio.h main.o: /usr/include/errno.h /usr/include/ctype.h /usr/include/netdb.h main.o: /usr/include/pwd.h ruserpass.o: ruserpass.c /usr/include/stdio.h /usr/include/utmp.h ruserpass.o: /usr/include/ctype.h /usr/include/sys/types.h ruserpass.o: /usr/include/sys/stat.h /usr/include/errno.h domacro.o: domacro.c ftp_var.h /usr/include/sys/param.h domacro.o: /usr/include/sys/types.h /usr/include/signal.h ! domacro.o: /usr/include/${MACHINE}/trap.h /usr/include/sun3/param.h ! domacro.o: /usr/include/setjmp.h domacro.o: /usr/include/signal.h /usr/include/stdio.h /usr/include/errno.h domacro.o: /usr/include/ctype.h /usr/include/sys/ttychars.h diff -bc oftpsrc/domacro.c ftpsrc/domacro.c *** oftpsrc/domacro.c Tue Sep 19 23:00:11 1989 --- ftpsrc/domacro.c Tue Sep 19 22:39:36 1989 *************** *** 26,31 **** --- 26,35 ---- #include <errno.h> #include <ctype.h> #include <sys/ttychars.h> + #ifdef sun + #undef CTRL + #define CTRL(c) (c&037) + #endif domacro(argc, argv) int argc; diff -bc oftpsrc/ftp.c ftpsrc/ftp.c *** oftpsrc/ftp.c Tue Sep 19 23:00:11 1989 --- ftpsrc/ftp.c Tue Sep 19 22:53:26 1989 *************** *** 50,55 **** --- 50,58 ---- FILE *cin, *cout; FILE *dataconn(); + int mypclose (); + FILE * mypopen (); + char * hookup(host, port) char *host; *************** *** 474,479 **** --- 477,483 ---- case TYPE_I: case TYPE_L: errno = d = 0; + /* while ((c = read(fileno (fin), buf, sizeof (buf))) > 0) { if ((d = write(fileno (dout), buf, c)) < 0) break; *************** *** 483,495 **** (void) fflush(stdout); } } ! if (hash && bytes > 0) { (void) putchar('\n'); (void) fflush(stdout); } ! if (c < 0) perror(local); ! if (d < 0) perror("netout"); break; --- 487,517 ---- (void) fflush(stdout); } } ! if (c < 0) ! perror(local); ! if (d < 0) ! perror("netout"); ! */ ! c = fgetc (fin); ! while ((! feof (fin)) && (! ferror (fin)) && (! ferror (dout))) ! { ! fputc (c, dout); ! bytes ++; ! if (bytes % 1024 == 0 && hash) ! { ! fputc ('#', stdout); ! fflush (stdout); ! } ! c = fgetc (fin); ! } ! if (hash && bytes > 0) ! { (void) putchar('\n'); (void) fflush(stdout); } ! if (ferror (fin)) perror(local); ! if (ferror (dout)) perror("netout"); break; Only in ftpsrc: ftpput diff -bc oftpsrc/getpass.c ftpsrc/getpass.c *** oftpsrc/getpass.c Tue Sep 19 23:00:12 1989 --- ftpsrc/getpass.c Tue Sep 19 21:56:41 1989 *************** *** 42,48 **** --- 42,50 ---- register char *p; register c; static char pbuf[50+1]; + #ifndef sun int (*signal())(); + #endif int (*sig)(); if ((fi = fopen("/dev/tty", "r")) == NULL) diff -bc oftpsrc/glob.c ftpsrc/glob.c *** oftpsrc/glob.c Tue Sep 19 23:00:12 1989 --- ftpsrc/glob.c Tue Sep 19 22:17:35 1989 *************** *** 38,46 **** #define isdir(d) ((d.st_mode & S_IFMT) == S_IFDIR) static char **gargv; /* Pointer to the (stack) arglist */ ! static short gargc; /* Number args in gargv */ ! static short gnleft; ! static short gflag; static int tglob(); char **glob(); char *globerr; --- 38,46 ---- #define isdir(d) ((d.st_mode & S_IFMT) == S_IFDIR) static char **gargv; /* Pointer to the (stack) arglist */ ! static int gargc; /* Number args in gargv */ ! static int gnleft; ! static int gflag; static int tglob(); char **glob(); char *globerr; diff -bc oftpsrc/main.c ftpsrc/main.c *** oftpsrc/main.c Tue Sep 19 23:00:13 1989 --- ftpsrc/main.c Tue Sep 19 22:37:29 1989 *************** *** 41,47 **** #include <ctype.h> #include <netdb.h> #include <pwd.h> ! uid_t getuid(); int intr(); --- 41,50 ---- #include <ctype.h> #include <netdb.h> #include <pwd.h> ! #ifdef sun ! #undef CTRL ! #define CTRL(c) (c&037) ! #endif uid_t getuid(); int intr(); Only in ftpsrc: mypopen.c Only in ftpsrc: tftpput -- Bitnet: david@wubios.wustl ^ Mr. David J. Camp Internet: david%wubios@wucs1.wustl.edu < * > Box 8067, Biostatistics uucp: uunet!wucs1!wubios!david v 660 South Euclid Washington University (314) 36-23635 Saint Louis, MO 63110