summaryrefslogtreecommitdiff
path: root/ftp/ftptool
diff options
context:
space:
mode:
authorSatoshi Asami <asami@FreeBSD.org>1996-03-25 08:58:59 +0000
committerSatoshi Asami <asami@FreeBSD.org>1996-03-25 08:58:59 +0000
commit5fb563ecd192324bff6c79b1ef5ff91741b4eac3 (patch)
treea62c66ac4255c6fe2336d7949266ae3e9afa9f26 /ftp/ftptool
parentUpgrade, 1.2pl3 -> 1.4. (diff)
An xview-based graphical ftp interface.
Submitted by: Janusz Kokot <janek@gaja.ipan.lublin.pl>
Diffstat (limited to 'ftp/ftptool')
-rw-r--r--ftp/ftptool/Makefile29
-rw-r--r--ftp/ftptool/distinfo1
-rw-r--r--ftp/ftptool/files/lex.c483
-rw-r--r--ftp/ftptool/files/patch-aa154
-rw-r--r--ftp/ftptool/files/patch-ab35
-rw-r--r--ftp/ftptool/pkg-comment1
-rw-r--r--ftp/ftptool/pkg-descr8
-rw-r--r--ftp/ftptool/pkg-plist3
8 files changed, 714 insertions, 0 deletions
diff --git a/ftp/ftptool/Makefile b/ftp/ftptool/Makefile
new file mode 100644
index 000000000000..239933998142
--- /dev/null
+++ b/ftp/ftptool/Makefile
@@ -0,0 +1,29 @@
+# New ports collection makefile for: Ftptool
+# Version required: 4.6
+# Date created: 19 March 1996
+# Whom: janek@gaja.ipan.lublin.pl
+#
+# $Id$
+#
+
+DISTNAME= ftptool-4.6
+CATEGORIES+= net
+MASTER_SITES= ftp://ftp.x.org/contrib/utilities \
+ ftp://crl.dec.com/pub/X11/contrib/utilities/ \
+ ftp://ftp.icm.edu.pl/pub/X11/contrib/utilities/
+DISTFILES= Ftptool4.6.tar.gz
+
+MAINTAINER= janek@gaja.ipan.lublin.pl
+
+LIB_DEPENDS= xview\\.3\\.:${PORTSDIR}/x11/xview-lib
+
+USE_IMAKE= yes
+WRKSRC= ${WRKDIR}/Ftptool4.6
+
+# Because lex.l is broken, lex.c is taken from old FreeBSD 1.1 port
+
+post-extract:
+ cp ${FILESDIR}/lex.c ${WRKSRC}
+ rm -f ${WRKSRC}/lex.l
+
+.include <bsd.port.mk>
diff --git a/ftp/ftptool/distinfo b/ftp/ftptool/distinfo
new file mode 100644
index 000000000000..b94c67129df4
--- /dev/null
+++ b/ftp/ftptool/distinfo
@@ -0,0 +1 @@
+MD5 (Ftptool4.6.tar.gz) = 4fd26469b493d09b761bf01708e4b060
diff --git a/ftp/ftptool/files/lex.c b/ftp/ftptool/files/lex.c
new file mode 100644
index 000000000000..86c1126b57a6
--- /dev/null
+++ b/ftp/ftptool/files/lex.c
@@ -0,0 +1,483 @@
+# include "stdio.h"
+# define U(x) x
+# define NLSTATE yyprevious=YYNEWLINE
+# define BEGIN yybgin = yysvec + 1 +
+# define INITIAL 0
+# define YYLERR yysvec
+# define YYSTATE (yyestate-yysvec-1)
+# define YYOPTIM 1
+# define YYLMAX BUFSIZ
+# define output(c) putc(c,yyout)
+# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
+# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
+# define yymore() (yymorfg=1)
+# define ECHO fprintf(yyout, "%s",yytext)
+# define REJECT { nstr = yyreject(); goto yyfussy;}
+int yyleng; extern char yytext[];
+int yymorfg;
+extern char *yysptr, yysbuf[];
+int yytchar;
+FILE *yyin = {stdin}, *yyout = {stdout};
+extern int yylineno;
+struct yysvf {
+ struct yywork *yystoff;
+ struct yysvf *yyother;
+ int *yystops;};
+struct yysvf *yyestate;
+extern struct yysvf yysvec[], *yybgin;
+
+#pragma ident "@(#)lex.l 1.2 93/01/13"
+
+#undef ECHO
+#undef input
+#include "ftptool.h"
+
+#undef input
+extern char *lex_string;
+# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):*lex_string++)==10?(yylineno++,yytchar):yytchar)==0?0:yytchar)
+# define YYNEWLINE 10
+yylex(){
+int nstr; extern int yyprevious;
+while((nstr = yylook()) >= 0)
+yyfussy: switch(nstr){
+case 0:
+if(yywrap()) return(0); break;
+case 1:
+{return(' ');}
+break;
+case 2:
+ {return(PERMS);}
+break;
+case 3:
+ {return(LINKS);}
+break;
+case 4:
+ {return(USER);}
+break;
+case 5:
+ {return(GROUP);}
+break;
+case 6:
+ {return(SIZE);}
+break;
+case 7:
+ {return(MONTH);}
+break;
+case 8:
+ {return(DAY);}
+break;
+case 9:
+ {return(TIME);}
+break;
+case 10:
+ {return(NAME);}
+break;
+case 11:
+ {return(SKIP);}
+break;
+case 12:
+ {return(NONUNIX);}
+break;
+case 13:
+ {return(LOWERNAME);}
+break;
+case 14:
+ {return(yytext[0]);}
+break;
+case -1:
+break;
+default:
+fprintf(yyout,"bad switch yylook %d",nstr);
+} return(0); }
+/* end of yylex */
+
+yywrap()
+{
+ return 1;
+}
+int yyvstop[] = {
+0,
+
+14,
+0,
+
+1,
+14,
+0,
+
+1,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+14,
+0,
+
+8,
+0,
+
+10,
+0,
+
+6,
+0,
+
+11,
+0,
+
+9,
+0,
+
+4,
+0,
+
+5,
+0,
+
+3,
+0,
+
+7,
+0,
+
+2,
+0,
+
+13,
+0,
+
+12,
+0,
+0};
+# define YYTYPE char
+struct yywork { YYTYPE verify, advance; } yycrank[] = {
+0,0, 0,0, 1,3, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 1,4, 1,5,
+4,5, 4,5, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 4,5,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 0,0, 0,0, 0,0,
+0,0, 1,6, 0,0, 51,57,
+0,0, 0,0, 7,17, 16,28,
+0,0, 1,7, 12,23, 27,39,
+1,8, 33,44, 9,19, 11,21,
+14,26, 1,9, 1,10, 1,11,
+2,6, 1,12, 6,16, 8,18,
+1,13, 1,14, 1,15, 10,20,
+2,7, 11,22, 13,24, 2,8,
+13,25, 15,27, 17,29, 18,30,
+2,9, 2,10, 2,11, 19,31,
+2,12, 20,32, 21,33, 2,13,
+2,14, 2,15, 22,34, 23,35,
+24,36, 25,37, 26,38, 28,40,
+30,41, 31,42, 32,43, 34,45,
+35,46, 36,47, 37,48, 38,49,
+39,50, 40,51, 41,52, 42,53,
+43,54, 45,55, 46,56, 55,58,
+58,59, 0,0, 0,0, 0,0,
+0,0};
+struct yysvf yysvec[] = {
+0, 0, 0,
+yycrank+-1, 0, 0,
+yycrank+-20, yysvec+1, 0,
+yycrank+0, 0, yyvstop+1,
+yycrank+3, 0, yyvstop+3,
+yycrank+0, yysvec+4, yyvstop+6,
+yycrank+4, 0, yyvstop+8,
+yycrank+1, 0, yyvstop+10,
+yycrank+1, 0, yyvstop+12,
+yycrank+1, 0, yyvstop+14,
+yycrank+8, 0, yyvstop+16,
+yycrank+10, 0, yyvstop+18,
+yycrank+1, 0, yyvstop+20,
+yycrank+17, 0, yyvstop+22,
+yycrank+3, 0, yyvstop+24,
+yycrank+10, 0, yyvstop+26,
+yycrank+2, 0, 0,
+yycrank+5, 0, 0,
+yycrank+16, 0, 0,
+yycrank+21, 0, 0,
+yycrank+23, 0, 0,
+yycrank+25, 0, 0,
+yycrank+28, 0, 0,
+yycrank+25, 0, 0,
+yycrank+18, 0, 0,
+yycrank+36, 0, 0,
+yycrank+33, 0, 0,
+yycrank+2, 0, 0,
+yycrank+34, 0, 0,
+yycrank+0, 0, yyvstop+28,
+yycrank+27, 0, 0,
+yycrank+38, 0, 0,
+yycrank+30, 0, 0,
+yycrank+4, 0, 0,
+yycrank+30, 0, 0,
+yycrank+39, 0, 0,
+yycrank+48, 0, 0,
+yycrank+38, 0, 0,
+yycrank+50, 0, 0,
+yycrank+38, 0, 0,
+yycrank+52, 0, 0,
+yycrank+42, 0, 0,
+yycrank+40, 0, 0,
+yycrank+52, 0, 0,
+yycrank+0, 0, yyvstop+30,
+yycrank+47, 0, 0,
+yycrank+43, 0, 0,
+yycrank+0, 0, yyvstop+32,
+yycrank+0, 0, yyvstop+34,
+yycrank+0, 0, yyvstop+36,
+yycrank+0, 0, yyvstop+38,
+yycrank+1, 0, 0,
+yycrank+0, 0, yyvstop+40,
+yycrank+0, 0, yyvstop+42,
+yycrank+0, 0, yyvstop+44,
+yycrank+54, 0, 0,
+yycrank+0, 0, yyvstop+46,
+yycrank+0, 0, yyvstop+48,
+yycrank+40, 0, 0,
+yycrank+0, 0, yyvstop+50,
+0, 0, 0};
+struct yywork *yytop = yycrank+128;
+struct yysvf *yybgin = yysvec+1;
+char yymatch[] = {
+00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+011 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
+0};
+char yyextra[] = {
+0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,
+0};
+#ifndef lint
+static char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
+#endif
+
+int yylineno =1;
+# define YYU(x) x
+# define NLSTATE yyprevious=YYNEWLINE
+char yytext[YYLMAX];
+struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
+char yysbuf[YYLMAX];
+char *yysptr = yysbuf;
+int *yyfnd;
+extern struct yysvf *yyestate;
+int yyprevious = YYNEWLINE;
+yylook(){
+ register struct yysvf *yystate, **lsp;
+ register struct yywork *yyt;
+ struct yysvf *yyz;
+ int yych, yyfirst;
+ struct yywork *yyr;
+# ifdef LEXDEBUG
+ int debug;
+# endif
+ char *yylastch;
+ /* start off machines */
+# ifdef LEXDEBUG
+ debug = 0;
+# endif
+ yyfirst=1;
+ if (!yymorfg)
+ yylastch = yytext;
+ else {
+ yymorfg=0;
+ yylastch = yytext+yyleng;
+ }
+ for(;;){
+ lsp = yylstate;
+ yyestate = yystate = yybgin;
+ if (yyprevious==YYNEWLINE) yystate++;
+ for (;;){
+# ifdef LEXDEBUG
+ if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
+# endif
+ yyt = yystate->yystoff;
+ if(yyt == yycrank && !yyfirst){ /* may not be any transitions */
+ yyz = yystate->yyother;
+ if(yyz == 0)break;
+ if(yyz->yystoff == yycrank)break;
+ }
+ *yylastch++ = yych = input();
+ yyfirst=0;
+ tryagain:
+# ifdef LEXDEBUG
+ if(debug){
+ fprintf(yyout,"char ");
+ allprint(yych);
+ putchar('\n');
+ }
+# endif
+ yyr = yyt;
+ if ( (int)yyt > (int)yycrank){
+ yyt = yyr + yych;
+ if (yyt <= yytop && yyt->verify+yysvec == yystate){
+ if(yyt->advance+yysvec == YYLERR) /* error transitions */
+ {unput(*--yylastch);break;}
+ *lsp++ = yystate = yyt->advance+yysvec;
+ goto contin;
+ }
+ }
+# ifdef YYOPTIM
+ else if((int)yyt < (int)yycrank) { /* r < yycrank */
+ yyt = yyr = yycrank+(yycrank-yyt);
+# ifdef LEXDEBUG
+ if(debug)fprintf(yyout,"compressed state\n");
+# endif
+ yyt = yyt + yych;
+ if(yyt <= yytop && yyt->verify+yysvec == yystate){
+ if(yyt->advance+yysvec == YYLERR) /* error transitions */
+ {unput(*--yylastch);break;}
+ *lsp++ = yystate = yyt->advance+yysvec;
+ goto contin;
+ }
+ yyt = yyr + YYU(yymatch[yych]);
+# ifdef LEXDEBUG
+ if(debug){
+ fprintf(yyout,"try fall back character ");
+ allprint(YYU(yymatch[yych]));
+ putchar('\n');
+ }
+# endif
+ if(yyt <= yytop && yyt->verify+yysvec == yystate){
+ if(yyt->advance+yysvec == YYLERR) /* error transition */
+ {unput(*--yylastch);break;}
+ *lsp++ = yystate = yyt->advance+yysvec;
+ goto contin;
+ }
+ }
+ if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
+# ifdef LEXDEBUG
+ if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
+# endif
+ goto tryagain;
+ }
+# endif
+ else
+ {unput(*--yylastch);break;}
+ contin:
+# ifdef LEXDEBUG
+ if(debug){
+ fprintf(yyout,"state %d char ",yystate-yysvec-1);
+ allprint(yych);
+ putchar('\n');
+ }
+# endif
+ ;
+ }
+# ifdef LEXDEBUG
+ if(debug){
+ fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
+ allprint(yych);
+ putchar('\n');
+ }
+# endif
+ while (lsp-- > yylstate){
+ *yylastch-- = 0;
+ if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
+ yyolsp = lsp;
+ if(yyextra[*yyfnd]){ /* must backup */
+ while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
+ lsp--;
+ unput(*yylastch--);
+ }
+ }
+ yyprevious = YYU(*yylastch);
+ yylsp = lsp;
+ yyleng = yylastch-yytext+1;
+ yytext[yyleng] = 0;
+# ifdef LEXDEBUG
+ if(debug){
+ fprintf(yyout,"\nmatch ");
+ sprint(yytext);
+ fprintf(yyout," action %d\n",*yyfnd);
+ }
+# endif
+ return(*yyfnd++);
+ }
+ unput(*yylastch);
+ }
+ if (yytext[0] == 0 /* && feof(yyin) */)
+ {
+ yysptr=yysbuf;
+ return(0);
+ }
+ yyprevious = yytext[0] = input();
+ if (yyprevious>0)
+ output(yyprevious);
+ yylastch=yytext;
+# ifdef LEXDEBUG
+ if(debug)putchar('\n');
+# endif
+ }
+ }
+yyback(p, m)
+ int *p;
+{
+if (p==0) return(0);
+while (*p)
+ {
+ if (*p++ == m)
+ return(1);
+ }
+return(0);
+}
+ /* the following are only used in the lex library */
+yyinput(){
+ return(input());
+ }
+yyoutput(c)
+ int c; {
+ output(c);
+ }
+yyunput(c)
+ int c; {
+ unput(c);
+ }
diff --git a/ftp/ftptool/files/patch-aa b/ftp/ftptool/files/patch-aa
new file mode 100644
index 000000000000..394789ac7ff6
--- /dev/null
+++ b/ftp/ftptool/files/patch-aa
@@ -0,0 +1,154 @@
+diff -rc ../../Ftptool4.6.orig/batch.c ./batch.c
+*** ../../Ftptool4.6.orig/batch.c Tue Mar 19 21:11:25 1996
+--- ./batch.c Tue Mar 19 21:17:42 1996
+***************
+*** 383,389 ****
+--- 383,391 ----
+ {
+ FILE *fp;
+ int isdir;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+ int nitems, row;
+ struct batchlist *tmp;
+
+***************
+*** 420,426 ****
+--- 422,430 ----
+ mode_t mode;
+ int ch;
+ FILE *fp;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+
+ if ((fp = fopen(filename, "r")) == NULL) {
+ footer_message("%s:%s", filename, sys_errlist[errno]);
+diff -rc ../../Ftptool4.6.orig/change_dir.c ./change_dir.c
+*** ../../Ftptool4.6.orig/change_dir.c Tue Mar 19 21:11:22 1996
+--- ./change_dir.c Tue Mar 19 21:17:42 1996
+***************
+*** 82,88 ****
+--- 82,90 ----
+ #endif
+ {
+ static char cld[MAXPATHLEN + 2];
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+ struct dirlist *head = NULL;
+ int wasinactive;
+ int rval = 0;
+***************
+*** 482,488 ****
+--- 484,492 ----
+ {
+ struct dirlist *head = NULL;
+ struct dirlist *tmp;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+ int rval = 0;
+
+ if (chdir(dir) == -1) {
+***************
+*** 524,530 ****
+--- 528,536 ----
+ #endif
+ {
+ int answer;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+ #ifdef XVIEW3
+ Xv_notice notice;
+ #endif
+diff -rc ../../Ftptool4.6.orig/dofuncs.c ./dofuncs.c
+*** ../../Ftptool4.6.orig/dofuncs.c Tue Mar 19 21:11:23 1996
+--- ./dofuncs.c Tue Mar 19 21:17:41 1996
+***************
+*** 581,587 ****
+--- 581,589 ----
+ char *name = NULL;
+ struct extension_info *ext_info;
+ struct stat buf;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+
+ xfer_buttons_inactive();
+ abort_transfer = 0;
+diff -rc ../../Ftptool4.6.orig/ftp_var.h ./ftp_var.h
+*** ../../Ftptool4.6.orig/ftp_var.h Tue Mar 19 21:11:25 1996
+--- ./ftp_var.h Tue Mar 19 21:17:40 1996
+***************
+*** 35,41 ****
+--- 35,43 ----
+ */
+
+ #define strerror(e) sys_errlist[e]
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+
+ #ifdef USE_PROTOTYPES
+
+diff -rc ../../Ftptool4.6.orig/ftptool.h ./ftptool.h
+*** ../../Ftptool4.6.orig/ftptool.h Tue Mar 19 21:11:22 1996
+--- ./ftptool.h Tue Mar 19 21:17:40 1996
+***************
+*** 49,64 ****
+--- 49,70 ----
+ #ifdef AIXV3
+ #include <sys/statfs.h>
+ #else
++ #ifdef __FreeBSD__
++ #include <sys/mount.h>
++ #else
+ #include <sys/vfs.h>
+ #endif
+ #endif
+ #endif
++ #endif
+
+ #include <arpa/ftp.h>
+ #include <arpa/telnet.h>
+ #include <arpa/inet.h>
+ #include <netdb.h>
++ #ifndef __FreeBSD__
+ #include <malloc.h>
++ #endif
+ #include <dirent.h>
+ #include <xview/xview.h>
+ #include <xview/panel.h>
+diff -rc ../../Ftptool4.6.orig/tar_view.c ./tar_view.c
+*** ../../Ftptool4.6.orig/tar_view.c Tue Mar 19 21:11:24 1996
+--- ./tar_view.c Tue Mar 19 21:17:41 1996
+***************
+*** 173,179 ****
+--- 173,181 ----
+ #endif
+ {
+ char *dir;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+ int rval;
+
+ xv_set(base_window.frame,
+diff -rc ../../Ftptool4.6.orig/view_file.c ./view_file.c
+*** ../../Ftptool4.6.orig/view_file.c Tue Mar 19 21:11:23 1996
+--- ./view_file.c Tue Mar 19 21:17:41 1996
+***************
+*** 582,588 ****
+--- 582,590 ----
+ char *filename = NULL;
+ struct extension_info *tmp;
+ FILE *fp;
++ #ifndef __FreeBSD__
+ extern char *sys_errlist[];
++ #endif
+ char *typename;
+
+ /* create will also truncate, which we want to do here */
diff --git a/ftp/ftptool/files/patch-ab b/ftp/ftptool/files/patch-ab
new file mode 100644
index 000000000000..b47654869757
--- /dev/null
+++ b/ftp/ftptool/files/patch-ab
@@ -0,0 +1,35 @@
+--- ./Imakefile.org Sun Aug 28 20:05:38 1994
++++ ./Imakefile Mon Mar 25 00:47:06 1996
+@@ -21,10 +21,10 @@
+ #CC=gcc -ansi
+
+ #Uncomment the following lines for SunOS 5.x with Sun cc.
+-DEFINES= -DSYSV -DSVR4 $(XVIEW) $(SOCKDEFS) -DGLOBAL_FTPTOOLRC=\"$(FTPTOOLRC)\"
+-LIBSUNOS5= -R /usr/openwin/lib:/opt/openwin/lib:/usr/opt/openwin/lib \
+- -lsocket -lnsl
+-CC=cc -Xa
++#DEFINES= -DSYSV -DSVR4 $(XVIEW) $(SOCKDEFS) -DGLOBAL_FTPTOOLRC=\"$(FTPTOOLRC)\"
++#LIBSUNOS5= -R /usr/openwin/lib:/opt/openwin/lib:/usr/opt/openwin/lib \
++# -lsocket -lnsl
++#CC=cc -Xa
+
+ #Uncomment the following lines for SunOS 5.x with gcc
+ #Don't use -ansi, there seems to be a header file problem with that.
+@@ -45,6 +45,8 @@
+ #define ManSuffix 1
+ #endif
+
++OPENWINHOME = $(PROJECTROOT)
++
+ FTPTOOLRCDIR = $(LIBDIR)/ftptool
+ FTPTOOLRC = $(FTPTOOLRCDIR)/ftptoolrc
+ SYS_LIBRARIES = -lm
+@@ -73,7 +75,7 @@
+
+ SRCS = batch.c button_funcs.c change_dir.c create_main.c create_other.c \
+ dircache.c dirlist.c dofuncs.c dnd.c event.c ftp.c host_list.c \
+- lex.l main.c menu_funcs.c misc.c readdir.c schedule.c tar_view.c \
++ lex.c main.c menu_funcs.c misc.c readdir.c schedule.c tar_view.c \
+ transfer.c view_file.c
+
+ OBJS = batch.o button_funcs.o change_dir.o create_main.o create_other.o \
diff --git a/ftp/ftptool/pkg-comment b/ftp/ftptool/pkg-comment
new file mode 100644
index 000000000000..634e877402d6
--- /dev/null
+++ b/ftp/ftptool/pkg-comment
@@ -0,0 +1 @@
+Graphic ftp shell based on xview
diff --git a/ftp/ftptool/pkg-descr b/ftp/ftptool/pkg-descr
new file mode 100644
index 000000000000..ee30a5b16e65
--- /dev/null
+++ b/ftp/ftptool/pkg-descr
@@ -0,0 +1,8 @@
+The source for ftptool is, as far as I'm concerned freely distributable as
+long as I recieve credit for it (my bosses agree, though Sun hasn't spoken).
+
+Author: Mike Sullivan (Mike.Sullivan@Sun.COM)
+
+Ported to 386 SVR4 by Jerry Whelan <guru@stasi.bradley.edu>.
+Ported to Ultrix by Robert Evans <Robert.Evans@cm.cf.ac.uk>.
+Ported to FreeBSD by Janusz Kokot <janek@gaja.ipan.lublin.pl>
diff --git a/ftp/ftptool/pkg-plist b/ftp/ftptool/pkg-plist
new file mode 100644
index 000000000000..4edc5db2cf77
--- /dev/null
+++ b/ftp/ftptool/pkg-plist
@@ -0,0 +1,3 @@
+bin/ftptool
+lib/help/ftptool.info
+man/man1/ftptool.1.gz