ftp patches for piping binary files
David J. Camp
david at wubios.wustl.edu
Wed Sep 20 14:09:19 AEST 1989
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 at wubios.wustl ^ Mr. David J. Camp
Internet: david%wubios at 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 at wubios.wustl ^ Mr. David J. Camp
Internet: david%wubios at wucs1.wustl.edu < * > Box 8067, Biostatistics
uucp: uunet!wucs1!wubios!david v 660 South Euclid
Washington University (314) 36-23635 Saint Louis, MO 63110
More information about the Comp.sources.bugs
mailing list