summaryrefslogtreecommitdiffstats
path: root/lib/libftp/utils/uftpcmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libftp/utils/uftpcmd.c')
-rw-r--r--lib/libftp/utils/uftpcmd.c346
1 files changed, 173 insertions, 173 deletions
diff --git a/lib/libftp/utils/uftpcmd.c b/lib/libftp/utils/uftpcmd.c
index 959de40..2eb3cb2 100644
--- a/lib/libftp/utils/uftpcmd.c
+++ b/lib/libftp/utils/uftpcmd.c
@@ -10,61 +10,61 @@ Ftp_connect_hook(FTP *ftp,int code, char *msg)
{
FtpLog(ftp->title,msg);
longjmp(connectstack,1);
-
+
}
-
-Ftp_connect(ARGS)
+
+Ftp_connect(ARGS)
{
STATUS (*func1)(),(*func2)();
if (*w2==0) w2=readline("Host:");
- if (FtpGetHost(w2)==NULL && FtpInit.IO != NULL)
+ if (FtpGetHost(w2)==NULL && FtpInit.IO != NULL)
{
char *msg;
extern int h_errno;
-
+
switch(h_errno)
{
case HOST_NOT_FOUND: msg = "Host unknown"; break;
case TRY_AGAIN: msg = "Hostname lookup failure";break;
- default: msg = "gethostbyname failure";
+ default: msg = "gethostbyname failure";
}
return (*FtpInit.IO)(LINK,QUIT,msg);
}
-
+
newframe(0);
-
+
func1 = FtpInit.error;
func2 = FtpInit.IO;
-
- if (trymode)
+
+ if (trymode)
{
FtpSetErrorHandler(&FtpInit,Ftp_connect_hook);
FtpSetIOHandler(&FtpInit,Ftp_connect_hook);
setjmp(connectstack);
}
-
+
FtpConnect(&LINK,w2);
strcpy(iftp[frame].host,FtpGetHost(w2)->h_name);
-
+
FtpSetErrorHandler(LINK,func1);
FtpSetErrorHandler(&FtpInit,func1);
FtpSetIOHandler(LINK,func2);
FtpSetIOHandler(&FtpInit,func2);
-
+
return;
}
Ftp_user(ARGS)
{
-
+
if (*w2==0)
{
sprintf(tmp,"login (default %s):",defaultuser);
w2=readline(tmp);
- if (*w2==0)
+ if (*w2==0)
w2=defaultuser;
}
strcpy(iftp[frame].user,w2);
@@ -74,11 +74,11 @@ Ftp_user(ARGS)
Ftp_pass(ARGS)
{
- if (*w2==0)
+ if (*w2==0)
{
String pass;
String host;
-
+
gethostname(host, sizeof host);
strcpy(host,FtpGetHost(host)->h_name);
sprintf(pass,"%s@%s",getpwuid(getuid())->pw_name,host);
@@ -86,7 +86,7 @@ Ftp_pass(ARGS)
w2=getpass(tmp);
if (*w2==0) w2=pass;
}
-
+
strcpy(iftp[frame].pass,w2);
FtpPassword(LINK,w2);
strcpy(iftp[frame].pwd,FtpPwd(LINK));
@@ -96,11 +96,11 @@ Ftp_open(ARGS)
{
register char *p1;
STATUS (*err)();
-
+
Ftp_connect("",w2,"","","","");
Ftp_user("",w3,w4,"","","" );
if (ifalias("autologin")) execute("autologin");
- if (*w5)
+ if (*w5)
Ftp_cd("cd",w5,"","","","");
}
@@ -121,11 +121,11 @@ Ftp_ftp(ARGS)
{
String pass;
String host;
-
+
gethostname(host, sizeof host);
strcpy(host,FtpGetHost(host)->h_name);
sprintf(pass,"%s@%s",getpwuid(getuid())->pw_name,host);
-
+
Ftp_open("",w2,"anonymous",pass,w3,"");
return;
}
@@ -147,14 +147,14 @@ Ftp_lcd(ARGS)
glob_t gl;
bzero(&gl,sizeof gl);
-
+
glob(w2,GLOB_BRACE|GLOB_TILDE|GLOB_QUOTE,
Ftp_mput_handler, &gl);
-
-
+
+
if (gl.gl_matchc<1 || chdir(*gl.gl_pathv))
perror(w2);
-
+
printf("Local directory is \"%s\"\n",getwd(tmp));
}
@@ -163,35 +163,35 @@ Ftp_dir(ARGS)
char *cmd1;
String cmd;
char mode=LINK->mode;
-
- if ( !strcmp(w1,"dir") )
+
+ if ( !strcmp(w1,"dir") )
cmd1="LIST";
else
cmd1="NLST";
-
+
strcpy(cmd,makestr(cmd1,w2,w3,w4,w5,w6,NULL));
if ( LINK->mode != 'A' ) FtpAscii(LINK);
FtpRetr(LINK,cmd,"","-");
if ( LINK->mode != mode ) FtpType(LINK,mode);
-
+
}
Ftp_close(ARGS)
{
register int i;
-
- if (isdigit(*w2))
+
+ if (isdigit(*w2))
{
i=atoi(w2);
}
- else
+ else
{
i=frame;
}
-
+
FtpQuickBye(ftp[i]);
-
+
iftp[i].host[0]=0;
iftp[i].pwd[0]=0;
ftp[i]=NULL;
@@ -203,19 +203,19 @@ INLINE SetLogicalVar(char arg, int * var, char *msg)
{
switch(arg)
{
-
+
case 'y':
-
+
*var=1;
break;
-
+
case 'n':
-
+
*var=0;
break;
-
+
default:
-
+
(*var)?(*var=0):(*var=1);
break;
}
@@ -227,7 +227,7 @@ Ftp_set(ARGS)
{
if (!strcmp("frame",w2))
return atoi(w3)<NFRAMES?frame=atoi(w3):0;
-
+
if (!strcmp("timeout",w2))
{
FtpSetTimeout(&FtpInit,atoi(w3));
@@ -235,17 +235,17 @@ Ftp_set(ARGS)
FtpSetTimeout(LINK,atoi(w3));
return;
}
-
+
if (!strcmp("sleep",w2))
{
sleeptime=atoi(w3);
return;
}
-
+
if (!strcmp("debug",w2))
{
- if ( *w3=='y' || *w3==0)
- {
+ if ( *w3=='y' || *w3==0)
+ {
if (LINK!=NULL) FtpSetDebugHandler(LINK,FtpDebugDebug);
FtpSetDebugHandler(&FtpInit,FtpDebugDebug);
return puts("Debuging on for current and next session");
@@ -257,11 +257,11 @@ Ftp_set(ARGS)
return puts("Debuging off for current and next session");
}
}
-
+
if (!strcmp("bin",w2))
{
- if ( *w3=='y' || *w3==0)
- {
+ if ( *w3=='y' || *w3==0)
+ {
FtpInit.mode='I';
return puts("Binary mode enable");
}
@@ -271,7 +271,7 @@ Ftp_set(ARGS)
return puts("Binary mode disable");
}
}
-
+
if (!strcmp("try",w2))
return SetLogicalVar(*w3,&trymode,"Try mode");
if (!strcmp("hash",w2))
@@ -280,16 +280,16 @@ Ftp_set(ARGS)
return SetLogicalVar(*w3,&glassmode,"Glass mode");
if (!strcmp("rest",w2)||!strcmp(w2,"restore"))
return SetLogicalVar(*w3,&restmode,"Restore mode");
-
+
if (!strcmp("prompt",w2))
{
strcpy(prompt,w3);
return;
}
-
+
if (!strcmp("port",w2))
{
- if ( isdigit(*w3))
+ if ( isdigit(*w3))
return FtpSetPort(&FtpInit,atoi(w3));
puts("Port must be number");
fflush(stdout);
@@ -298,7 +298,7 @@ Ftp_set(ARGS)
if (!strcmp("noopinterval",w2)||!strcmp("noop",w2))
{
- if ( isdigit(*w3))
+ if ( isdigit(*w3))
return noopinterval=(time_t)atoi(w3);
puts("Time must be number");
fflush(stdout);
@@ -307,21 +307,21 @@ Ftp_set(ARGS)
if (!strcmp("nooptimeout",w2))
{
- if ( isdigit(*w3))
+ if ( isdigit(*w3))
return nooptimeout=(time_t)atoi(w3);
puts("Time must be number");
fflush(stdout);
return;
}
-
+
if (!strcmp("user",w2)||!strcmp("login",w2))
{
strcpy(defaultuser,w3);
return;
}
-
+
if (!strcmp("",w2))
{
@@ -342,8 +342,8 @@ Ftp_set(ARGS)
fflush(stdout);
return;
}
- return puts("arg 2 unknown");
-
+ return puts("arg 2 unknown");
+
}
jmp_buf getstack;
@@ -351,13 +351,13 @@ jmp_buf getstack;
Ftp_get_hook(FTP *con,int code, char *msg)
{
- if ( abs(code)==550 && FtpBadReply550(msg) )
+ if ( abs(code)==550 && FtpBadReply550(msg) )
{
FtpLog(con->title,msg);
log("Transfer cancel");
longjmp(getstack,2);
}
-
+
if ( code == LQUIT )
{
log(msg);
@@ -366,7 +366,7 @@ Ftp_get_hook(FTP *con,int code, char *msg)
}
-
+
FtpLog(con->title,msg);
FtpQuickBye(LINK);
LINK=NULL;
@@ -374,11 +374,11 @@ Ftp_get_hook(FTP *con,int code, char *msg)
log("sleeping......");
sleep(sleeptime);
log("try again...");
-
+
longjmp(getstack,1);
-
+
}
-
+
void Ftp_get_intr(int sig)
{
signal(SIGINT,intr);
@@ -393,19 +393,19 @@ Ftp_get(ARGS)
int back=0;
int code;
int status=0;
-
+
OldInit=FtpInit;
-
+
if (strstr(w1,"put")!=NULL) back=1;
-
-
+
+
if (restmode || ((*w1=='r')&&(*(w1+1)=='e')) )
FtpSetFlag(LINK,FTP_REST);
else
- FtpClearFlag(LINK,FTP_REST);
-
-
-
+ FtpClearFlag(LINK,FTP_REST);
+
+
+
if (trymode)
{
FtpSetErrorHandler(LINK,Ftp_get_hook);
@@ -414,28 +414,28 @@ Ftp_get(ARGS)
FTPCMD(&FtpInit)=FTPCMD(&OldInit);
FTPDATA(&FtpInit)=FTPDATA(&OldInit);
}
-
+
signal(SIGINT,Ftp_get_intr);
FtpSetHashHandler(LINK,NULL);
-
-
- if ((status=setjmp(getstack))==2||status==3)
+
+
+ if ((status=setjmp(getstack))==2||status==3)
goto done;
-
+
if ((LINK==NULL)||(LINK->sock==FtpInit.sock))
{
FtpLogin(&LINK,iftp[frame].host,iftp[frame].user,
- iftp[frame].pass,NULL);
+ iftp[frame].pass,NULL);
FtpChdir(LINK,iftp[frame].pwd);
}
-
+
if (hashmode && isatty(fileno(stdout)))
FtpSetHashHandler(LINK,myhash);
else
FtpSetHashHandler(LINK,NULL);
-
+
myhash(LINK,0);
-
+
if (!back)
FtpGet(LINK,w2,makefilename(w2,w3));
else
@@ -443,15 +443,15 @@ Ftp_get(ARGS)
log("Transfer compliete");
-
-
+
+
done:
-
-
+
+
FtpSetHashHandler(LINK,NULL);
FtpSetErrorHandler(LINK,my_error);
FtpSetIOHandler(LINK,my_error);
- FtpClearFlag(LINK,FTP_REST);
+ FtpClearFlag(LINK,FTP_REST);
FtpInit=OldInit;
}
@@ -459,7 +459,7 @@ Ftp_mget(ARGS)
{
FILE *list;
char mode=LINK->mode;
-
+
sprintf(tmp,"/tmp/uftplist-%s.XXXXXX",getpwuid(getuid())->pw_name);
mktemp(tmp);
@@ -487,10 +487,10 @@ Ftp_mget(ARGS)
Ftp_mput(ARGS)
{
glob_t gl;
-
+
glob(w2,GLOB_BRACE|GLOB_TILDE|GLOB_QUOTE,
Ftp_mput_handler, &gl);
-
+
while(gl.gl_matchc--)
{
Ftp_get("put",*gl.gl_pathv,"","","","");
@@ -501,51 +501,51 @@ Ftp_mput(ARGS)
Ftp_bget(ARGS)
{
-
+
String fn,lfn;
char *p;
newframe(0);
-
+
if (!FtpFullSyntax(w2,iftp[frame].host,iftp[frame].user,
iftp[frame].pass,fn))
return puts("Filename syntax error");
-
+
strcpy(iftp[frame].pwd,"/");
-
- if ((p=strrchr(fn,'/'))!=NULL)
+
+ if ((p=strrchr(fn,'/'))!=NULL)
strcpy(lfn,p+1);
else
strcpy(lfn,fn);
-
+
FtpQuickBye(LINK);
LINK=FtpCreateObject();
LINK->sock=NULL;
-
+
Ftp_get("get",fn,(*w3==0)?lfn:w3,"","","");
}
Ftp_bput(ARGS)
{
-
+
String fn,lfn;
char *p;
if (!FtpFullSyntax((*w3==0)?w2:w3,iftp[frame].host,iftp[frame].user,
iftp[frame].pass,fn))
return puts("Filename syntax error");
-
+
strcpy(iftp[frame].pwd,"/");
-
- if ((p=strrchr(fn,'/'))!=NULL)
+
+ if ((p=strrchr(fn,'/'))!=NULL)
strcpy(lfn,p+1);
else
strcpy(lfn,fn);
-
+
FtpQuickBye(LINK);
LINK=FtpCreateObject();
LINK->sock=NULL;
-
+
Ftp_get("put",(*w3==0)?lfn:w2,fn,"","","");
}
@@ -553,10 +553,10 @@ Ftp_copy(ARGS)
{
char *p;
int in,out;
-
+
if ( !*w2 || !*w3 ) return puts("Must pass two args");
-
- if ((p=strchr(w2,'!'))!=NULL)
+
+ if ((p=strchr(w2,'!'))!=NULL)
{
*p=0;
in=atoi(w2);
@@ -565,7 +565,7 @@ Ftp_copy(ARGS)
else
in=frame;
- if ((p=strchr(w3,'!'))!=NULL)
+ if ((p=strchr(w3,'!'))!=NULL)
{
*p=0;
out=atoi(w3);
@@ -573,9 +573,9 @@ Ftp_copy(ARGS)
}
else
in=frame;
-
+
if (in==out) return puts("Files must been from different frames");
-
+
FtpCopy(ftp[in],ftp[out],w2,w3);
}
@@ -583,10 +583,10 @@ Ftp_ccopy(ARGS)
{
char *p;
int in,out;
-
+
if ( !*w2 || !*w3 ) return puts("Must pass two args");
-
- if ((p=strchr(w2,'!'))!=NULL)
+
+ if ((p=strchr(w2,'!'))!=NULL)
{
*p=0;
in=atoi(w2);
@@ -595,7 +595,7 @@ Ftp_ccopy(ARGS)
else
in=frame;
- if ((p=strchr(w3,'!'))!=NULL)
+ if ((p=strchr(w3,'!'))!=NULL)
{
*p=0;
out=atoi(w3);
@@ -603,9 +603,9 @@ Ftp_ccopy(ARGS)
}
else
in=frame;
-
+
if (in==out) return puts("Files must been from different frames");
-
+
FtpPassiveTransfer(ftp[in],ftp[out],w2,w3);
}
@@ -628,17 +628,17 @@ Ftp_cd(ARGS)
Ftp_dup(ARGS)
-{
+{
LINKINFO oldinfo;
FTP oldftp;
-
+
oldinfo=iftp[frame];
oldftp=*LINK;
-
+
newframe(0);
puts("Make alternative connection...");
Ftp_open("",oldinfo.host,oldinfo.user,oldinfo.pass,"","");
- if (strcmp(oldinfo.pwd,iftp[frame].pwd))
+ if (strcmp(oldinfo.pwd,iftp[frame].pwd))
Ftp_cd("",oldinfo.pwd,"","","","");
if (LINK->mode!=oldftp.mode)
FtpType(LINK,oldftp.mode);
@@ -649,23 +649,23 @@ Ftp_dup(ARGS)
FtpSetIOHandler(LINK,oldftp.IO);
FtpSetHashHandler(LINK,oldftp.hash);
}
-
-
+
+
Ftp_bg(ARGS)
{
if (fork())
{
-
+
log("Backgrounding...");
return;
}
else
{
int i=frame;
-
+
lastcmd=1;
-
+
/* Ignoring keypad */
alarm (0);
@@ -680,7 +680,7 @@ Ftp_bg(ARGS)
/* Droping output */
-
+
sprintf(tmp,"/tmp/uftp-%s.XXXXXX",getpwuid(getuid())->pw_name);
mktemp(tmp);
close(0);close(1);close(2);
@@ -693,21 +693,21 @@ Ftp_bg(ARGS)
free(ftp[i]);
ftp[i]=NULL;
}
-
+
return executev(w2,w3,w4,w5,w6,"");
}
}
-
+
Ftp_list()
{
register int i;
-
-#define _FMT "%-5s %-15s %-10s %-25s %-7s %-4s\n"
-#define FMT "%-5d %-15s %-10s %-25s %-7d %-4d\n"
-
+
+#define _FMT "%-5s %-15s %-10s %-25s %-7s %-4s\n"
+#define FMT "%-5d %-15s %-10s %-25s %-7d %-4d\n"
+
printf(_FMT,"Frame","Host name","User's name","Working directory","Timeout","Port");
-
+
for ( i = 0 ; i < NFRAMES ; i++ )
if (ftp[i]!=NULL)
printf(FMT,i,iftp[i].host,iftp[i].user,iftp[i].pwd,
@@ -739,10 +739,10 @@ Ftp_page(ARGS)
{
register char *pager;
String out={'|',0};
-
- if ((pager=(char *)getenv("PAGER"))==NULL)
+
+ if ((pager=(char *)getenv("PAGER"))==NULL)
pager="more";
-
+
strcat(out,pager);
FtpGet(LINK,w2,out);
}
@@ -759,24 +759,24 @@ Ftp_rm(ARGS)
sprintf(tmp,"/tmp/uftplist-%s.XXXXXX",getpwuid(getuid())->pw_name);
mktemp(tmp);
-
- if (*w2==0)
+
+ if (*w2==0)
{
log("Filename specification must present");
return;
}
-
+
FtpRetr(LINK,"NLST %s",w2,tmp);
-
+
if ((list=fopen(tmp,"r"))==NULL)
return FtpLog(tmp,sys_errlist[errno]);
-
+
while ( fgets(tmp,sizeof tmp,list)!=NULL)
{
tmp[strlen(tmp)-1]=0;
FtpCommand(LINK,"DELE %s",tmp,0,EOF);
}
-
+
fclose(list);
}
@@ -791,7 +791,7 @@ Ftp_move(ARGS)
Ftp_help(ARGS)
{
register int i,ii;
-
+
if ( !*w2 )
{
puts("Warrning!!!! \nPlease read general information using command \"help etc\"\n\n");
@@ -806,7 +806,7 @@ Ftp_help(ARGS)
putchar ('\n');
}
}
-
+
for ( i = 0 ; 1; i++)
{
@@ -817,13 +817,13 @@ Ftp_help(ARGS)
}
puts(cmds[i].help);
-
+
}
Ftp_quote(ARGS)
{
String new;
-
+
new[0]=0;
if (*w2!=0) strcpy(new,w2);
@@ -838,8 +838,8 @@ Ftp_quote(ARGS)
Ftp_alias(ARGS)
{
ALIAS *a=firstalias;
-
-
+
+
if ( *w2==0 )
{
while (a!=NULL)
@@ -851,20 +851,20 @@ Ftp_alias(ARGS)
}
- while (1)
+ while (1)
{
if ( a == NULL )
- {
+ {
firstalias = a = (ALIAS *) malloc(sizeof(ALIAS));
memset(a,0,sizeof(ALIAS));
a -> next = NULL;
break;
}
-
+
if (!strcmp(a->name,w2))
break;
-
+
if ( a->next == NULL)
{
a -> next = (ALIAS *) malloc(sizeof(ALIAS));
@@ -875,7 +875,7 @@ Ftp_alias(ARGS)
}
a=a->next;
}
-
+
strcpy(a -> name,w2);
strcpy(a -> str,makestr(w3,w4,w5,w6,NULL));
}
@@ -889,7 +889,7 @@ Ftp_mkalias(ARGS)
sprintf(new,"open \"%s\" \"%s\" \"%s\" \"%s\"",
iftp[frame].host,iftp[frame].user,
iftp[frame].pass,iftp[frame].pwd);
-
+
Ftp_alias("alias",w2,new,"","","");
}
@@ -947,31 +947,31 @@ Ftp_acd(ARGS)
static int targets=0;
static String what={0};
static ARCHIE result[ARCHIE_MAX_TARGETS];
-
+
int i, selected_target;
String tmp;
char *p;
-
+
if ( (what[0] == 0 || strcmp(w2,what) != 0) && *w2!=0 )
{
- if ((targets=FtpArchie(w2,result,ARCHIE_MAX_TARGETS))<1)
+ if ((targets=FtpArchie(w2,result,ARCHIE_MAX_TARGETS))<1)
return puts("Archie failure or target not found");
strcpy(what,w2);
}
-
+
for (i=0;i<targets;i++)
printf("%2d %s:%s\n",i,result[i].host,result[i].file);
-
+
if (strcmp(w1,"archie")==0)
return;
-
-
+
+
p = readline("Your selection? ");
if (p==NULL) return;
-
+
selected_target = atoi(p);
-
+
if ( result[selected_target].file[strlen(result[selected_target].file)-1]
== '/' )
{
@@ -989,25 +989,25 @@ Ftp_acd(ARGS)
CMDS cmds[]={
-
+
"connect", Ftp_connect, 0,
"connect <hostname> - make new ftp connection",
"open", Ftp_open, 0,
"open <hostname> <user> <pass> <directory> - login to server",
-
+
"reopen", Ftp_reopen, 1,
"Open again connection with existing frame information",
-
+
"ftp", Ftp_ftp, 0,
"ftp <hostname> - anonymously login to server",
-
+
"close", Ftp_close, 1,
"Close connection",
-
+
"quit", Ftp_quit, 0,
"Exit from uftp",
-
+
"set", Ftp_set, 0,
"Set variables: (Without args print current settings)\n\
frame <number> - select another session(frame)\n\
@@ -1028,7 +1028,7 @@ CMDS cmds[]={
"prompt", NULL, 0,
"\
-prompt is a string, which may be contains %<char>
+prompt is a string, which may be contains %<char>
or ^<char> combitanion, which have next interprets:
%H, %h - full and short remote host names
@@ -1038,8 +1038,8 @@ or ^<char> combitanion, which have next interprets:
%D - local current directory
%f - number of current frame
%p - the ftp's port number
-%t - timeout
-%T - current time
+%t - timeout
+%T - current time
%P - uftp process id
%% - character %
^<char>- control character
@@ -1114,7 +1114,7 @@ or ^<char> combitanion, which have next interprets:
"bput", Ftp_bput, 0,
"bput [<localfile>] <libftp_file> - full session procedure (See \"help etc\")",
-
+
"copy", Ftp_copy, 1,
"copy [<frame>!]file [<frame>!]file - copy file via client cache",
@@ -1123,7 +1123,7 @@ or ^<char> combitanion, which have next interprets:
"cat", Ftp_type, 1,
"cat <file> - print body of remote file to screen",
-
+
"page", Ftp_page, 1,
"page <file> - print body of remote file to screen via pager",
OpenPOWER on IntegriCloud