other.c

来自「minix软件源代码」· C语言 代码 · 共 164 行

C
164
字号
/* 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));}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?