aboutsummaryrefslogtreecommitdiff
path: root/lib/libftp/utils/uftpcmd.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1995-12-30 19:02:48 +0000
committerPeter Wemm <peter@FreeBSD.org>1995-12-30 19:02:48 +0000
commita5b996a7ecea192e05c848269fbfb40c1e7c50ef (patch)
treeb43d0e66d9963acc026a6322b81fd219d273736b /lib/libftp/utils/uftpcmd.c
parentdf2fbf15a2e56a16c3b54b93a3369b662b6f20e5 (diff)
recording cvs-1.6 file death
Notes
Notes: svn path=/cvs2svn/branches/ATT/; revision=13122
Diffstat (limited to 'lib/libftp/utils/uftpcmd.c')
-rw-r--r--lib/libftp/utils/uftpcmd.c1202
1 files changed, 0 insertions, 1202 deletions
diff --git a/lib/libftp/utils/uftpcmd.c b/lib/libftp/utils/uftpcmd.c
deleted file mode 100644
index 2eb3cb246186..000000000000
--- a/lib/libftp/utils/uftpcmd.c
+++ /dev/null
@@ -1,1202 +0,0 @@
-#include "uftp.h"
-
-String tmp;
-
-jmp_buf connectstack;
-
-
-
-Ftp_connect_hook(FTP *ftp,int code, char *msg)
-{
- FtpLog(ftp->title,msg);
- longjmp(connectstack,1);
-
-}
-
-
-Ftp_connect(ARGS)
-{
- STATUS (*func1)(),(*func2)();
-
- if (*w2==0) w2=readline("Host:");
-
- 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";
- }
- return (*FtpInit.IO)(LINK,QUIT,msg);
- }
-
- newframe(0);
-
- func1 = FtpInit.error;
- func2 = FtpInit.IO;
-
- 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)
- w2=defaultuser;
- }
- strcpy(iftp[frame].user,w2);
- strcpy(iftp[frame].pass,w3);
- if (FtpUser(LINK,w2)==331) Ftp_pass("",w3,"","","","");
-}
-
-Ftp_pass(ARGS)
-{
- 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);
- sprintf(tmp,"Password (default %s):",pass);
- w2=getpass(tmp);
- if (*w2==0) w2=pass;
- }
-
- strcpy(iftp[frame].pass,w2);
- FtpPassword(LINK,w2);
- strcpy(iftp[frame].pwd,FtpPwd(LINK));
-}
-
-Ftp_open(ARGS)
-{
- register char *p1;
- STATUS (*err)();
-
- Ftp_connect("",w2,"","","","");
- Ftp_user("",w3,w4,"","","" );
- if (ifalias("autologin")) execute("autologin");
- if (*w5)
- Ftp_cd("cd",w5,"","","","");
-}
-
-Ftp_reopen(ARGS)
-{
- String host,user,pass,pwd;
-
- strcpy(host,iftp[frame].host);
- strcpy(user,iftp[frame].user);
- strcpy(pass,iftp[frame].pass);
- strcpy(pwd,iftp[frame].pwd);
-
- Ftp_close("","","","","","");
- Ftp_open("",host,user,pass,pwd,"");
-}
-
-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;
-}
-
-Ftp_quit(ARGS)
-{
- exit(0);
-}
-
-Ftp_mput_handler()
-{
- log("File(s) or directory not found");
- longjmp(start,1);
-}
-
-
-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));
-}
-
-Ftp_dir(ARGS)
-{
- char *cmd1;
- String cmd;
- char mode=LINK->mode;
-
- 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))
- {
- i=atoi(w2);
- }
- else
- {
- i=frame;
- }
-
- FtpQuickBye(ftp[i]);
-
- iftp[i].host[0]=0;
- iftp[i].pwd[0]=0;
- ftp[i]=NULL;
- newframe(1);
-}
-
-
-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;
- }
- return printf("%s %s\n",msg,(*var)?"enable":"disable");
-}
-
-
-Ftp_set(ARGS)
-{
- if (!strcmp("frame",w2))
- return atoi(w3)<NFRAMES?frame=atoi(w3):0;
-
- if (!strcmp("timeout",w2))
- {
- FtpSetTimeout(&FtpInit,atoi(w3));
- if (LINK!=0)
- FtpSetTimeout(LINK,atoi(w3));
- return;
- }
-
- if (!strcmp("sleep",w2))
- {
- sleeptime=atoi(w3);
- return;
- }
-
- if (!strcmp("debug",w2))
- {
- if ( *w3=='y' || *w3==0)
- {
- if (LINK!=NULL) FtpSetDebugHandler(LINK,FtpDebugDebug);
- FtpSetDebugHandler(&FtpInit,FtpDebugDebug);
- return puts("Debuging on for current and next session");
- }
- if ( *w3 == 'n')
- {
- if (LINK!=NULL) FtpSetDebugHandler(LINK,NULL);
- FtpSetDebugHandler(&FtpInit,NULL);
- return puts("Debuging off for current and next session");
- }
- }
-
- if (!strcmp("bin",w2))
- {
- if ( *w3=='y' || *w3==0)
- {
- FtpInit.mode='I';
- return puts("Binary mode enable");
- }
- if ( *w3 == 'n')
- {
- FtpInit.mode='A';
- return puts("Binary mode disable");
- }
- }
-
- if (!strcmp("try",w2))
- return SetLogicalVar(*w3,&trymode,"Try mode");
- if (!strcmp("hash",w2))
- return SetLogicalVar(*w3,&hashmode,"Hash mode");
- if (!strcmp("glass",w2))
- 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))
- return FtpSetPort(&FtpInit,atoi(w3));
- puts("Port must be number");
- fflush(stdout);
- return;
- }
-
- if (!strcmp("noopinterval",w2)||!strcmp("noop",w2))
- {
- if ( isdigit(*w3))
- return noopinterval=(time_t)atoi(w3);
- puts("Time must be number");
- fflush(stdout);
- return;
- }
-
- if (!strcmp("nooptimeout",w2))
- {
- 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))
- {
-
- printf("frime %d\n",frame);
- printf("timeout %d secs\n",FtpInit.timeout.tv_sec);
- printf("sleep time %d secs\n",sleeptime);
- printf("debug %s\n",(FtpInit.debug!=NULL)?"enable":"disable");
- printf("glass mode %s\n",glassmode?"enable":"disable");
- printf("try mode %s\n",trymode?"enable":"disable");
- printf("hash mode %s\n",hashmode?"enable":"disable");
- printf("restore mode %s\n",restmode?"enable":"disable");
- printf("automatic binary mode %s\n",(FtpInit.mode=='I')?"enable":"disable");
- printf("prompt \"%s\"\n",prompt);
- printf("port %d\n",FtpInit.port);
- printf("noop interval %d\n",noopinterval);
- printf("noop timeout %d\n",nooptimeout);
- printf("Default login name \"%s\"\n",defaultuser);
- fflush(stdout);
- return;
- }
- return puts("arg 2 unknown");
-
-}
-
-jmp_buf getstack;
-
-Ftp_get_hook(FTP *con,int code, char *msg)
-{
-
- if ( abs(code)==550 && FtpBadReply550(msg) )
- {
- FtpLog(con->title,msg);
- log("Transfer cancel");
- longjmp(getstack,2);
- }
-
- if ( code == LQUIT )
- {
- log(msg);
- log("Transfer leave after I/O error with local file");
- longjmp(getstack,2);
- }
-
-
-
- FtpLog(con->title,msg);
- FtpQuickBye(LINK);
- LINK=NULL;
-
- log("sleeping......");
- sleep(sleeptime);
- log("try again...");
-
- longjmp(getstack,1);
-
-}
-
-void Ftp_get_intr(int sig)
-{
- signal(SIGINT,intr);
- log("Transfer interupt");
- Ftp_abort();
- longjmp(getstack,3);
-}
-
-Ftp_get(ARGS)
-{
- FTP OldInit;
- 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);
-
-
-
- if (trymode)
- {
- FtpSetErrorHandler(LINK,Ftp_get_hook);
- FtpSetIOHandler(LINK,Ftp_get_hook);
- FtpInit=*LINK;
- FTPCMD(&FtpInit)=FTPCMD(&OldInit);
- FTPDATA(&FtpInit)=FTPDATA(&OldInit);
- }
-
- signal(SIGINT,Ftp_get_intr);
- FtpSetHashHandler(LINK,NULL);
-
-
- 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);
- 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
- FtpPut(LINK,w2,makefilename(w2,w3));
-
-
- log("Transfer compliete");
-
-
-done:
-
-
- FtpSetHashHandler(LINK,NULL);
- FtpSetErrorHandler(LINK,my_error);
- FtpSetIOHandler(LINK,my_error);
- FtpClearFlag(LINK,FTP_REST);
- FtpInit=OldInit;
-}
-
-Ftp_mget(ARGS)
-{
- FILE *list;
- char mode=LINK->mode;
-
- sprintf(tmp,"/tmp/uftplist-%s.XXXXXX",getpwuid(getuid())->pw_name);
- mktemp(tmp);
-
- if ( LINK->mode != 'A' ) FtpAscii(LINK);
-
- if (*w2==0)
- FtpRetr(LINK,"NLST","",tmp);
- else
- FtpRetr(LINK,"NLST %s",w2,tmp);
-
- if ( LINK->mode != mode ) FtpType(LINK,mode);
-
- if ((list=fopen(tmp,"r"))==NULL)
- return FtpLog(tmp,sys_errlist[errno]);
-
- while ( fgets(tmp,sizeof tmp,list)!=NULL)
- {
- tmp[strlen(tmp)-1]=0;
- Ftp_get("get",tmp,w3,"","","");
- }
-
- fclose(list);
-}
-
-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,"","","","");
- gl.gl_pathv++;
- }
-}
-
-
-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)
- 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)
- strcpy(lfn,p+1);
- else
- strcpy(lfn,fn);
-
- FtpQuickBye(LINK);
- LINK=FtpCreateObject();
- LINK->sock=NULL;
-
- Ftp_get("put",(*w3==0)?lfn:w2,fn,"","","");
-}
-
-Ftp_copy(ARGS)
-{
- char *p;
- int in,out;
-
- if ( !*w2 || !*w3 ) return puts("Must pass two args");
-
- if ((p=strchr(w2,'!'))!=NULL)
- {
- *p=0;
- in=atoi(w2);
- w2=p+1;
- }
- else
- in=frame;
-
- if ((p=strchr(w3,'!'))!=NULL)
- {
- *p=0;
- out=atoi(w3);
- w3=p+1;
- }
- else
- in=frame;
-
- if (in==out) return puts("Files must been from different frames");
-
- FtpCopy(ftp[in],ftp[out],w2,w3);
-}
-
-Ftp_ccopy(ARGS)
-{
- char *p;
- int in,out;
-
- if ( !*w2 || !*w3 ) return puts("Must pass two args");
-
- if ((p=strchr(w2,'!'))!=NULL)
- {
- *p=0;
- in=atoi(w2);
- w2=p+1;
- }
- else
- in=frame;
-
- if ((p=strchr(w3,'!'))!=NULL)
- {
- *p=0;
- out=atoi(w3);
- w3=p+1;
- }
- else
- in=frame;
-
- if (in==out) return puts("Files must been from different frames");
-
- FtpPassiveTransfer(ftp[in],ftp[out],w2,w3);
-}
-
-Ftp_bin(ARGS)
-{
- FtpBinary(LINK);
-}
-
-Ftp_ascii(ARGS)
-{
- FtpAscii(LINK);
-}
-
-Ftp_cd(ARGS)
-{
- FtpChdir(LINK,w2);
- strcpy(iftp[frame].pwd,FtpPwd(LINK));
- if (ifalias("autocd")) execute("autocd");
-}
-
-
-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))
- Ftp_cd("",oldinfo.pwd,"","","","");
- if (LINK->mode!=oldftp.mode)
- FtpType(LINK,oldftp.mode);
- LINK -> timeout = oldftp.timeout;
- LINK -> flags = oldftp.flags;
- FtpSetDebugHandler(LINK,oldftp.debug);
- FtpSetErrorHandler(LINK,oldftp.error);
- 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);
- signal(SIGALRM,SIG_IGN);
- signal(SIGURG,SIG_IGN);
- signal(SIGPIPE,SIG_IGN);
- signal(SIGTSTP,SIG_IGN);
- signal(SIGINT,SIG_IGN);
- signal(SIGQUIT,SIG_IGN);
- signal(SIGCHLD,SIG_IGN);
- signal(SIGIO,SIG_IGN);
-
- /* Droping output */
-
-
- sprintf(tmp,"/tmp/uftp-%s.XXXXXX",getpwuid(getuid())->pw_name);
- mktemp(tmp);
- close(0);close(1);close(2);
- open(tmp,O_RDWR|O_TRUNC|O_CREAT,0600);
- dup(0);dup(0);
-
- if (LINK!=NULL)
- {
- Ftp_dup("","","","","","");
- 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"
-
- 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,
- ftp[i]->timeout.tv_sec,ftp[i]->port);
- fflush(stdout);
- return;
-}
-
-Ftp_abort(ARGS)
-{
- time_t save;
-
- if (LINK!=NULL)
- {
- save = LINK ->timeout.tv_sec;
- LINK->timeout.tv_sec = nooptimeout;
- FtpAbort(LINK);
- LINK->timeout.tv_sec = save;
- }
-}
-
-Ftp_type(ARGS)
-{
- FtpGet(LINK,w2,"*STDOUT*");
-}
-
-
-Ftp_page(ARGS)
-{
- register char *pager;
- String out={'|',0};
-
- if ((pager=(char *)getenv("PAGER"))==NULL)
- pager="more";
-
- strcat(out,pager);
- FtpGet(LINK,w2,out);
-}
-
-
-Ftp_mkdir(ARGS)
-{
- FtpMkdir(LINK,w2);
-}
-
-Ftp_rm(ARGS)
-{
- FILE *list;
-
- sprintf(tmp,"/tmp/uftplist-%s.XXXXXX",getpwuid(getuid())->pw_name);
- mktemp(tmp);
-
- 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);
-}
-
-
-
-
-Ftp_move(ARGS)
-{
- FtpMove(LINK,w2,w3);
-}
-
-Ftp_help(ARGS)
-{
- register int i,ii;
-
- if ( !*w2 )
- {
- puts("Warrning!!!! \nPlease read general information using command \"help etc\"\n\n");
-
- for ( i = 0 ;1; i++)
- {
- for ( ii = 0 ; ii < 5 ; ii++)
- {
- if (cmds[ii+i*5].cmd==NULL) return putchar('\n');
- printf("%-16s",cmds[ii+i*5].cmd);
- }
- putchar ('\n');
- }
- }
-
-
- for ( i = 0 ; 1; i++)
- {
-
- if (cmds[i].cmd==NULL) return puts("Command not found");
- if (!strcmp(cmds[i].cmd,w2))
- break;
- }
-
- puts(cmds[i].help);
-
-}
-
-Ftp_quote(ARGS)
-{
- String new;
-
- new[0]=0;
-
- if (*w2!=0) strcpy(new,w2);
- if (*w3!=0) strcat(new," "),strcat(new,w3);
- if (*w4!=0) strcat(new," "),strcat(new,w4);
- if (*w5!=0) strcat(new," "),strcat(new,w5);
- if (*w6!=0) strcat(new," "),strcat(new,w6);
-
- FtpCommand(LINK,new,"",0,EOF);
-}
-
-Ftp_alias(ARGS)
-{
- ALIAS *a=firstalias;
-
-
- if ( *w2==0 )
- {
- while (a!=NULL)
- {
- printf("%s=%s\n",a->name,a->str);
- a=a->next;
- }
- return;
- }
-
-
- 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));
- a = a->next;
- memset(a,0,sizeof(ALIAS));
- a -> next = NULL;
- break;
- }
- a=a->next;
- }
-
- strcpy(a -> name,w2);
- strcpy(a -> str,makestr(w3,w4,w5,w6,NULL));
-}
-
-Ftp_mkalias(ARGS)
-{
- String new;
-
- if (!*w2) return puts("Arg must present\n");
-
- sprintf(new,"open \"%s\" \"%s\" \"%s\" \"%s\"",
- iftp[frame].host,iftp[frame].user,
- iftp[frame].pass,iftp[frame].pwd);
-
- Ftp_alias("alias",w2,new,"","","");
-}
-
-Ftp_unalias(ARGS)
-{
- ALIAS *cur,*prev;
-
- cur=prev=firstalias;
-
- while ( cur != NULL )
- {
- if (!strcmp(cur->name,w2))
- {
- if ( cur == firstalias )
- {
- firstalias = cur->next;
- free(cur);
- return;
- }
- prev -> next = cur -> next;
- free(cur);
- }
- prev=cur;
- cur=cur->next;
- }
-}
-
-
-Ftp_save(ARGS)
-{
- ALIAS *a=firstalias;
- String fn;
- FILE *out;
-
- if ((out=fopen (getaliasrcname(),"w"))==NULL)
- {
- perror(getaliasrcname());
- return;
- }
-
- while (a!=NULL)
- {
- fprintf(out,"alias %s '%s'\n",a->name,a->str);
- a=a->next;
- }
- fclose(out);
- chmod ( getaliasrcname(), 0600);
- puts("Aliases saved");
-}
-
-#define ARCHIE_MAX_TARGETS 20
-
-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)
- 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]
- == '/' )
- {
- Ftp_ftp("ftp",result[selected_target].host,result[selected_target].file,
- "","","");
- return;
- }
- else
- {
- sprintf(tmp,"%s:%s",
- result[selected_target].host,result[selected_target].file);
- Ftp_bget("bget",tmp,"","","","");
- }
-}
-
-
-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\
- timeout <secs> - Set network timeout\n\
- nooptimeout <secs>- Set network timeout with clearing timeout\n\
- noop <secs> - Set time interval for sending NOOP operator\n\
- to server for erased delay\n\
- sleep <secs> - Set pause beetween transfer attempt\n\
- debug <y|n> - Set debuging ftp's protocol (Default no)\n\
- try <y|n> - Set retransfer mode with broken network (Default yes)\n\
- hash <y|n> - Set hashing transfer (Default no)\n\
- restore <y|n> - Set retransfer mode (reget/reput) (Default yes!!!!)\n\
- bin <y|n> - Set automatic turn on binary mode (Default no) \n\
- glass <y|n> - Set glass mode (bad commands interprets as commands for FTPD)\n\
- prompt <string> - Set prompt (See help prompt)\n\
- port <number> - Set ftpd's port for next sessions\n\
- user <name> - Set default user name (default you name)",
-
- "prompt", NULL, 0,
- "\
-prompt is a string, which may be contains %<char>
-or ^<char> combitanion, which have next interprets:
-
-%H, %h - full and short remote host names
-%M, %m - full and short local host names
-%u - remote user's name
-%d - remote current directory
-%D - local current directory
-%f - number of current frame
-%p - the ftp's port number
-%t - timeout
-%T - current time
-%P - uftp process id
-%% - character %
-^<char>- control character
-%^ - character ^
-",
-
- "list", Ftp_list, 0,
-"List session's information",
-
- "user", Ftp_user, 1,
-"user <user> - send user's name",
-
- "pass", Ftp_pass, 1,
-"pass <pass> - send user's password",
-
- "bin", Ftp_bin, 1,
-"Set binary mode for current frame",
-
- "ascii", Ftp_ascii, 1,
-"Set ASCII mode for current frame",
-
- "cd", Ftp_cd, 1,
-"cd <directory> - change current remote directory ",
-
- "acd", Ftp_acd, 0,
-"acd <file_or_directory> - search pointed directory using archie, and setup connection to it",
-
- "lcd", Ftp_lcd, 0,
-"Change local directory",
-
- "abort", Ftp_abort, 1,
-"abort last operation",
-
- "mkdir", Ftp_mkdir, 1,
-"mkdir <dirname> - create new directory",
-
- "rm", Ftp_rm, 1,
-"rm <filename_spec> - remove file(s)",
-
- "mv", Ftp_move, 1,
-"mv <old> <new> - rename file",
-
- "dir", Ftp_dir, 1,
-"dir <argslist> ... - print list of files",
-
- "ls", Ftp_dir, 1,
-"ls <arglist> ... - print short list of files",
-
- "get", Ftp_get, 1,
-"get <remote_file> [<local_file>] - receive file from server",
-
- "mget", Ftp_mget, 1,
-"mget <remote_file(s)> [<local_directory>] - receive file(s) from server",
-
- "reget", Ftp_get, 1,
-"reget <remote_file> <local_file> - receive file restarting at end of local file",
-
- "aget", Ftp_acd, 0,
-"aget <file> - search pointed file using archie, and retrive it",
-
- "put", Ftp_get, 1,
-"put <local_file> [<remote_file>] - send server to file",
-
- "mput", Ftp_mput, 1,
-"mput <local_file(s)> - send file(s) from server",
-
- "reput", Ftp_get, 1,
-"reput <local_file> [<remote_file>] - send file restarting at end of remote file",
-
- "bget", Ftp_bget, 0,
-"bget <libftp_file> [<localfile>] - full session procedure (See \"help etc\")",
-
- "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",
-
- "ccopy", Ftp_ccopy, 1,
-"ccopy [<frame>!]file [<frame>!]file - copy file directly beetween servers",
-
- "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",
-
- "bg", Ftp_bg, 0,
-"bg <any_command> - run command(s) backgroundly (output redirect to file),\n\
-You can also add &-char to back of line without \"bg\"",
-
- "archie", Ftp_acd, 0,
-"Find file using archie service and display to screen",
-
- "dup", Ftp_dup, 1,
-"Make new analogous frame",
-
- "quote", Ftp_quote, 1,
-"quote <some_string> - send command directly to server",
-
- "help", Ftp_help, 0,
-"help <command> - print list of commands or command description",
-
- "alias", Ftp_alias, 0,
-"\
-alias aliasname <list> .... - make new alias, use $X for taking \n\
- X's argument from command string, and $* for taking\n\
- all arguments. If $<anything> on alias not present,\n\
- the arguments appending to end of command string",
-
- "unalias", Ftp_unalias, 0,
-"unalias <aliasname> - remove alias",
-
- "mkalias", Ftp_mkalias, 0,
-"make alias for create this frame, use savealias for saving it to file",
-
- "savealias", Ftp_save, 0,
- "Save aliases to file",
-
- "etc", NULL, 0,
- "\
-1. In any command you may use constructions <file and >file for\n\
- redirect input output.\n\
-\n\
-2. All local files files interprets as libftp file(s), \n\
- this support next specification:\n\
-\n\
- |string - interprets string as shell command, which must be\n\
- execute and input or output take from/to it.\n\
- \n\
- hostname:filename - interprets as file, witch must be take \n\
- using ftp protocol with anonymously access\n\
- \n\
- user@hostname:filename - interprets as file accesses via ftp\n\
- with password yourname@your_host.your_domain\n\
-\n\
- user/pass@hostname:filename - also ftp file.\n\
-\n\
- *STDIN*, *STDOUT*, *STDERR* - opened streams.\n\
-\n\
- anything - local file name.\n\
-\n\
-3. Command started with '!' passed to shell.\n
-\n\
-4. If string beetween two \" or \', its interprets as one word.\n\
-\n\
-5. Any string may be devide to few commands using ';'.",
-
-
-
- NULL
-
-};
-
-
-
-
-
-
-