164 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* other.c by Michael Temari 06/21/92
 | 
						|
 *
 | 
						|
 * ftp          An ftp client program for use with TNET.
 | 
						|
 *
 | 
						|
 * Author:      Michael Temari, <temari@ix.netcom.com>
 | 
						|
 */
 | 
						|
 | 
						|
#include <sys/types.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <ctype.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <termios.h>
 | 
						|
 | 
						|
#include "ftp.h"
 | 
						|
#include "other.h"
 | 
						|
 | 
						|
void FTPinit()
 | 
						|
{
 | 
						|
   linkopen = 0;
 | 
						|
   loggedin = 0;
 | 
						|
   type = TYPE_A;
 | 
						|
   format = 0;
 | 
						|
   mode = 0;
 | 
						|
   structure = 0;
 | 
						|
   passive = 0;
 | 
						|
   atty = isatty(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOpass()
 | 
						|
{
 | 
						|
int s;
 | 
						|
struct termios oldtty, newtty;
 | 
						|
char *pass;
 | 
						|
char password[64];
 | 
						|
 | 
						|
   if(!linkopen) {
 | 
						|
	printf("You must \"OPEN\" a connection first.\n");
 | 
						|
	return(0);
 | 
						|
   }
 | 
						|
 | 
						|
   pass = cmdargv[1];
 | 
						|
 | 
						|
   if(cmdargc < 2) {
 | 
						|
	tcgetattr(fileno(stdout), &oldtty);
 | 
						|
	newtty = oldtty;
 | 
						|
	newtty.c_lflag &= ~ECHO;
 | 
						|
	tcsetattr(fileno(stdout), TCSANOW, &newtty);
 | 
						|
	readline("Password: ", password, sizeof(password));
 | 
						|
	tcsetattr(fileno(stdout), TCSANOW, &oldtty);
 | 
						|
	printf("\n");
 | 
						|
	pass = password;
 | 
						|
   }
 | 
						|
 | 
						|
   s = DOcommand("PASS", pass);
 | 
						|
 | 
						|
   if(s == 230)
 | 
						|
	loggedin = 1;
 | 
						|
 | 
						|
   return(s);
 | 
						|
}
 | 
						|
 | 
						|
int DOuser()
 | 
						|
{
 | 
						|
char *user;
 | 
						|
int s;
 | 
						|
char username[64];
 | 
						|
 | 
						|
   if(!linkopen) {
 | 
						|
	printf("You must \"OPEN\" a connection first.\n");
 | 
						|
	return(0);
 | 
						|
   }
 | 
						|
 | 
						|
   loggedin = 0;
 | 
						|
 | 
						|
   user = cmdargv[1];
 | 
						|
 | 
						|
   if(cmdargc < 2) {
 | 
						|
	readline("Username: ", username, sizeof(username));
 | 
						|
	user = username;
 | 
						|
   }
 | 
						|
 | 
						|
   s = DOcommand("USER", user);
 | 
						|
 | 
						|
   if(atty && s == 331) {
 | 
						|
   	cmdargv[0] = "password";
 | 
						|
   	cmdargc = 1;
 | 
						|
	return(DOpass());
 | 
						|
   }
 | 
						|
 | 
						|
   if(s == 230)
 | 
						|
	loggedin = 1;
 | 
						|
 | 
						|
   return(s);
 | 
						|
}
 | 
						|
 | 
						|
int DOnoop()
 | 
						|
{
 | 
						|
   if(DOcmdcheck())
 | 
						|
	return(0);
 | 
						|
 | 
						|
   return(DOcommand("NOOP", ""));
 | 
						|
}
 | 
						|
 | 
						|
int DOpassive()
 | 
						|
{
 | 
						|
   passive = 1 - passive;
 | 
						|
 | 
						|
   printf("Passive mode is now %s\n", (passive ? "ON" : "OFF"));
 | 
						|
 | 
						|
   return(0);
 | 
						|
}
 | 
						|
 | 
						|
int DOsyst()
 | 
						|
{
 | 
						|
   if(DOcmdcheck())
 | 
						|
	return(0);
 | 
						|
 | 
						|
   return(DOcommand("SYST", ""));
 | 
						|
}
 | 
						|
 | 
						|
int DOremotehelp()
 | 
						|
{
 | 
						|
   if(!linkopen) {
 | 
						|
	printf("You must \"OPEN\" a connection first.\n");
 | 
						|
	return(0);
 | 
						|
   }
 | 
						|
 | 
						|
   return(DOcommand("HELP", ""));
 | 
						|
}
 | 
						|
 | 
						|
int DOquote()
 | 
						|
{
 | 
						|
int i;
 | 
						|
static char args[512];
 | 
						|
 | 
						|
   args[0] = '\0';
 | 
						|
 | 
						|
   for(i = 2; i < cmdargc; i++) {
 | 
						|
	if(i != 2)
 | 
						|
		strcat(args, " ");
 | 
						|
	strcat(args, cmdargv[i]);
 | 
						|
   }
 | 
						|
 | 
						|
   return(DOcommand(cmdargv[1], args));
 | 
						|
}
 | 
						|
 | 
						|
int DOsite()
 | 
						|
{
 | 
						|
int i;
 | 
						|
static char args[512];
 | 
						|
 | 
						|
   args[0] = '\0';
 | 
						|
 | 
						|
   for(i = 1; i < cmdargc; i++) {
 | 
						|
   	if(i != 1)
 | 
						|
		strcat(args, " ");
 | 
						|
	strcat(args, cmdargv[i]);
 | 
						|
   }
 | 
						|
 | 
						|
   return(DOcommand("SITE", args));
 | 
						|
}
 |