use binary for list, etc. if unix; avoid null usernames; bostic's pathname
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Fri, 21 Apr 1989 01:27:30 +0000 (17:27 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Fri, 21 Apr 1989 01:27:30 +0000 (17:27 -0800)
stuff

SCCS-vsn: usr.bin/ftp/cmds.c 5.18
SCCS-vsn: usr.bin/ftp/ftp.c 5.28

usr/src/usr.bin/ftp/cmds.c
usr/src/usr.bin/ftp/ftp.c

index 6e87a99..d830852 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)cmds.c     5.17 (Berkeley) %G%";
+static char sccsid[] = "@(#)cmds.c     5.18 (Berkeley) %G%";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -37,7 +37,7 @@ static char sccsid[] = "@(#)cmds.c    5.17 (Berkeley) %G%";
 #include <time.h>
 
 #include "ftp_var.h"
 #include <time.h>
 
 #include "ftp_var.h"
-
+#include "pathnames.h"
 
 extern char *globerr;
 extern char **glob();
 
 extern char *globerr;
 extern char **glob();
@@ -46,6 +46,7 @@ extern        char *remglob();
 extern char *getenv();
 extern char *index();
 extern char *rindex();
 extern char *getenv();
 extern char *index();
 extern char *rindex();
+extern int allbinary;
 extern char reply_string[];
 
 char *mname;
 extern char reply_string[];
 
 char *mname;
@@ -109,6 +110,7 @@ setpeer(argc, argv)
                overbose = verbose;
                if (debug == 0)
                        verbose = -1;
                overbose = verbose;
                if (debug == 0)
                        verbose = -1;
+               allbinary = 0;
                if (command("SYST") == COMPLETE && overbose) {
                        register char *cp, c;
                        cp = index(reply_string+4, ' ');
                if (command("SYST") == COMPLETE && overbose) {
                        register char *cp, c;
                        cp = index(reply_string+4, ' ');
@@ -128,6 +130,7 @@ setpeer(argc, argv)
                }
                if (!strncmp(reply_string, "215 UNIX Type: L8", 17)) {
                        setbinary();
                }
                if (!strncmp(reply_string, "215 UNIX Type: L8", 17)) {
                        setbinary();
+                       allbinary = 1;
                        if (overbose)
                            printf("Using %s mode to transfer files.\n",
                                typename);
                        if (overbose)
                            printf("Using %s mode to transfer files.\n",
                                typename);
@@ -668,7 +671,7 @@ remglob(argv,doswitch)
                return (cp);
        }
        if (ftemp == NULL) {
                return (cp);
        }
        if (ftemp == NULL) {
-               (void) strcpy(temp, "/tmp/ftpXXXXXX");
+               (void) strcpy(temp, _PATH_TMP);
                (void) mktemp(temp);
                oldverbose = verbose, verbose = 0;
                oldhash = hash, hash = 0;
                (void) mktemp(temp);
                oldverbose = verbose, verbose = 0;
                oldhash = hash, hash = 0;
@@ -1150,7 +1153,7 @@ shell(argc, argv)
                (void) signal(SIGQUIT, SIG_DFL);
                shell = getenv("SHELL");
                if (shell == NULL)
                (void) signal(SIGQUIT, SIG_DFL);
                shell = getenv("SHELL");
                if (shell == NULL)
-                       shell = "/bin/sh";
+                       shell = _PATH_BSHELL;
                namep = rindex(shell,'/');
                if (namep == NULL)
                        namep = shell;
                namep = rindex(shell,'/');
                if (namep == NULL)
                        namep = shell;
index 4b38c26..2804ad5 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)ftp.c      5.27 (Berkeley) %G%";
+static char sccsid[] = "@(#)ftp.c      5.28 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -45,6 +45,7 @@ int   data = -1;
 int    abrtflag = 0;
 int    ptflag = 0;
 int    connected;
 int    abrtflag = 0;
 int    ptflag = 0;
 int    connected;
+int    allbinary;
 struct sockaddr_in myctladdr;
 uid_t  getuid();
 
 struct sockaddr_in myctladdr;
 uid_t  getuid();
 
@@ -168,7 +169,7 @@ login(host)
                code = -1;
                return(0);
        }
                code = -1;
                return(0);
        }
-       if (user == NULL) {
+       while (user == NULL) {
                char *myname = getlogin();
 
                if (myname == NULL) {
                char *myname = getlogin();
 
                if (myname == NULL) {
@@ -177,7 +178,10 @@ login(host)
                        if (pp != NULL)
                                myname = pp->pw_name;
                }
                        if (pp != NULL)
                                myname = pp->pw_name;
                }
-               printf("Name (%s:%s): ", host, myname);
+               if (myname)
+                       printf("Name (%s:%s): ", host, myname);
+               else
+                       printf("Name (%s): ", host);
                (void) fgets(tmp, sizeof(tmp) - 1, stdin);
                tmp[strlen(tmp) - 1] = '\0';
                if (*tmp == '\0')
                (void) fgets(tmp, sizeof(tmp) - 1, stdin);
                tmp[strlen(tmp) - 1] = '\0';
                if (*tmp == '\0')
@@ -709,7 +713,7 @@ recvrequest(cmd, local, remote, mode, printnames)
        if (setjmp(recvabort))
                goto abort;
        if (!is_retr) {
        if (setjmp(recvabort))
                goto abort;
        if (!is_retr) {
-               if (type != TYPE_A) {
+               if (type != TYPE_A && (allbinary == 0 || type != TYPE_I)) {
                        oldtype = type;
                        oldverbose = verbose;
                        if (!debug)
                        oldtype = type;
                        oldverbose = verbose;
                        if (!debug)