$ od -c -N 50000 [Indigo]<Spruce>12>eftp>eftpsources.dm!1
0000000 377 \0 \0 P u p E F T P . d e c l \0
0000020 373 226 \0 376 E \0 \0 376 001 \0 343 ` / / P
0000040 u p E F T P . d e c l - - D
0000060 e c l a r a t i o n s f o r
0000100 E F T P p a c k a g e \r / /
0000120 C o p y r i g h t X e r o x
0000140 C o r p o r a t i o n 1 9 7 9
0000160 , 1 9 8 0 \r \r / / L a s t
0000200 m o d i f i e d S e p t e m b
0000220 e r 3 0 , 1 9 8 0 1 : 4
0000240 4 P M b y S w i n e h a r
0000260 t \r \r g e t " P u p 0 . d e c
0000300 l " \r g e t " P u p 1 . d e c
0000320 l " \r \r / / - - - - - - - - - -
0000340 - - - - - - - - - - - - - - - -
*
0000420 - - - - - - - - - - - - 376 001 \0 217
0000440 \a - - - - - - \r s t r u c t u r
0000460 e E F T P S o c : \r / / - - -
0000500 - - - - - - - - - - - - - - - -
*
0000600 - - - - - - - - - \r [ \r @ P u p
0000620 S o c \r S e q N u m w o r d \r
0000640 A b o r t P B I w o r d \t \t /
0000660 / p r o v i d e s a t e m
0000700 p o r a r y p o i n t e r t
0000720 o m o s t r e c e n t o n
0000740 e \r S o m e o n e E l s e W a i
0000760 t i n g w o r d \r T r a n s f
0001000 e r N o t S t a r t e d w o r
0001020 d \t / / t r u e w h i l e
0001040 f 376 001 \0 273 326 o r e i g n s o c
0001060 k e t n o t c o m p l e t e
0001100 d \r c u r r e n t T i m e o u t
0001120 w o r d \t / / c u r r e n t
0001140 r e t r a n s m i s s i o n
0001160 t i m e o u t \r s t a r t T i m
0001200 e w o r d \t \t / / t i m e
0001220 a t w h i c h l a s t D a
0001240 t a w a s s e n t \r ] \r m a
0001260 n i f e s t l e n E F T P S o
0001300 c = s i z e E F T P S o c
0001320 / 1 6 \r \r / / - - - - - - - - -
0001340 - - - - - - - - - - - - - - - -
*
0001440 - - - \r s t 376 001 \0 O 377 r u c t u
0001460 r e B y t e ^ 1 , 1 : b y t
0001500 e \r / / - - - - - - - - - - - -
0001520 - - - - - - - - - - - - - - - -
*
0001620 \r \r / / - - - - - - - - - - - -
0001640 - - - - - - - - - - - - - - - -
*
0001740 \r m a n i f e s t \r / / - - - -
0001760 - - - - - - - - - - - - - - - -
*
0002040 - - - - - - - - - - - 376 001 \0 257 2
0002060 - - - - - - - - - - - - - \r [ \r
0002100 / / W e l l - k n o w n s o
0002120 c k e t \r s o c k e t E F T P R
0002140 e c e i v e = 2 0 b \r \r / /
0002160 E F T P p r o t o c o l p
0002200 a c k e t t y p e s \r t y p e
0002220 E F T P D a t a = 3 0 b \r t
0002240 y p e E F T P A c k = 3 1 b
0002260 \r t y p e E F T P E n d = 3
0002300 2 b \r t y p e E F T P A b o r t
0002320 = 3 3 b \r \r / / R e t u r
0002340 n v a l u e s f r o m R e
0002360 c e i v e E F T P B l o c k a
0002400 n d S e n d E F T P B l o c k
0002420 \r E F T P E n d R e c e i v e d
0002440 = 0 \t / / t h a t i s ,
0002460 376 001 \0 305 021 a z e r o b y t
0002500 e c o u n t \r E F T P T i m e
0002520 o u t = - 1 \r E F T P A b o
0002540 r t R e c e i v e d = - 2 \r
0002560 E F T P A b o r t S e n t =
0002600 - 3 \r E F T P R e s e t R e c e
0002620 i v e d = - 4 \r E F T P N o
0002640 t F i r s t S y n c h = - 5
0002660 \r \r / / S o m e r e t r a n
0002700 s m i s s i o n t i m e o u t
0002720 s i n u n i t s o f 1 0
0002740 m i l l i s e c o n d s \r s t
0002760 a r t i n g T i m e o u t =
0003000 1 0 0 \t / / ~ 1 s e c . \r m
0003020 a x T i m e o u t = 1 0 0 0
0003040 \t / / ~ 1 0 s e c . \r m i n
0003060 T i m e o 376 001 \0 323 Y u t = 5
0003100 \t \t / / ~ 5 0 m s . \r d a l
0003120 l y T i m e o u t = 5 0 0 \t
0003140 / / ~ 5 s e c d a l l y
0003160 p e r i o d . \r l o n g B l o c
0003200 k T i m e o u t = 3 0 0 0 \t
0003220 / / ~ 3 0 s e c , f o r
0003240 a l o n g w a i t \r \r / /
0003260 A b o r t c o d e s , f o r
0003300 u s e w i t h i n a n E
0003320 F T P A b o r t p a c k e t \r
0003340 E x t e r n a l S e n d e r A b
0003360 o r t = 1 \r E x t e r n a l
0003400 R e c e i v e r A b o r t =
0003420 2 \r R e c e i v e r B u s y A b
0003440 o r t = 3 \r O u t O f S y n
0003460 c h A b o r t = 376 \0 e 374 m 4
0003500 \r M i s c A b o r t = 5 \r \r
0003520 / / N o s u c h p o r t
0003540 e r r o r c o d e , c a u s
0003560 e s c o n n e c t i o n t o
0003600 a b o r t i n r e c e i v
0003620 e r \r e c N o S u c h P o r t =
0003640 2 \r ] \r 377 \0 \0 E F T P . b c p l
0003660 \0 373 223 361 363 350 \0 \0 376 001 \0 004 327 / /
0003700 E F T P . b c p l - - t o p
0003720 l e v e l r o u t i n e a
0003740 n d u s e r i n t e r f a c
0003760 e f o r \r / / t h e E F T
0004000 P s u b s y s t e m \r / / J
0004020 u n e 1 7 , 1 9 7 6 3 :
0004040 4 4 P M a p , b a k , j f
0004060 s \r / / l a s t m o d i f i
0004100 e d o n J u n e 3 , 1 9
0004120 7 9 1 1 : 5 2 A M b y
0004140 T a f t \r / / C o p y r i g h
0004160 t X e r o x C o r p o r a t
0004200 i o n 1 9 7 9 \r \r g e t " P
0004220 u p E F T P . d e c l " / /
0004240 t h a t w i l l a l s o g
0004260 e t p u p - r e l a t e 376 001 \0
0004300 K 200 d s t u f f \r g e t " S
0004320 t r e a m s . d " \r \r e x t e r
0004340 n a l \r [ \r / / o u t g o i n g
0004360 p r o c e d u r e s \r M s g \r
0004400 \r / / i n c o m i n g p r o c
0004420 e d u r e s \r I n i t E F T P P
0004440 a c k a g e ; E F T P S e n d
0004460 F i l e ; E F T P R e c e i v
0004500 e F i l e \r F i x e d L e f t ;
0004520 G e t F i x e d ; I n i t i
0004540 a l i z e Z o n e ; A l l o c
0004560 a t e \r I n i t i a l i z e C o
0004600 n t e x t ; C a l l C o n t e
0004620 x t L i s t ; B l o c k \r I n
0004640 i t P u p L e v e l 1 ; I n i
0004660 t i a l i z e T i m e r ; E n
0004700 q u 376 001 \0 { 356 e u e ; G e t P
0004720 a r t n e r \r O p e n F i l e ;
0004740 C l o s e s ; E n d o f s ;
0004760 G e t s ; P u t s \r W s ;
0005000 W l ; W o ; W n s ; C a l
0005020 l S w a t \r S e t u p R e a d P
0005040 a r a m ; R e a d P a r a m ;
0005060 E v a l P a r a m \r \r / / o u
0005100 t g o i n g s t a t i c s \r E
0005120 F T P Z o n e ; E F T P C t x
0005140 q \r E F T P F r n P o r t ; E
0005160 F T P L c l P o r t ; E F T P
0005200 S o c k e t \r \r / / i n c o m i
0005220 n g s t a t i c s \r k e y s ;
0005240 d s p \r ] \r \r c o m p i l e i f
0005260 n o v a t h e n [ e x t
0005300 e r n a l [ 376 001 \0 005 353 I n i
0005320 t N o v a A l t o ] ] \r \r s
0005340 t a t i c \r [ \r E F T P Z o n e
0005360 ; E F T P C t x q \r E F T P F r
0005400 n P o r t ; E F T P L c l P o r
0005420 t ; E F T P S o c k e t \r \r t e
0005440 m p f i l e ; t e m p s t r i
0005460 n g \r D e b u g S w i t c h =
0005500 f a l s e \r D e b u g C o n f
0005520 i r m S w i t c h = f a l s
0005540 e \r c l i B o d y ; c l i S w
0005560 i t c h e s \r ] \r \r m a n
0005600 i f e s t \r [ \r c l i S t a c k
0005620 S i z e = 3 0 0 0 \r k b d S
0005640 t a c k S i z e = 3 0 0 0 \r
0005660 ] \r \r \r / / - - - - - - - - - -
0005700 - - - - - - - - - - - - 376 001 \0 313
0005720 j - - - - - - - - - - - - - - -
0005740 - - - - - - - - - - - - - - - -
0005760 - - - - - - - - - - - - \r l e t
0006000 E F T P ( ) b e \r / / - - -
0006020 - - - - - - - - - - - - - - - -
*
0006100 - - - - - - - - - - - - - - \r [
0006120 \r l e t v e r s i o n T e x t
0006140 = " E F T P o f J u n e
0006160 3 , 1 9 7 9 " \r \r / / F o r
0006200 t h e t i m e b e i n g ,
0006220 a l l o c a t e e v e r y t
0006240 h i n g h e r e \r l e t f r
0006260 n P o r t = v e c l e n P
0006300 o r t ; E F T P F r n P o r t
0006320 376 001 \0 034 317 = f r n P o r t \r
0006340 l e t l c l P o r t = v e
0006360 c l e n P o r t ; E F T P L
0006400 c l P o r t = l c l P o r t
0006420 \r l e t s o c k e t = v e
0006440 c l e n E F T P S o c ; E F
0006460 T P S o c k e t = s o c k e
0006500 t \r l e t t e m p S t r i n g
0006520 = v e c 1 2 8 ; t e m p
0006540 s t r i n g = t e m p S t r
0006560 i n g \r \r c o m p i l e i f a
0006600 l t o t h e n [ M s g ( "
0006620 I n i t i a l i z e z o n e s
0006640 " ) ] \r l e t z o n e S i z
0006660 e = F i x e d L e f t ( ) -
0006700 1 5 0 0 / / S e t u p
0006720 a z o n e 376 001 \0 021 312 , f o r
0006740 l a t e r u s e \r i f z o
0006760 n e S i z e l s 0 t h e n
0007000 z o n e S i z e = # 7 7 7
0007020 7 7 / / b i g g e s t A l
0007040 l o c c a n h a n d l e \r E
0007060 F T P Z o n e = G e t F i x
0007100 e d ( z o n e S i z e ) \r I n i
0007120 t i a l i z e Z o n e ( E F T P
0007140 Z o n e , z o n e S i z e ) \r
0007160 c o m p i l e i f n o v a t
0007200 h e n [ I n i t N o v a A l
0007220 t o ( E F T P Z o n e ) ] \r W
0007240 l ( v e r s i o n T e x t ) \r /
0007260 / W s ( " [ " ) ; W n s ( d
0007300 s p , z o n e S i z e , 0 ,
0007320 1 0 ) ; W s ( " 376 001 \0 4 \n
0007340 - ( " ) \r / / W n s ( d s p
0007360 , z o n e S i z e , 0 , 1
0007400 0 ) ; W s ( " + 1 ) = " )
0007420 \r / / W n s ( d s p , F i x
0007440 e d L e f t ( ) , 0 , 1 0 )
0007460 \r / / W l ( " ] " ) \r \r / /
0007500 C h e c k f o r a n y g l
0007520 o b a l f l a g s . . . W
0007540 e w i l l s e t i t u p
0007560 h e r e , o t h e r s \r / /
0007600 c a n r e a d m o r e o
0007620 f i t l a t e r \r l e t c
0007640 l i = f a l s e \r l e t b
0007660 o d y = v e c 2 5 6 ; c
0007700 l i B o d y = b o d y \r l e
0007720 t s w i t c h e s = v e c
0007740 376 001 \0 001 225 1 2 8 ; c l i S w
0007760 i t c h e s = s w i t c h e
0010000 s \r \r / / R e a d f r o m
0010020 t h e d e f a u l t , f i l
0010040 e C O M . C M \r S e t u p R e
0010060 a d P a r a m ( c l i B o d y ,
0010100 c l i S w i t c h e s , 0 ,
0010120 0 ) \r / / S c a n t h e g
0010140 l o b a l s w i t c h e s \r f
0010160 o r i = 1 t o c l i S
0010200 w i t c h e s ! 0 s w i t c h
0010220 o n c l i S w i t c h e s ! i
0010240 i n t o \r [ G l o b a l
0010260 S w i t c h B l o c k \r c
0010300 a s e $ d : c a s e $ D :
0010320 \r [ \r D
0010340 e b u g S 376 001 \0 310 d w i t c h
0010360 = t r u e \r e n d
0010400 c a s e \r ] \r
0010420 c a s e $ c : c a s e $ C
0010440 : \r [ \r
0010460 D e b u g C o n f i r m S w i t
0010500 c h = t r u e \r
0010520 D e b u g S w i t c h = t r
0010540 u e \r e n d c a s e
0010560 \r ] \r c a s e
0010600 $ s : c a s e $ S : \r
0010620 [ \r C a l l
0010640 S w a t ( " S c a n n i n g g
0010660 l o b a l s w i t c h e s " )
0010700 \r e n d c a s e \r
0010720 ] \r d e f a u l
0010740 t : \r [ 376 001 \0 5 x \r
0010760 W s ( " U n k n o w
0011000 n g l o b a l s w i t c h :
0011020 " ) \r P u t s ( d
0011040 s p , c l i S w i t c h e s !
0011060 i ) \r W l ( " " ) \r
0011100 ] \r ] G l o b
0011120 a l S w i t c h B l o c k \r \r /
0011140 / S e e i f t h e r e i
0011160 s a n y t h i n g e l s e
0011200 l e f t i n C O M . C M ,
0011220 g e t u n p a c k e d s t r
0011240 i n g \r R e a d P a r a m ( 0 ,
0011260 0 , 0 , 0 , t r u e )
0011300 / / p u t s f i l e n a
0011320 m e i n t o c l i B o d y \r
0011340 i f c l i B o d y ! 0 n e 376
0011360 001 \0 6 331 0 t h e n c l i
0011400 = t r u e \r \r / / M a j o r
0011420 t a s k h e r e i s t o
0011440 i n i t i a l i z e s t o r
0011460 a g e a n d c o n t e x t
0011500 l i s t , \r / / s t a r t l
0011520 e v e l 1 r u n n i n g , d
0011540 e c i d e w h a t o t h e r
0011560 p r o c e s s e s ( c o n t
0011600 e x t s ) \r / / t o e n a b
0011620 l e , a n d t h e n l e t
0011640 t h e m a l l r u n \r \r M
0011660 s g ( " I n i t i a l i z e c
0011700 o n t e x t s " ) \r E F T P C t
0011720 x q = A l l o c a t e ( E F
0011740 T P Z o n e , 2 ) / / M
0011760 a i n 376 001 \0 216 316 c o n t e x t
0012000 q u e u e \r E F T P C t x q !
0012020 0 = 0 \r \r M s g ( " I n i t
0012040 i a l i z e p u p s t u f f
0012060 " ) \r / / I n i t i a l i z a t
0012100 i o n s \r I n i t P u p L e v e
0012120 l 1 ( E F T P Z o n e , E F T
0012140 P C t x q , 1 0 ) / / u
0012160 p t o 1 0 b u f f e r s \r
0012200 I n i t E F T P P a c k a g e (
0012220 ) \r \r \r / / D e c i d e i f
0012240 w e s h o u l d s c h e d
0012260 u l e t h e i n t e r a c t
0012300 i v e i n p u t h a n d l e
0012320 r , \r / / o r t h e c o m
0012340 m a n d l i n e i n t e r p
0012360 r e t e r \r \r t e 376 001 \0 213 , s t
0012400 c l i \r i f s o
0012420 I n i t E F T P C l i ( ) \r
0012440 i f n o t I n i t E F T P K
0012460 b d ( ) \r \r M s g ( " S t a r t
0012500 c o n t e x t m e c h a n i
0012520 s m " ) \r / / N o w p a s s
0012540 o f f c o n t r o l , a n d
0012560 n e v e r r e t u r n h e
0012600 r e \r C a l l C o n t e x t L i
0012620 s t ( E F T P C t x q ! 0 ) r
0012640 e p e a t / / l o o p
0012660 f o r e v e r \r ] \r \r \r / / T
0012700 h e s e n e x t t w o r o
0012720 u t i n e s r u n i n t h
0012740 e c o n t e x t ( a n d s
0012760 t a c k ) o f \r / / E F 376 001
0013000 \0 4 207 T P ( ) , b u t m e r
0013020 e l y e s t a b l i s h a n
0013040 d e n q u e u e a c o n t
0013060 e x t i n w h i c h \r / /
0013100 t h e r e a l r o u t i n e
0013120 s c a n r u n . A c t u
0013140 a l r o u t i n e s c a n
0013160 l i v e e l s e w h e r e . \r
0013200 / / - - - - - - - - - - - - - -
0013220 - - - - - - - - - - - - - - - -
*
0013300 - - - \r a n d I n i t E F T P
0013320 C l i ( ) b e \r / / - - - - -
0013340 - - - - - - - - - - - - - - - -
*
0013400 - - - 376 001 \0 ^ 366 - - - - - - - -
0013420 - - - - - - - - - - - - - - - -
0013440 - \r E n q u e u e ( E F T P C t
0013460 x q , I n i t i a l i z e C o
0013500 n t e x t ( A l l o c a t e ( E
0013520 F T P Z o n e , c l i S t a c
0013540 k S i z e ) , \r c l i S t a c
0013560 k S i z e , E F T P C l i ) )
0013600 \r \r \r / / - - - - - - - - - - -
0013620 - - - - - - - - - - - - - - - -
*
0013700 - - - - - - \r a n d I n i t E
0013720 F T P K b d ( ) b e \r / / - -
0013740 - - - - - - - - - - - - - - - -
*
0014000 - - - - - - - - 376 001 \0 273 022 - - -
0014020 - - - - - - - - - - - - - - - -
0014040 - - - - \r E n q u e u e ( E F T
0014060 P C t x q , I n i t i a l i z
0014100 e C o n t e x t ( A l l o c a t
0014120 e ( E F T P Z o n e , k b d S
0014140 t a c k S i z e ) , \r k b d S
0014160 t a c k S i z e , E F T P K b
0014200 d ) ) \r \r \r / / - - - - - - - -
0014220 - - - - - - - - - - - - - - - -
*
0014300 - - - - - - - - - \r a n d M s
0014320 g ( s t r ) b e \r / / - - - -
0014340 - - - - - - - - - - - - - - - -
*
0014400 - - - - - - - - - - - - - 376 001 \0
0014420 262 \r - - - - - - - - - - - - - -
0014440 - - \r [ \r u n l e s s D e b u
0014460 g S w i t c h r e t u r n \r W
0014500 s ( s t r ) \r t e s t D e b u
0014520 g C o n f i r m S w i t c h
0014540 \r i f s o [ W l ( " [
0014560 O K ? ? ] " ) ; G e t s ( k e
0014600 y s ) ] \r i f n o t W
0014620 l ( " " ) \r ] \r \r \r / / O n e
0014640 o f t h e s e r o u t i n
0014660 e s w i l l h a v e b e e
0014700 n p l a c e d o n t h e
0014720 c o n t e x t l i s t , \r / /
0014740 a n d w i l l t h e r e f
0014760 o r e b e r u n n i n g \r /
0015000 / - - - - - - - - - - - - - - -
0015020 - - 376 001 \0 G 350 - - - - - - - - -
0015040 - - - - - - - - - - - - - - - -
*
0015100 - - - - - - - \r a n d E F T P
0015120 C l i ( ) b e \r / / - - - - -
0015140 - - - - - - - - - - - - - - - -
*
0015220 - - - - - - - - - - - - \r [ \r /
0015240 / P i c k o f f t h e r
0015260 e l e v e n t i n f o r m a t
0015300 i o n f r o m t h e f i l
0015320 e C O M . C M \r / / f o r m
0015340 a t i s : e f t p < f i l
0015360 e n a m e > t o / f r o m <
0015400 m a c h i n e n a m e o r
0015420 n u m b e r > 376 001 \0 \v 364 \r / /
0015440 I f w e g e t h e r e ,
0015460 t h e f i l e n a m e i s
0015500 a l r e a d y i n c l i B
0015520 o d y \r R e a d P a r a m ( 0 ,
0015540 0 , t e m p s t r i n g )
0015560 / / g e t t h e d i r e
0015600 c t i o n \r s w i t c h o n t
0015620 e m p s t r i n g ! 1 i n t o
0015640 \r [ C l i C m d \r c
0015660 a s e $ t : c a s e $ T :
0015700 \r [ \r t
0015720 e m p f i l e = \r
0015740 E v a l P a r a m ( c l i
0015760 B o d y , " I " , " F i l e
0016000 d o e s n o t e x i s t ,
0016020 t r y a g a i n : " 376 001 \0 \a
0016040 257 ) \r u n l e s s
0016060 G e t P a r t n e r ( R e a d P
0016100 a r a m ( " P " ) , d s p ,
0016120 E F T P F r n P o r t , \r
0016140 0 , s o c k e t E F T
0016160 P R e c e i v e ) d o \r
0016200 [ \r
0016220 C l i E r r o r ( ) \r
0016240 e n d c a s e \r
0016260 ] \r R e
0016300 p o r t R e s u l t ( E F T P S
0016320 e n d F i l e ( t e m p f i l e
0016340 , E F T P F r n P o r t ) ) \r
0016360 C l o s e s ( t e m
0016400 p f i l e ) \r e n d
0016420 c a s e \r ] \r
0016440 c 376 001 \0 $ \a a s e $ f : c a
0016460 s e $ F : \r [ \r
0016500 t e m p f i l e = E
0016520 v a l P a r a m ( c l i B o d y
0016540 , " O " ) \r u n l
0016560 e s s G e t P a r t n e r ( R
0016600 e a d P a r a m ( " P " ) , d
0016620 s p , E F T P F r n P o r t )
0016640 d o \r [ \r
0016660 C l i E r r o r
0016700 ( ) \r e n d c
0016720 a s e \r ] \r
0016740 R e p o r t R e s u l
0016760 t ( E F T P R e c e i v e F i l
0017000 e ( t e m p f i l e , E F T P
0017020 F r n P o r t ) ) \r
0017040 C l o s e s 376 001 \0 b Z ( t e m p
0017060 f i l e ) \r e n d c
0017100 a s e \r ] \r d
0017120 e f a u l t : \r [ \r
0017140 C l i E r r o r ( )
0017160 \r e n d c a s e \r
0017200 ] \r ] C l i C m
0017220 d \r f i n i s h / / w e
0017240 d o n o t h a n g a r o
0017260 u n d . . . . . \r ] \r \r / / - -
0017300 - - - - - - - - - - - - - - - -
*
0017360 - - - - - - - - - - - - - - - \r
0017400 a n d C l i E r r o r ( ) b
0017420 e \r / / - - - - - - - - - - - -
0017440 - - - - - - - - - - - 376 001 \0 ? 255
0017460 - - - - - - - - - - - - - - - -
*
0017520 - - - - - - - - - - \r [ \r W l (
0017540 " T a k e c a r e , t h e
0017560 s y n t a x f o r c o m m a
0017600 n d l i n e s h o u l d b
0017620 e : " ) \r W s ( " e f t p < f
0017640 i l e n a m e > t o / f r o m
0017660 < m a c h i n e n a m e o
0017700 r n u m b e r > " ) \r ] \r \r /
0017720 / - - - - - - - - - - - - - - -
0017740 - - - - - - - - - - - - - - - -
*
0020020 - - \r a n d E F T P K b d ( )
0020040 b e \r / / - - - - - - - - - -
0020060 376 001 \0 s 220 - - - - - - - - - - -
0020100 - - - - - - - - - - - - - - - -
*
0020140 - - - - - - - - - - - - \r [ \r [
0020160 C m d L o o p \r l e t a b o r
0020200 t C m d = f a l s e \r M s g
0020220 ( " G e t c o m m a n d f r
0020240 o m k b d " ) \r W s ( " - > "
0020260 ) \r l e t c m d = G e t K
0020300 e y s ( ) \r s w i t c h o n c
0020320 m d i n t o \r [ C o m m
0020340 a n d B l o c k \r c a s e
0020360 $ S : c a s e $ s : \r
0020400 [ \r W s ( "
0020420 S e n d f i l e - - n a m
0020440 e o r n u m b e r o f r
0020460 e m o t e 376 001 \0 367 246 h o s t :
0020500 " ) \r [ \r
0020520 u n l e s s G
0020540 e t S t r i n g ( t e m p s t r
0020560 i n g ) t h e n \r
0020600 [ \r
0020620 a b o r t C m d =
0020640 t r u e \r
0020660 b r e a k \r
0020700 ] \r i f
0020720 t e m p s t r i n g > > S t r
0020740 i n g . l e n g t h e q 0
0020760 t h e n l o o p \r
0021000 i f G e t P a r t n e r
0021020 ( t e m p s t r i n g , d s p
0021040 , E F T P F r n P o r t , \r
0021060 0 376 001 \0 c 320 ,
0021100 s o c k e t E F T P R e c e i
0021120 v e ) t h e n b r e a k \r
0021140 W s ( " . . . t
0021160 r y a g a i n : " ) \r
0021200 ] r e p e a t \r
0021220 i f a b o r t C m d
0021240 t h e n l o o p \r
0021260 W s ( " l o c a l f i l e
0021300 n a m e : " ) \r
0021320 [ \r u n l
0021340 e s s G e t S t r i n g ( t e
0021360 m p s t r i n g ) t h e n \r
0021400 [ \r
0021420 a b o r t C
0021440 m d = t r u e \r
0021460 b r e a k \r 376
0021500 001 \0 c 233 ] \r
0021520 t e m p f i l e
0021540 = O p e n F i l e ( t e m p
0021560 s t r i n g , k s T y p e R e
0021600 a d O n l y , c h a r I t e m
0021620 ) \r i f t
0021640 e m p f i l e n e 0 t h e
0021660 n b r e a k \r
0021700 W s ( " F i l e " ) ; W s
0021720 ( t e m p s t r i n g ) \r
0021740 W s ( " d o e s
0021760 n o t e x i s t , t r y a
0022000 g a i n : " ) \r
0022020 ] r e p e a t \r
0022040 i f a b o r t C m d t h e
0022060 n l o o p \r R e p
0022100 o r t R 376 001 \0 323 276 e s u l t ( E
0022120 F T P S e n d F i l e ( t e m p
0022140 f i l e , E F T P F r n P o r
0022160 t ) ) \r C l o s e s
0022200 ( t e m p f i l e ) \r
0022220 e n d c a s e \r ]
0022240 \r c a s e $ R : c a s
0022260 e $ r : \r [ \r
0022300 W s ( " R e c e i v e
0022320 a f i l e - - n a m e o
0022340 r n u m b e r o f r e m o
0022360 t e h o s t : " ) \r
0022400 [ \r
0022420 u n l e s s G e t S t r i n g
0022440 ( t e m p s t r i n g ) t h e
0022460 n \r [
0022500 \r 376 001 \0 ] 351
0022520 a b o r t C m d = t r u
0022540 e \r b r
0022560 e a k \r
0022600 ] \r i f t e
0022620 m p s t r i n g > > S t r i n g
0022640 . l e n g t h e q 0 t h e
0022660 n l o o p \r
0022700 i f G e t P a r t n e r ( t e
0022720 m p s t r i n g , d s p , E
0022740 F T P F r n P o r t ) t h e n
0022760 b r e a k \r
0023000 W s ( " . . . t r y a g a i n
0023020 : " ) \r ]
0023040 r e p e a t \r i f
0023060 a b o r t C m d t h e n l o
0023100 o p \r [ \r 376 001
0023120 \0 j \b W s ( "
0023140 l o c a l f i l e n a m e :
0023160 " ) \r u n l
0023200 e s s G e t S t r i n g ( t e
0023220 m p s t r i n g ) t h e n \r
0023240 [ \r
0023260 a b o r t C
0023300 m d = t r u e \r
0023320 b r e a k \r
0023340 ] \r
0023360 t e m p f i l e = O p
0023400 e n F i l e ( t e m p s t r i n
0023420 g , k s T y p e R e a d O n l
0023440 y , c h a r I t e m ) \r
0023460 i f t e m p f i l
0023500 e n e 0 t h e n \r
0023520 376 001 \0 } 246 [ \r
0023540 / / F i l
0023560 e o p e n e d , i t a l r
0023600 e a d y e x i s t s \r
0023620 C l o s e s ( t
0023640 e m p f i l e ) \r
0023660 u n l e s s C o n f
0023700 i r m ( " F i l e e x i s t s
0023720 , O K t o O v e r w r i t
0023740 e ? " ) l o o p \r
0023760 ] \r
0024000 / / N o w o p e n a
0024020 n e w f i l e , f o r w r
0024040 i t i n g \r t
0024060 e m p f i l e = O p e n F i
0024100 l e ( t e m p s t r i n g , k
0024120 s T y p e W r i 376 001 \0 ~ [ t e O
0024140 n l y , c h a r I t e m ) \r
0024160 b r e a k \r
0024200 ] r e p e a t \r
0024220 i f a b o r t C m
0024240 d t h e n l o o p \r \r
0024260 R e p o r t R e s u l t (
0024300 E F T P R e c e i v e F i l e (
0024320 t e m p f i l e , E F T P F r
0024340 n P o r t ) ) \r C l
0024360 o s e s ( t e m p f i l e ) \r
0024400 e n d c a s e \r
0024420 ] \r c a s e # 1 5
0024440 : / / C R i s a
0024460 n o - o p \r [ \r
0024500 W l ( " " ) \r
0024520 e n d c a s e \r 376 001 \0
0024540 214 337 ] \r c a s e $
0024560 Q : c a s e $ q : \r
0024600 [ \r W s ( " Q u
0024620 i t . . . " ) \r i f
0024640 C o n f i r m ( " C o n f i r
0024660 m ? " ) t h e n f i n i s h
0024700 \r e n d c a s e
0024720 / / p r o g r a m t e r m i
0024740 n a t e s h e r e ! ! ! ! \r
0024760 ] \r c a s e $
0025000 ? : \r [ \r
0025020 W l ( " S e n d , R e c e
0025040 i v e , Q u i t . . . " ) \r
0025060 e n d c a s e \r
0025100 ] \r d e f a u l t :
0025120 \r [ \r P
0025140 u t 376 001 \0 0 240 s ( d s p , c m d
0025160 ) \r W l ( " ? ? ?
0025200 S e n d , R e c e i v e ,
0025220 Q u i t . . . " ) \r
0025240 e n d c a s e \r ] \r
0025260 ] C o m m a n d B l o c k
0025300 \r B l o c k ( ) \r ] C m d L o o
0025320 p r e p e a t
0025340 / / w i l l r u n u n t i
0025360 l a q u i t \r ] \r \r \r / / -
0025400 - - - - - - - - - - - - - - - -
*
0025500 \r a n d R e p o r t R e s u l
0025520 t ( b o o l e a n ) b e \r / /
0025540 - - - - - - - 376 001 \0 ) / - - - -
0025560 - - - - - - - - - - - - - - - -
*
0025640 - - - - - - \r [ \r t e s t b o
0025660 o l e a n \r i f s o W l
0025700 ( " . . . a l l d o n e " ) \r
0025720 i f n o t W l ( " . . .
0025740 f i l e t r a n s f e r f a
0025760 i l e d " ) \r ] \r \r \r / / - - -
0026000 - - - - - - - - - - - - - - - -
*
0026060 - - - - - - - - - - - - - - \r a
0026100 n d G e t K e y s ( ) = v
0026120 a l o f \r / / - - - - - - - - -
0026140 - - - - - - - - - - - - 376 001 \0 &
0026160 224 - - - - - - - - - - - - - - -
0026200 - - - - - - - - - - - - - - - -
0026220 - - - - - - - - - - - - - \r [ \r
0026240 w h i l e E n d o f s ( k e y
0026260 s ) d o B l o c k ( ) \r r e
0026300 s u l t i s G e t s ( k e y s
0026320 ) \r ] \r \r \r / / - - - - - - - -
0026340 - - - - - - - - - - - - - - - -
*
0026420 - - - - - - - - - \r a n d G e
0026440 t S t r i n g ( s t r ) = v
0026460 a l o f \r / / - - - - - - - - -
0026500 - - - - - - - - - - - - - - - -
*
0026560 - 376 001 \0 220 304 - - - - - - - \r [ \r
0026600 / / C a l l e r m u s t p
0026620 r o v i d e t h e p l a c e
0026640 t o p u t t h e s t r i
0026660 n g \r / / R e t u r n s f a
0026700 l s e i f D E L i s h i
0026720 t . U s e s d e f a u l t
0026740 s t r e a m s d s p a n d
0026760 k e y s \r l e t d e l e t i
0027000 n g F l a g , c h a r = f
0027020 a l s e , 0 \r s t r > > S t r
0027040 i n g . l e n g t h = 0 \r \r
0027060 [ c h a r L o o p \r
0027100 i f s t r > > S t r i n g . l
0027120 e n g t h e q 2 5 5 t h e
0027140 n r e s u l t i s t r u e \r
0027160 c h a 376 001 \0 261 W r = G
0027200 e t K e y s ( ) / / t h i
0027220 s w i l l b l o c k f o r
0027240 a b i t \r s w i t c h
0027260 o n c h a r i n t o \r
0027300 [ C h a r B l o c k \r
0027320 c a s e # 1 5 :
0027340 / / C R \r
0027360 [ \r W l ( "
0027400 " ) \r r e s u
0027420 l t i s t r u e \r
0027440 ] \r c a s e
0027460 # 2 1 : / / ^ Q ,
0027500 r e s e t t h e l i n e \r
0027520 [ \r
0027540 W l ( " x x x " ) \r
0027560 d e l e 376 001 \0 Z 307
0027600 t i n g F l a g = f a l s e \r
0027620 c h a r = 0 \r
0027640 s t r > > S t r
0027660 i n g . l e n g t h = 0 \r
0027700 e n d c a s e \r
0027720 ] \r c
0027740 a s e # 1 0 : c a s e # 1
0027760 : / / B S o r ^
0030000 A \r [ \r
0030020 i f s t r > > S t
0030040 r i n g . l e n g t h e q 0
0030060 t h e n e n d c a s e \r
0030100 u n l e s s d e
0030120 l e t i n g F l a g t h e n \r
0030140 [ \r
0030160 d e l e t i
0030200 376 001 \0 371 263 n g F l a g = t r u e
0030220 \r W s (
0030240 " [ " ) \r
0030260 ] \r P u t s
0030300 ( d s p , s t r > > S t r i n g
0030320 . c h a r ^ ( s t r > > S t r i
0030340 n g . l e n g t h ) ) \r
0030360 s t r > > S t r i n g
0030400 . l e n g t h = s t r > > S
0030420 t r i n g . l e n g t h - 1
0030440 \r e n d c a s
0030460 e \r ] \r
0030500 c a s e # 2 2 :
0030520 / / ^ R , r e t y p e t
0030540 h e l i n e \r
0030560 [ \r W l ( "
0030600 " ) ; W 376 001 \0 200 Z s ( s t r )
0030620 ; d e l e t i n g F l a g = f
0030640 a l s e \r e n
0030660 d c a s e \r ]
0030700 \r c a s e # 1 7 7
0030720 : / / D E L , d e l e t e
0030740 t h e l i n e a n d r e
0030760 t u r n f a l s e \r
0031000 [ \r W
0031020 l ( " X X X " ) \r
0031040 r e s u l t i s f a l s
0031060 e \r ] \r
0031100 d e f a u l t :
0031120 \r [ \r
0031140 i f d e l e t i n
0031160 g F l a g t h e n \r
0031200 [ \r 376 001 \0 j 215
0031220 d e l e t i
0031240 n g F l a g = f a l s e \r
0031260 W s ( " ] " )
0031300 \r ] \r
0031320 s t r > > S t r
0031340 i n g . l e n g t h = s t r
0031360 > > S t r i n g . l e n g t h
0031400 + 1 \r s t r
0031420 > > S t r i n g . c h a r ^ ( s
0031440 t r > > S t r i n g . l e n g t
0031460 h ) = c h a r \r
0031500 P u t s ( d s p , c h a
0031520 r ) \r ] \r
0031540 ] C h a r B l o c k \r
0031560 ] c h a r L o o p r e p
0031600 e a t \r \r ] \r \r \r / / - - - - 376
0031620 001 \0 030 006 - - - - - - - - - - - -
0031640 - - - - - - - - - - - - - - - -
*
0031720 - \r a n d C o n f i r m ( c o
0031740 n f i r m S t r i n g ) = v
0031760 a l o f \r / / - - - - - - - - -
0032000 - - - - - - - - - - - - - - - -
*
0032060 - - - - - - - - \r [ \r / / A
0032100 g e n e r a l g u y , f o r
0032120 c o n f i r m i n g s o m e
0032140 a c t i o n \r P u t s ( d s p
0032160 , $ [ ) ; W s ( c o n f i r m
0032200 S t r i n g ) ; P u t s ( d s
0032220 p , $ ] 376 \0 314 & 273 ) \r s w i t c
0032240 h o n G e t K e y s ( ) i n
0032260 t o \r [ \r c a s e
0032300 $ y : c a s e $ Y : c a s
0032320 e $ * N : \r [ W
0032340 l ( " Y e s . " ) ; r e s u
0032360 l t i s t r u e ] \r c
0032400 a s e $ n : c a s e $ N :
0032420 c a s e $ * 1 7 7 : \r
0032440 [ W l ( " N o . " ) ;
0032460 r e s u l t i s f a l s e
0032500 ] \r d e f a u l t : W l
0032520 ( " ? " ) \r ] r e p e
0032540 a t \r ] \r 377 \0 \0 E F T P F i l e
0032560 . b c p l \0 373 223 361 363 350 \0 \0 376 001 \0
0032600 c H / / E F T P F i l e . b c
0032620 p l \r / / J u n e 1 7 , 1
0032640 9 7 6 1 0 : 5 7 P M b
0032660 k , j f s \r / / l a s t m
0032700 o d i f i e d o n J u n e
0032720 3 , 1 9 7 9 1 1 : 4 7 A
0032740 M b y T a f t \r / / C o p
0032760 y r i g h t X e r o x C o r
0033000 p o r a t i o n 1 9 7 9 \r \r g
0033020 e t " P u p E F T P . d e c l
0033040 " / / t h a t w i l l
0033060 a l s o g e t p u p - r e l
0033100 a t e d s t u f f \r \r e x t e
0033120 r n a l \r [ \r / / i n c o m i n
0033140 g p r o c e d u r e s \r I n i
0033160 t E F T P P a c k a g e ; O p
0033200 e n 376 001 \0 342 023 E F T P S o c ;
0033220 C l o s e E F T P S o c \r R e c
0033240 e i v e E F T P B l o c k ; S
0033260 e n d E F T P B l o c k ; S e
0033300 n d E F T P E n d ; G e t E F
0033320 T P A b o r t \r E n d o f s ;
0033340 R e a d B l o c k ; W r i t e
0033360 B l o c k ; P u t s ; F i l
0033400 e P o s \r W s ; W o ; W n s
0033420 ; W l ; Z e r o \r \r / / i
0033440 n c o m i n g s t a t i c s ,
0033460 f o r c o m m o n u s e ,
0033500 s p a c e a l l o c a t e d
0033520 e l s e w h e r e \r E F T P L
0033540 c l P o r t ; E F T P F r n P
0033560 o r t ; E F T P S o c k e t ;
0033600 d s p \r \r / 376 001 \0 332 R / o u t
0033620 g o i n g p r o c e d u r e s
0033640 \r E F T P S e n d F i l e ; E
0033660 F T P R e c e i v e F i l e \r ]
0033700 \r \r s t a t i c \r [ \r / / f o
0033720 r u s e i n t h i s p r
0033740 o g r a m , a l l o c a t e d
0033760 i n t h i s m o d u l e \r
0034000 b y t e c o u n t ; t o t a l
0034020 b y t e c o u n t \r p a c k e t
0034040 c o u n t ; b l o c k c o u n
0034060 t \r ] \r \r / / T h e s e r o
0034100 u t i n e s w i l l b e c
0034120 a l l e d f r o m t h e F
0034140 r o n t E n d , a n d m a y
0034160 b e \r / / c a l l e d m o
0034200 r e t h a n o n c e 376 001 \0 U
0034220 * i n t h e l i f e o f
0034240 a p r o g r a m \r \r / / - -
0034260 - - - - - - - - - - - - - - - -
*
0034340 - - - - - - - - - - - - - - - \r
0034360 l e t E F T P S e n d F i l e
0034400 ( d i s k s t r e a m , f o r
0034420 e i g n p o r t ) = v a l o
0034440 f \r / / - - - - - - - - - - - -
0034460 - - - - - - - - - - - - - - - -
*
0034540 - - - - - \r [ \r O p e n E F T P
0034560 S o c ( E F T P S o c k e t ,
0034600 0 , f o r e i g n p o r t ) \r
0034620 p 376 001 \0 034 2 a c k e t c o u n t
0034640 = 0 \r t o t a l b y t e c o
0034660 u n t = 0 \r \r l e t m a x
0034700 B u f f e r B y t e s = 2 *
0034720 2 5 6 * 6 / / e n o u g h
0034740 t o b u f f e r 6 d i s
0034760 k p a g e s \r l e t t e m p
0035000 v e c = v e c 2 5 6 * 6
0035020 / / i n w o r d s \r
0035040 l e t b y t e s L e f t I n B
0035060 u f f e r = 0 \r l e t n e
0035100 x t A d d r = t e m p v e c
0035120 \r \r l e t r e s u l t = n
0035140 i l \r \r / / A l o o p , t
0035160 o r e a d p a g e s a n d
0035200 s e n d o f f b l o c k s
0035220 \r [ S 376 001 \0 253 306 e n d l o
0035240 o p \r / / S e e i f w
0035260 e n e e d m o r e i n p u
0035300 t \r i f b y t e s L e f
0035320 t I n B u f f e r e q 0 t
0035340 h e n \r [ \r
0035360 / / S e e i f t i m
0035400 e t o q u i t \r
0035420 i f E n d o f s ( d i s k s
0035440 t r e a m ) t h e n b r e a
0035460 k \r b y t e s L e f
0035500 t I n B u f f e r = \r
0035520 F i l l F r o m D i s k ( d
0035540 i s k s t r e a m , t e m p v
0035560 e c , m a x B u f f e r B y t
0035600 e s ) \r t o t a l b
0035620 y t e c o u n t = 376 001 \0 7 022
0035640 t o t a l b y t e c o u n t +
0035660 b y t e s L e f t I n B u f f
0035700 e r \r n e x t A d d
0035720 r = t e m p v e c / /
0035740 r e s e t a d d r e s s p o
0035760 i n t e r \r ] \r
0036000 / / d a t a r e m a i n s
0036020 t o b e s e n t , a t n
0036040 e x t A d d r \r p a c k e
0036060 t c o u n t = p a c k e t c
0036100 o u n t + 1 \r t e s t
0036120 b y t e s L e f t I n B u f f
0036140 e r l s 5 1 2 \r i f s
0036160 o b y t e c o u n t = b y
0036200 t e s L e f t I n B u f f e r \r
0036220 i f n o t b y t e c o u
0036240 376 001 \0 q } n t = 5 1 2 \r \r
0036260 [ d u m m y L o o p \r
0036300 r e s u l t = \r
0036320 S e n d E F T P B l o c k ( E F
0036340 T P S o c k e t , n e x t A d
0036360 d r , b y t e c o u n t , l
0036400 o n g B l o c k T i m e o u t )
0036420 \r i f r e s u l t e q
0036440 E F T P T i m e o u t & \r
0036460 E F T P S o c
0036500 k e t > > E F T P S o c . T r a
0036520 n s f e r N o t S t a r t e d
0036540 t h e n \r [ \r
0036560 W l ( " N o
0036600 a n s w e r y e t , w i l l
0036620 k e e p t r y i n g . . . "
0036640 ) \r 376 001 \0 360 m
0036660 l o o p \r ] \r
0036700 b r e a k \r ] d u m
0036720 m y L o o p r e p e a t \r \r
0036740 / / S o m e t h i n g h a
0036760 p p e n e d . . . \r i f
0037000 r e s u l t g e 0 t h e n
0037020 \r [ \r
0037040 b y t e s L e f t I n B u f f e
0037060 r = b y t e s L e f t I n B
0037100 u f f e r - b y t e c o u n
0037120 t \r n e x t A d d r
0037140 = n e x t A d d r + b y
0037160 t e c o u n t / 2 \r
0037200 l o o p / / i t w e n t
0037220 p r o p e r l y \r
0037240 ] \r \r / / I f 376 001 \0 306 343
0037260 w e g e t h e r e , h a d
0037300 a r e a l f a i l u r e .
0037320 . . . \r s w i t c h o n
0037340 r e s u l t i n t o \r
0037360 [ r e s u l t C a s e \r
0037400 c a s e E F T P T i m
0037420 e o u t : \r [
0037440 \r W s ( " E F
0037460 T P S e n d t i m e d o u t
0037500 w h i l e s e n d i n g . .
0037520 . . " ) \r e n
0037540 d c a s e \r ]
0037560 \r c a s e E F T P
0037600 A b o r t S e n t : \r
0037620 [ \r W
0037640 s ( " E F T P A b o r t h a 376
0037660 001 \0 217 223 d t o b e s e n t
0037700 . . . . " ) \r
0037720 e n d c a s e \r
0037740 ] \r c a s e E F
0037760 T P A b o r t R e c e i v e d :
0040000 \r [ \r
0040020 W s ( " E F T P A b o
0040040 r t r e c e i v e d w h i l
0040060 e s e n d i n g . . . . " ) \r
0040100 l e t t e m
0040120 p p b i = G e t E F T P A b
0040140 o r t ( E F T P S o c k e t ) \r
0040160 P r i n t A b
0040200 o r t P B I ( t e m p p b i ) \r
0040220 e n d c a s e
0040240 \r ] \r
0040260 d e 376 001 \0 i 304 f a u l t : \r
0040300 [ \r
0040320 W s ( " U n k n o w n
0040340 e r r o r f r o m E F T P S
0040360 e n d . . . . " ) \r
0040400 ] \r ] r e s u
0040420 l t C a s e \r C l o s e E
0040440 F T P S o c ( E F T P S o c k e
0040460 t ) \r r e s u l t i s f
0040500 a l s e / / b a i l o u
0040520 t \r ] S e n d l o o p r
0040540 e p e a t / / k e e p g
0040560 o i n g , t i l y o u b r
0040600 e a k o u t \r \r / / A l l
0040620 o f t h e d a t a h a s
0040640 b e e n s e n t ; n o w d
0040660 o a n e n d 376 001 \0 367 R s e
0040700 q u e n c e \r r e s u l t =
0040720 S e n d E F T P E n d ( E F T P
0040740 S o c k e t , l o n g B l o c
0040760 k T i m e o u t ) \r C l o s e E
0041000 F T P S o c ( E F T P S o c k e
0041020 t ) \r t e s t r e s u l t \r
0041040 i f s o [ W n s ( d s p
0041060 , t o t a l b y t e c o u n t
0041100 , 0 , 1 0 ) ; W s ( " b
0041120 y t e s s e n t . " ) ]
0041140 \r i f n o t W s ( " S e
0041160 n d E n d s e q u e n c e f
0041200 a i l e d . . . . . " ) \r r e s
0041220 u l t i s r e s u l t \r ] \r \r
0041240 \r / / - - - - - - - - - - - - -
0041260 - - - - - - - - - - - - - - 376 001
0041300 \0 032 277 - - - - - - - - - - - - -
0041320 - - - - - - - - - - - - - - - -
0041340 - - - - - - - \r a n d F i l l
0041360 F r o m D i s k ( d i s k s t r
0041400 e a m , a d d r , m a x b y
0041420 t e s ) = v a l o f \r / / -
0041440 - - - - - - - - - - - - - - - -
*
0041520 - - - - - - - - - - - - - - \r [
0041540 \r / / R e t u r n s t h e n
0041560 u m b e r o f b y t e s r
0041600 e a d i n t o t h e b u f
0041620 f e r \r / / W a t c h o u t
0041640 , R e a d b l o c k r e t u
0041660 r n s a w o r d c o u n t
0041700 \r l e 376 001 \0 z 234 t b y t e c o
0041720 u n t = \r R e a d B l o c k
0041740 ( d i s k s t r e a m , a d d
0041760 r , m a x b y t e s r s h i
0042000 f t 1 ) l s h i f t 1 \r
0042020 i f b y t e c o u n t e q
0042040 0 t h e n r e s u l t i s
0042060 0 / / h i t e o f , q u
0042100 i t e a r l y \r i f b y t e
0042120 c o u n t < m a x b y t e s
0042140 t h e n \r [ \r / /
0042160 g o t t h e l a s t p a
0042200 g e ; w e h a v e t o d
0042220 o s o m e h a c k i n g h
0042240 e r e \r l e t f i l e p
0042260 o s = v e c 1 \r F i
0042300 l e P o s ( d i 376 001 \0 356 244 s k s
0042320 t r e a m , f i l e p o s ) \r
0042340 / / s e e i f t h e
0042360 f i l e s t o t a l b y t e
0042400 c o u n t i s o d d \r
0042420 i f ( ( f i l e p o s ! 1 )
0042440 & 1 ) e q 1 t h e n
0042460 b y t e c o u n t = b y t e c o
0042500 u n t - 1 \r ] \r r e s u l
0042520 t i s b y t e c o u n t \r ] \r
0042540 \r / / - - - - - - - - - - - - -
0042560 - - - - - - - - - - - - - - - -
*
0042640 - - \r a n d D u m p T o D i s
0042660 k ( d i s k s t r e a m , a d
0042700 d r , b y t e c o u n t 376 001 \0
0042720 234 246 ) = v a l o f \r / / - -
0042740 - - - - - - - - - - - - - - - -
*
0043020 - - - - - - - - - - - - - \r [ \r
0043040 / / W a t c h o u t f o r
0043060 a n o d d b y t e c o u n
0043100 t \r W r i t e B l o c k ( d i s
0043120 k s t r e a m , a d d r , b
0043140 y t e c o u n t r s h i f t
0043160 1 ) \r / / M a y h a v e f
0043200 a i l e d t o w r i t e o
0043220 n e b y t e \r i f ( b y t e
0043240 c o u n t & 1 ) e q 1
0043260 t h e n P u t s ( d i s k s t
0043300 r e a m , a d d r > > B y t e
0043320 ^ b 376 001 \0 Y ; y t e c o u n t )
0043340 \r ] \r \r \r / / - - - - - - - - -
0043360 - - - - - - - - - - - - - - - -
*
0043440 - - - - - - \r a n d E F T P R
0043460 e c e i v e F i l e ( d i s k s
0043500 t r e a m , f o r e i g n p o
0043520 r t ) = v a l o f \r / / - -
0043540 - - - - - - - - - - - - - - - -
*
0043620 - - - - - - - - - - - - - \r \r [
0043640 \r / / u s e E F T P L c l P o
0043660 r t , a l l o c a t e d e l
0043700 s e w h e r e \r Z e r o ( E F T
0043720 P L c l P o r 376 001 \0 [ 225 t , l
0043740 e n P o r t ) \r E F T P L c l P
0043760 o r t > > P o r t . s o c k e t
0044000 ^ 2 = s o c k e t E F T P R
0044020 e c e i v e \r \r O p e n E F T P
0044040 S o c ( E F T P S o c k e t ,
0044060 E F T P L c l P o r t , f o r
0044100 e i g n p o r t ) \r p a c k e t
0044120 c o u n t = 0 \r t o t a l b
0044140 y t e c o u n t = 0 \r \r l e
0044160 t m a x B u f f e r B y t e s
0044200 = 2 * 2 5 6 * 6 / / 6
0044220 d i s k p a g e s \r l e t
0044240 t e m p v e c = v e c 2 5
0044260 6 * 6 / / i n w o r d s
0044300 \r l e t b y t e s L e f t I n
0044320 B u f f e r = 0 \r l 376 001 \0 z
0044340 ) e t n e x t A d d r = t
0044360 e m p v e c \r \r / / a l o o
0044400 p t o g e t b l o c k s ,
0044420 a n d w r i t e t o t h
0044440 e d i s k \r [ R e c e i
0044460 v e l o o p \r / / M a k e
0044500 s u r e t h e r e i s e
0044520 n o u g h f r e e s p a c e
0044540 \r i f m a x B u f f e r
0044560 B y t e s - b y t e s L e f t I
0044600 n B u f f e r l s 5 1 2 t
0044620 h e n \r [ \r
0044640 t o t a l b y t e c o u n t
0044660 = t o t a l b y t e c o u n
0044700 t + b y t e s L e f t I n B
0044720 u f f e r \r D u m p
0044740 T 376 001 \0 025 \n o D i s k ( d i s k
0044760 s t r e a m , t e m p v e c ,
0045000 b y t e s L e f t I n B u f f
0045020 e r ) \r n e x t A d
0045040 d r = t e m p v e c \r
0045060 b y t e s L e f t I n B u
0045100 f f e r = 0 \r ]
0045120 \r l e t b y t e c o u n
0045140 t = \r R e c e i v e
0045160 E F T P B l o c k ( E F T P S o
0045200 c k e t , n e x t A d d r ,
0045220 l o n g B l o c k T i m e o u t
0045240 ) \r i f b y t e c o u n
0045260 t e q 0 t h e n \r
0045300 [ \r / / R e c
0045320 e i v e d a n E n d . . . .
0045340 \r 376 001 \0 262 234 i f b
0045360 y t e s L e f t I n B u f f e r
0045400 g r 0 t h e n \r
0045420 D u m p T o D i s k ( d
0045440 i s k s t r e a m , t e m p v
0045460 e c , b y t e s L e f t I n B
0045500 u f f e r ) \r t o t
0045520 a l b y t e c o u n t = t o
0045540 t a l b y t e c o u n t + b
0045560 y t e s L e f t I n B u f f e r
0045600 \r b r e a k / /
0045620 e n d h a s b e e n p r
0045640 o p e r l y r e c e i v e d \r
0045660 ] \r i f b y
0045700 t e c o u n t g r 0 t h e
0045720 n \r [ \r
0045740 / / o d d b y t e 376 001 \0 270 n
0045760 c o u n t s a r e n o t l
0046000 e g a l , e x c e p t i n
0046020 t h e l a s t p a c k e t \r
0046040 b y t e s L e f t I
0046060 n B u f f e r = b y t e s L
0046100 e f t I n B u f f e r + b y
0046120 t e c o u n t \r n e
0046140 x t A d d r = n e x t A d d
0046160 r + b y t e c o u n t r s
0046200 h i f t 1 \r p a c
0046220 k e t c o u n t = p a c k e
0046240 t c o u n t + 1 \r
0046260 l o o p \r ] \r \r
0046300 / / S o m e f o r m o f
0046320 e r r o r r e t u r n , f
0046340 i g u r e i t o u t h e r
0046360 376 001 \0 t 264 e a n d p u n t \r
0046400 s w i t c h o n b y t e
0046420 c o u n t i n t o \r
0046440 [ R e c e i v e C a s e B l o
0046460 c k \r c a s e E F
0046500 T P T i m e o u t : \r
0046520 [ \r i
0046540 f E F T P S o c k e t > > E F
0046560 T P S o c . T r a n s f e r N o
0046600 t S t a r t e d t h e n \r
0046620 [ \r
0046640 W l ( " N o t
0046660 h i n g r e c e i v e d y e
0046700 t , w i l l k e e p l i s
0046720 t e n i n g . . . " ) \r
0046740 l o o p \r
0046760 376 001 \0 g 003 ] \r
0047000 W s ( " R e c
0047020 e i v e r t i m e d o u t .
0047040 . . . " ) \r e
0047060 n d c a s e \r
0047100 ] \r c a s e E F T
0047120 P A b o r t S e n t : \r
0047140 [ \r
0047160 W s ( " A b o r t h a d t o
0047200 b e s e n t f r o m r e
0047220 c e i v e r . . . . " ) \r
0047240 e n d c a s e \r
0047260 ] \r c
0047300 a s e E F T P A b o r t R e c
0047320 e i v e d : \r
0047340 [ \r W s ( " E
0047360 F T P A b o r t r 376 001 \0 314 S e
0047400 c e i v e d w h i l e r e c
0047420 e i v i n g . . . . " ) \r
0047440 l e t t e m p p b
0047460 i = G e t E F T P A b o r t
0047500 ( E F T P S o c k e t ) \r
0047520 P r i n t A b o r t
0047540 P B I ( t e m p p b i ) \r
0047560 e n d c a s e \r
0047600 ] \r c
0047620 a s e E F T P R e s e t R e c
0047640 e i v e d : \r
0047660 [ \r W s ( " A
0047700 s k e d t o r e s e t . . .
0047720 . [ N o t i m p l e m e n t e
0047740 d h e r e ] " ) \r
0047760 e n d c a s e \r 376
0050000 001 \0 _ V ] \r
0050020 ] R e c e i v e C a s e B l o
0050040 c k \r C l o s e E F T P S
0050060 o c ( E F T P S o c k e t ) \r
0050100 r e s u l t i s f a l s e
0050120 \r ] R e c e i v e l o o p
0050140 r e p e a t \r \r / / E n d h
0050160 a s b e e n r e c e i v e d
0050200 , t i m e t o c l e a n
0050220 u p a n d l e a v e \r C l o
0050240 s e E F T P S o c ( E F T P S o
0050260 c k e t ) \r W n s ( d s p , t
0050300 o t a l b y t e c o u n t , 0
0050320 , 1 0 ) ; W s ( " b y t e
0050340 s r e c e i v e d . " ) \r r
0050360 e s u l t i s t r u e \r ] \r \r
0050400 / / - - 376 001 \0 Y e - - - - - - -
0050420 - - - - - - - - - - - - - - - -
*
0050500 - - - - - - \r a n d P r i n t
0050520 A b o r t P B I ( p b i ) b e
0050540 \r / / - - - - - - - - - - - - -
0050560 - - - - - - - - - - - - - - - -
*
0050640 - - \r [ \r P u t s ( d s p , $
0050660 * N ) ; W o ( p b i > > P B I
0050700 . p u p . w o r d s ^ 1 ) ; W
0050720 s ( " - A b o r t : " ) \r
0050740 f o r i = 3 t o ( 3
0050760 + ( p b i > > P B I . p u p .
0051000 l e n g t h - ( p 376 \0 ; 1 304 u p
0051020 O v B y t e s + 2 ) ) - 1 )
0051040 d o \r P u t s ( d s p ,
0051060 p b i > > P B I . p u p . b y
0051100 t e s ^ i ) \r ] \r 377 \0 \0 P u p E
0051120 F T P S e n d . b c p l \0 373 223 361
0051140 363 350 \0 \0 376 001 \0 4 Q / / P u p E
0051160 F T P S e n d . b c p l - -
0051200 b y J . S h o c h \r / / C
0051220 o p y r i g h t X e r o x C
0051240 o r p o r a t i o n 1 9 7 9 \r
0051260 \r / / L a s t m o d i f i e
0051300 d J u n e 3 , 1 9 7 9
0051320 1 2 : 4 5 P M b y T a f t
0051340 \r \r g e t " P u p E F T P . d
0051360 e c l " \r \r e x t e r n a l \r [
0051400 \r / / o u t g o i n g p r o
0051420 c e d u r e s \r S e n d E F T P
0051440 B l o c k ; S e n d E F T P E
0051460 n d \r \r / / i n c o m i n g
0051500 p r o c e d u r e s \r S e n d E
0051520 F T P A b o r t \r G e t P B I ;
0051540 R e l e a s e P 376 001 \0 1 026 B I
0051560 ; C o m p l e t e P u p \r S e
0051600 t T i m e r ; T i m e r H a s
0051620 E x p i r e d ; B l o c k \r D
0051640 e q u e u e ; M u l t E q ;
0051660 M a x ; M i n ; M o v e B l
0051700 o c k \r ] \r \r \r / / - - - - - -
0051720 - - - - - - - - - - - - - - - -
*
0052020 - - - - - - \r l e t S e n d E
0052040 F T P B l o c k ( s o c , a d
0052060 d r , b y t e C n t , t i m
0052100 e o u t ) = v a l o f \r / /
0052120 - - - - - - - - - - - - - - - -
0052140 - - - - - - - - - - - - - - 376 001
0052160 \0 0 207 - - - - - - - - - - - - -
0052200 - - - - - - - - - - - - - - - -
*
0052240 - \r [ \r l e t r e s u l t =
0052260 S e n d E F T P P a c k e t (
0052300 s o c , a d d r , b y t e C
0052320 n t , t i m e o u t , t y p
0052340 e E F T P D a t a ) \r i f r e
0052360 s u l t g e 0 t h e n s
0052400 o c > > E F T P S o c . S e q N
0052420 u m = s o c > > E F T P S o
0052440 c . S e q N u m + 1 \r r e s u
0052460 l t i s r e s u l t \r ] \r \r \r
0052500 / / - - - - - - - - - - - - - -
0052520 - - - - - - - - - - - - - - - -
*
0052560 - - - 376 001 \0 J 321 - - - - - - - -
0052600 - - - - - - - - - - - - - - - -
0052620 - - - \r a n d S e n d E F T P
0052640 E n d ( s o c , t i m e o u t
0052660 ) = v a l o f \r / / - - - -
0052700 - - - - - - - - - - - - - - - -
*
0053000 - - - - - - - - \r / / T h e e
0053020 n d s e q u e n c e r e q u
0053040 i r e s a c o m p l e t e
0053060 a c k f o r t h e f i r s
0053100 t \r / / o u t g o i n g e n
0053120 d , a n d t h e n a n e
0053140 x t r a e n d i s s e n t
0053160 , a s p a r 376 001 \0 307 X t o
0053200 f t h e \r / / t h r e e w
0053220 a y h a n d s h a k e . \r [ \r
0053240 i f S e n d E F T P P a c k e
0053260 t ( s o c , 0 , 0 , t i m
0053300 e o u t , t y p e E F T P E n
0053320 d ) l s 0 r e s u l t i s
0053340 f a l s e \r \r / / f i r s t
0053360 e n d s e n t a n d a c k
0053400 e d o k . S e n d s e c o
0053420 n d E n d b u t d o n ' t
0053440 w a i t f o r a c k \r s o
0053460 c > > E F T P S o c . S e q N u
0053500 m = s o c > > E F T P S o c
0053520 . S e q N u m + 1 \r S e n d E
0053540 F T P P a c k e t ( s o c , 0
0053560 , 0 , 0 , t y p e E 376 001 \0
0053600 032 273 F T P E n d ) \r r e s u l t
0053620 i s t r u e \r ] \r \f \r / / - -
0053640 - - - - - - - - - - - - - - - -
*
0053740 - - - - - - - - - - \r a n d S
0053760 e n d E F T P P a c k e t ( s o
0054000 c , a d d r , d a t a B y t
0054020 e s , t i m e o u t , t y p
0054040 e ) = v a l o f \r / / - - -
0054060 - - - - - - - - - - - - - - - -
*
0054160 - - - - - - - - - \r / / T h i
0054200 s 376 001 \0 372 277 i s a g e n e
0054220 r a l r o u t i n e , u s a
0054240 b l e f o r d a t a o r
0054260 e n d p a c k e t s \r / / W
0054300 i l l h a n d l e r e t r a
0054320 n s m i s s i o n s h e r e .
0054340 P a s s e s i n a l o n
0054360 g t i m e o u t \r / / R e t
0054400 u r n s t h e n u m b e r
0054420 o f d a t a b y t e s s e
0054440 n t ( > = 0 ) i f O K ; \r
0054460 / / R e t u r n s a n e r
0054500 r o r c o d e ( < 0 ) i
0054520 f t h e r e w a s a n e
0054540 r r o r \r [ \r S e t T i m e r (
0054560 l v s o c > > E F T P S o c .
0054600 s t a r t T i 376 001 \0 267 342 m e ,
0054620 0 ) / / r e m e m b e r s
0054640 t a r t t i m e \r l e t l o
0054660 n g T i m e r = n i l ; S
0054700 e t T i m e r ( l v l o n g T
0054720 i m e r , t i m e o u t ) \r \r
0054740 [ / / r e p e a t \r
0054760 / / c o n s t r u c t t
0055000 h e o u t g o i n g p a c k
0055020 e t \r l e t p b i =
0055040 G e t P B I ( s o c ) \r p
0055060 b i > > P B I . p u p . i d ^ 2
0055100 = s o c > > E F T P S o c .
0055120 S e q N u m \r M o v e B l
0055140 o c k ( l v p b i > > P B I .
0055160 p u p . w o r d s ^ 1 , a d d
0055200 r , ( d a t a B y t e 376 001 \0 221
0055220 314 s + 1 ) r s h i f t 1 ) \r
0055240 C o m p l e t e P u p ( p
0055260 b i , t y p e , d a t a B y
0055300 t e s + p u p O v B y t e s ) \r
0055320 l e t s h o r t T i m e
0055340 r = n i l \r S e t T i
0055360 m e r ( l v s h o r t T i m e
0055400 r , s o c > > E F T P S o c .
0055420 c u r r e n t T i m e o u t ) \r
0055440 \r [ / / r e p e
0055460 a t \r B l o c k ( )
0055500 \r i f t i m e o u
0055520 t n e - 1 & T i m e r H
0055540 a s E x p i r e d ( l v l o n
0055560 g T i m e r ) t h e n \r
0055600 r e s u l t i s E
0055620 F 376 001 \0 277 177 T P T i m e o u t
0055640 / / h e i s n o t a n
0055660 s w e r i n g n o w \r
0055700 i f T i m e r H a s E x p
0055720 i r e d ( l v s h o r t T i m
0055740 e r ) t h e n \r
0055760 [ \r / / e
0056000 x p o n e n t i a l l y a g e
0056020 r e t r a n s m i s s i o n
0056040 i n t e r v a l \r
0056060 A g e T i m e o u t ( s o c
0056100 ) ; b r e a k / / r e
0056120 - t r a n s m i t \r
0056140 ] \r p b i =
0056160 D e q u e u e ( l v s o c >
0056200 > E F T P S o c . i Q ) ; i f
0056220 p b i e 376 001 \0 0 224 q 0 l
0056240 o o p \r \r / / C h e
0056260 c k t h e s o u r c e o f
0056300 t h i s p a c k e t \r
0056320 u n l e s s M u l t E q
0056340 ( l v s o c > > E F T P S o c
0056360 . f r n P o r t . s o c k e t ,
0056400 \r l v p b i > >
0056420 P B I . p u p . s P o r t . s o
0056440 c k e t ) d o \r
0056460 [ R e l e a s e P B I ( p
0056500 b i ) ; l o o p ] \r \r
0056520 / / G o t a p a c k e
0056540 t r e a l l y f o r u s
0056560 f r o m o u r p a r t n e r
0056600 \r A g e T i m e o u
0056620 t ( s o c ) \r 376 001 \0 \n \0
0056640 s w i t c h o n p b i > >
0056660 P B I . p u p . t y p e i n t
0056700 o \r [ \r
0056720 c a s e t y p e E
0056740 F T P A c k : \r
0056760 [ \r
0057000 i f p b i > > P B I . p u
0057020 p . i d ^ 2 e q s o c > > E
0057040 F T P S o c . S e q N u m t h
0057060 e n \r
0057100 [ R e l e a s e P B I ( p
0057120 b i ) ; r e s u l t i s d a
0057140 t a B y t e s ] \r
0057160 i f p b i > > P B
0057200 I . p u p . i d ^ 2 g r s o
0057220 c > > E F T P S o c . S e q N u
0057240 376 001 \0 * 343 m t h e n \r
0057260 [ \r
0057300 S e n d
0057320 E F T P A b o r t ( s o c , O
0057340 u t O f S y n c h A b o r t , \r
0057360
0057400 " Y o u r r e c e i v e r h
0057420 a s g o t t e n o u t o f
0057440 s y n c h . " , p b i ) \r
0057460 R e
0057500 l e a s e P B I ( p b i ) \r
0057520 r e s
0057540 u l t i s E F T P A b o r t S
0057560 e n t \r
0057600 ] \r
0057620 R e l e a s e P B I ( p b i )
0057640 \r 376 001 \0 362 233
0057660 e n d c a s e \r
0057700 ] \r
0057720 c a s e t y p e E F T P A b
0057740 o r t : \r
0057760 [ \r i
0060000 f s o c > > E F T P S o c . A
0060020 b o r t P B I n e 0 t h e
0060040 n \r
0060060 R e l e a s e P B I ( s o c >
0060100 > E F T P S o c . A b o r t P B
0060120 I ) \r s
0060140 o c > > E F T P S o c . A b o r
0060160 t P B I = p b i \r
0060200 r e s u l t i s
0060220 E F T P A b o r t R e c e i v e
0060240 d / / b a i l 376 001 \0 035 & o
0060260 u t \r ]
0060300 \r d e f a u l
0060320 t : R e l e a s e P B I ( p b
0060340 i ) \r ]
0060360 \r ] r e p e a t \r
0060400 ] r e p e a t \r ] \r \f \r
0060420 / / - - - - - - - - - - - - - -
0060440 - - - - - - - - - - - - - - - -
*
0060520 - - - - - - - - - - - - - - \r a
0060540 n d A g e T i m e o u t ( s o
0060560 c ) b e \r / / - - - - - - - -
0060600 - - - - - - - - - - - - - - - -
*
0060640 - - - - - - - - - - - - - - - 376
0060660 001 \0 o 226 - - - - - - - - - - - -
0060700 - - - - - - - - - \r / / u p d a
0060720 t e t h e a d a p t i v e
0060740 t i m e o u t \r / / = 2 t
0060760 i m e s t h e a v e r a g e
0061000 r e s p o n s e t i m e ,
0061020 e x p o n e n t i a l l y a g
0061040 e d o v e r \r / / t h e l
0061060 a s t 8 s a m p l e s . \r [
0061100 \r l e t t = n i l ; S e
0061120 t T i m e r ( l v t , 0 ) \r
0061140 c o m p i l e t e s t a l t o
0061160 \r i f s o [ t = (
0061200 t - s o c > > E F T P S o c . s
0061220 t a r t T i m e ) l s h i f t
0061240 3 + 4 ] \r i f n o t
0061260 [ t 376 \0 234 220 ` = ( t - s
0061300 o c > > E F T P S o c . s t a r
0061320 t T i m e ) l s h i f t 1
0061340 + 1 ] \r s o c > > E F T P S o
0061360 c . c u r r e n t T i m e o u t
0061400 = ( 7 * s o c > > E F T P S
0061420 o c . c u r r e n t T i m e o u
0061440 t + \r M a x ( m i n T i m e
0061460 o u t , M i n ( m a x T i m e
0061500 o u t , t ) ) ) r s h i f t
0061520 3 \r ] \r 377 \0 \0 P u p E F T P R
0061540 e c e i v e . b c p l \0 373 226 \0 376
0061560 ~ \0 \0 376 001 \0 303 X / / P u p E F
0061600 T P R e c e i v e . b c p l -
0061620 - b y J . S h o c h \r / /
0061640 C o p y r i g h t X e r o x
0061660 C o r p o r a t i o n 1 9 7
0061700 9 , 1 9 8 0 \r \r / / L a s t
0061720 m o d i f i e d S e p t e m
0061740 b e r 3 0 , 1 9 8 0 1 :
0061760 4 5 P M , b y S w i n e h
0062000 a r t \r \r g e t " P u p E F T
0062020 P . d e c l " \r \r e x t e r n a
0062040 l \r [ \r / / o u t g o i n g
0062060 p r o c e d u r e s \r R e c e i
0062100 v e E F T P B l o c k ; R e c
0062120 e i v e E F T P P a c k e t \r \r
0062140 / / i n c o m i n g p r o c
0062160 e d u r e s \r S 376 001 \0 322 024 e n d
0062200 E F T P A b o r t \r G e t P B I
0062220 ; R e l e a s e P B I ; C o
0062240 m p l e t e P u p \r S e t T i m
0062260 e r ; T i m e r H a s E x p i
0062300 r e d ; B l o c k ; D e q u
0062320 e u e ; M u l t E q \r M o v e
0062340 B l o c k \r ] \r \r \r / / - - - -
0062360 - - - - - - - - - - - - - - - -
*
0062460 - - - - - - - - \r l e t R e c
0062500 e i v e E F T P B l o c k ( s o
0062520 c , a d d r , t i m e o u t
0062540 ) = v a l o f \r / / - - - -
0062560 - - - - - - - - - - - - - 376 001 \0
0062600 ) 365 - - - - - - - - - - - - - -
0062620 - - - - - - - - - - - - - - - -
*
0062660 - - - - - - - - - - - - - \r / /
0062700 R e t u r n s a b y t e
0062720 c o u n t ( > = 0 ) o r a
0062740 n e r r o r c o d e ( < 0
0062760 ) \r [ \r l e t i n P b i =
0063000 0 \r l e t r e c e i v e R e s
0063020 u l t = R e c e i v e E F T
0063040 P P a c k e t ( s o c , t i m
0063060 e o u t , l v i n P b i ) \r
0063100 i f r e c e i v e R e s u l t
0063120 g e 0 t h e n / / s u
0063140 c c e e d e d \r [ \r
0063160 M o v e B l o c k ( a d d r ,
0063200 l v 376 001 \0 366 8 i n P b i > > P
0063220 B I . p u p . w o r d s ^ 1 ,
0063240 ( r e c e i v e R e s u l t + 1
0063260 ) r s h i f t 1 ) \r i
0063300 f i n P b i t h e n / /
0063320 i g n o r e z e r o - l e n
0063340 g t h p a c k e t s \r
0063360 [ R e l e a s e P B I ( i
0063400 n P b i ) ; i f r e c e i v
0063420 e R e s u l t e q 0 l o o
0063440 p ] \r r e s u l t i s
0063460 r e c e i v e R e s u l t / /
0063500 c o u n t o f d a t a B y
0063520 t e s \r ] \r u n l e s s
0063540 r e c e i v e R e s u l t e q
0063560 E F T P N o t F i r s t S y n
0063600 c h r e s u 376 001 \0 215 306 l t i s
0063620 r e c e i v e R e s u l t \r ]
0063640 r e p e a t \r \f \r / / - - - -
0063660 - - - - - - - - - - - - - - - -
*
0063760 - - - - - - - - \r a n d R e c
0064000 e i v e E F T P P a c k e t ( s
0064020 o c , t i m e o u t , l v P
0064040 b i ) = v a l o f \r / / - -
0064060 - - - - - - - - - - - - - - - -
*
0064160 - - - - - - - - - - \r / / R e
0064200 t u r n s a b y t e 376 001 \0 o
0064220 7 c o u n t ( > = 0 ) o r
0064240 a n e r r o r c o d e (
0064260 < 0 ) \r / / I f a b y t e
0064300 c o u n t , @ l v P b i c
0064320 o n t a i n s t h e p b i
0064340 w i t h t h e d a t a \r / /
0064360 N o t e t h a t w h e n
0064400 w e s t a r t , w e m a y
0064420 n o t y e t k n o w t h
0064440 e s o c k e t \r / / n u m
0064460 b e r o f t h e f o r e i
0064500 g n s o c k e t . . . . . \r [
0064520 \r l e t s y n c M s g = "
0064540 Y o u r s e n d e r i s o
0064560 u t o f s y n c . " \r l e t
0064600 b u s y M s g = " R e c e
0064620 i 376 001 \0 342 340 v e r b u s y ,
0064640 p l e a s e t r y a g a i n
0064660 l a t e r . " \r l e t l o n
0064700 g T i m e r = n i l ; S e
0064720 t T i m e r ( l v l o n g T i
0064740 m e r , t i m e o u t ) \r
0064760 [ / / r e p e a t \r
0065000 / / w a i t f o r a n i
0065020 n c o m i n g p a c k e t \r
0065040 B l o c k ( ) \r i f
0065060 t i m e o u t n e - 1 &
0065100 T i m e r H a s E x p i r e d (
0065120 l v l o n g T i m e r ) r e
0065140 s u l t i s E F T P T i m e o
0065160 u t \r l e t i n P b i
0065200 = D e q u e u e ( l v s o c
0065220 > > E F T P 376 001 \0 n 376 S o c . i
0065240 Q ) \r i f i n P b i e
0065260 q 0 l o o p \r l e t
0065300 f i r s t P a c k e t = i n
0065320 P b i > > P B I . p u p . i d ^
0065340 2 e q 0 \r l e t d a
0065360 t a P u p = i n P b i > > P B
0065400 I . p u p . t y p e e q t y
0065420 p e E F T P D a t a \r \r /
0065440 / S e e i f w e a r e
0065460 a l r e a d y c o m m i t t e
0065500 d t o a f i l e t r a n
0065520 s f e r \r i f s o c > >
0065540 E F T P S o c . T r a n s f e r
0065560 N o t S t a r t e d t h e n \r
0065600 [ \r / /
0065620 N o e s t a b l i 376 001 \0 w 2
0065640 s h e d f i l e t r a n s f
0065660 e r i s i n p r o g r e s
0065700 s . \r / / T o s
0065720 t a r t a f i l e t r a n
0065740 s f e r , ( 1 ) h i s m u
0065760 s t b e a v a l i d p a
0066000 c k e t 0 , \r / /
0066020 a n d e i t h e r ( 2 )
0066040 i t s s o u r c e m u s t
0066060 m a t c h o u r s o c k e
0066100 t ' s f o r e i g n p o r t
0066120 \r / / o r ( 3
0066140 ) w e m u s t b e p r o
0066160 m i s c u o u s . \r
0066200 i f d a t a P u p & f i r
0066220 s t P a c k e t & \r
0066240 376 001 \0 244 244 ( s o c > > E F T
0066260 P S o c . f r n P o r t . h o s
0066300 t e q 0 % / / ( 2 ) \r
0066320 ( s o c > > E F T
0066340 P S o c . f r n P o r t . h o s
0066360 t e q i n P b i > > P B I .
0066400 p u p . s P o r t . h o s t &
0066420 / / ( 3 ) \r s
0066440 o c > > E F T P S o c . f r n P
0066460 o r t . n e t e q i n P b i
0066500 > > P B I . p u p . s P o r t .
0066520 n e t ) ) t h e n / / ( 3
0066540 ) \r [ / /
0066560 e s t a b l i s h a " c o n
0066600 n e c t i o n " \r
0066620 s o c > > E F T P S o c . T
0066640 r a n s f 376 001 \0 260 214 e r N o t S
0066660 t a r t e d = f a l s e \r
0066700 s o c > > E F T
0066720 P S o c . S e q N u m = 0 \r
0066740 M o v e B l o
0066760 c k ( l v s o c > > E F T P S
0067000 o c . f r n P o r t , l v i
0067020 n P b i > > P B I . p u p . s P
0067040 o r t , l e n P o r t ) \r
0067060 ] \r ]
0067100 \r \r / / D o s o u r c
0067120 e f i l t e r i n g \r u
0067140 n l e s s M u l t E q ( l v
0067160 s o c > > E F T P S o c . f r n
0067200 P o r t , l v i n P b i > >
0067220 P B I . p u p . s P o r t , l
0067240 e n P o r t ) d o 376 001 \0 ! 354 \r
0067260 [ / / D i d n o t
0067300 p a s s s o u r c e f i l
0067320 t e r , g e n e r a t e A b
0067340 o r t \r i f d a t a P
0067360 u p t h e n \r [ \r
0067400 t e s t f i r s t
0067420 P a c k e t \r
0067440 i f s o \r
0067460 [ \r /
0067500 / A t t e m p t e d f i r s
0067520 t p a c k e t o f t r a n
0067540 s f e r . \r
0067560 / / E i t h e r w e a
0067600 r e b u s y o r w e a r
0067620 e l i s t e n i n g a n d
0067640 n o t p r o m i s c u o u s 376
0067660 001 \0 O : . \r
0067700 S e n d E F T P A b o r t (
0067720 s o c , R e c e i v e r B u s
0067740 y A b o r t , b u s y M s g ,
0067760 i n P b i ) \r
0070000 s o c > > E F T P S o c
0070020 . S o m e o n e E l s e W a i t
0070040 i n g = t r u e \r
0070060 ] \r
0070100 i f n o t \r
0070120 [ \r
0070140 / / N o t l e g a l f
0070160 i r s t p a c k e t o f t
0070200 r a n s f e r . \r
0070220 S e n d E F T P A b o
0070240 r t ( s o c , O u t O f S y n
0070260 c h A b 376 001 \0 302 210 o r t , s y
0070300 n c M s g , i n P b i ) \r
0070320 ] \r
0070340 ] \r R e l e a s e P
0070360 B I ( i n P b i ) \r i f
0070400 s o c > > E F T P S o c . T r
0070420 a n s f e r N o t S t a r t e d
0070440 r e s u l t i s E F T P N o
0070460 t F i r s t S y n c h \r
0070500 l o o p / / w a i t f o
0070520 r n e x t i n p u t \r
0070540 ] \r \r / / R e c e i v e E F
0070560 T P P a c k e t ( c o n t ' d
0070600 ) \r \r / / P a c k e t
0070620 h a s p a s s e d a l l f
0070640 i l t e r s . N o w p r o
0070660 c e s s i t . \r 376 001 \0 D 207
0070700 s w i t c h o n i n P b i >
0070720 > P B I . p u p . t y p e i n
0070740 t o \r [ \r
0070760 c a s e t y p e E F T P D a
0071000 t a : \r [ \r
0071020 l e t s e q =
0071040 C h e c k S e q u e n c e ( s o
0071060 c , i n P b i ) \r
0071100 s w i t c h o n s e q
0071120 i n t o \r
0071140 [ c a s e 1 : l o o p
0071160 ; c a s e 0 : e n d c a s
0071200 e ; d e f a u l t : r e s u
0071220 l t i s s e q ] \r
0071240 s o c > > E F T P S o c
0071260 . S e q N u m = s o c > 376 001
0071300 \0 p , > E F T P S o c . S e q N
0071320 u m + 1 \r @ l
0071340 v P b i = i n P b i \r
0071360 r e s u l t i s i
0071400 n P b i > > P B I . p u p . l e
0071420 n g t h - p u p O v B y t e
0071440 s / / a n d r e t u r n
0071460 \r ] \r
0071500 c a s e t y p e E F T P E
0071520 n d : \r [ \r
0071540 l e t s e q =
0071560 C h e c k S e q u e n c e ( s o
0071600 c , i n P b i ) \r
0071620 s w i t c h o n s e q
0071640 i n t o \r
0071660 [ c a s e 1 : l o o p
0071700 ; c 376 001 \0 353 B a s e 0 : e
0071720 n d c a s e ; d e f a u l t :
0071740 r e s u l t i s s e q ] \r
0071760 R e l e a s e
0072000 P B I ( i n P b i ) \r
0072020 s o c > > E F T P S o c
0072040 . S e q N u m = s o c > > E
0072060 F T P S o c . S e q N u m + 1 \r
0072100 l e t d a l
0072120 l y T i m e r = n i l ; S
0072140 e t T i m e r ( l v d a l l y
0072160 T i m e r , d a l l y T i m e
0072200 o u t ) \r
0072220 [ / / r e p e a t \r
0072240 B l o c k ( )
0072260 \r i f
0072300 T i m e r H a s 376 001 \0 327 327 E x p
0072320 i r e d ( l v d a l l y T i m
0072340 e r ) r e s u l t i s E F T
0072360 P E n d R e c e i v e d \r
0072400 i n P b i =
0072420 D e q u e u e ( l v s o c >
0072440 > E F T P S o c . i Q ) \r
0072460 i f i n P b
0072500 i e q 0 l o o p \r \r
0072520 i f i n P b
0072540 i > > P B I . p u p . t y p e
0072560 n e t y p e E F T P E n d t
0072600 h e n \r
0072620 [ R e l e a s e P B I (
0072640 i n P b i ) ; l o o p ] \r
0072660 i f s o
0072700 c > > E F T P S o c . S e 376 001 \0
0072720 I z q N u m e q i n P b i >
0072740 > P B I . p u p . i d ^ 2 t h
0072760 e n \r
0073000 [ R e l e a s e P B
0073020 I ( i n P b i ) ; r e s u l t
0073040 i s E F T P E n d R e c e i v
0073060 e d ] \r \r
0073100 / / W a s a r e t r a
0073120 n s m i s s i o n o f f i r
0073140 s t e n d , a c k i t \r
0073160 A c k E F
0073200 T P P a c k e t ( s o c , i n
0073220 P b i ) ; R e l e a s e P B I
0073240 ( i n P b i ) \r
0073260 ] r e p e a t \r
0073300 e n d c a s e \r
0073320 376 001 \0 311 257 ] \r
0073340 c a s e t y p e E F T
0073360 P A b o r t : \r c a
0073400 s e t y p e E r r o r : / /
0073420 l o w - l e v e l e r r o r
0073440 p u p , i f " n o s u c
0073460 h p o r t " t r e a t a s
0073500 a b o r t e l s e i g n o
0073520 r e \r [ \r \t
0073540 i f i n P b i > > P B
0073560 I . p u p . w o r d s ^ 1 1 n
0073600 e e c N o S u c h P o r t e
0073620 n d c a s e / / i g n o r e
0073640 t h e p a c k e t \r
0073660 i f s o c > > E F T
0073700 P S o c . A b o r t P B I n e
0073720 0 t h e n 376 001 \0 N i R e l
0073740 e a s e P B I ( s o c > > E F T
0073760 P S o c . A b o r t P B I ) \r
0074000 s o c > > E F T
0074020 P S o c . A b o r t P B I =
0074040 i n P b i / / i n c l u d e
0074060 s e r r o r P u p s ? \r
0074100 r e s u l t i s
0074120 E F T P A b o r t R e c e i v e
0074140 d \r ] \r
0074160 d e f a u l t : / /
0074200 u n r e c o g n i z e d P u p
0074220 o n c u r r e n t c o n n
0074240 e c t i o n , a b o r t \r
0074260 [ \r
0074300 S e n d E F T P A b o r t (
0074320 s o c , E x t e r n a 376 001 \0 1
0074340 345 l S e n d e r A b o r t , \r
0074360 " U n r
0074400 e c o g n i z e d P u p t y
0074420 p e o n E F T P c o n n e
0074440 c t i o n " , i n P b i ) \r
0074460 R e l e a s e P
0074500 B I ( i n P b i ) ; \r
0074520 r e s u l t i s E F T
0074540 P A b o r t S e n t \r
0074560 ] \r ] \r
0074600 R e l e a s e P B I ( i n P b
0074620 i ) \r ] r e p e a t \r ]
0074640 \r \r \r a n d C h e c k
0074660 S e q u e n c e ( s o c , i n
0074700 P b i ) = v a l o f \r
0074720 [ \r l e t i n S e q N u
0074740 m 376 001 \0 q S = i n P b i > > P B
0074760 I . p u p . i d ^ 2 \r / /
0075000 C h e c k t h e s e q u e
0075020 n c e n u m b e r - - s h
0075040 o u l d b e e x p e c t e d
0075060 o r e x p e c t e d - 1 \r
0075100 / / A c k n o w l e d g e
0075120 i t . T h e n , i f e
0075140 x p e c t e d - 1 , r e l e a
0075160 s e a n d r e t u r n 1 \r
0075200 / / I
0075220 f e x p e c t e d , r e t u
0075240 r n 0 - - n e x t d a t
0075260 a p a c k e t \r / / I
0075300 f n o t e x p e c t e d s
0075320 e q u e n c e , i s s u e a
0075340 p p r o p r 376 001 \0 221 A i a t e
0075360 a b o r t a n d r e t u r n
0075400 i t s c o d e . \r l e
0075420 t d i f = ( s o c > > E F T P
0075440 S o c . S e q N u m - i n S e q
0075460 N u m ) \r i f ( d i f
0075500 r s h i f t 1 ) e q 0 t
0075520 h e n \r [ \r
0075540 A c k E F T P P a c k e t (
0075560 s o c , i n P b i ) \r
0075600 i f d i f e q 1 t h
0075620 e n R e l e a s e P B I ( i n
0075640 P b i ) \r r e s u l
0075660 t i s d i f / / 0 i f
0075700 e x p e c t e d s e q u e n c
0075720 e # , 1 i f p r e v i o
0075740 u s o n e \r 376 001 \0 307 275
0075760 ] \r / / S e q u e n
0076000 c e n u m b e r i n c o r r
0076020 e c t . \r / / I f w e
0076040 r e c e i v e a d a t a
0076060 p a c k e t w i t h s e q u
0076100 e n c e n u m b e r 0 \r
0076120 / / f r o m o u r
0076140 p a r t n e r , t h e n a s
0076160 s u m e h e w a n t s t o
0076200 r e s t a r t . \r / /
0076220 O t h e r w i s e a b o r t
0076240 t h e t r a n s f e r a n d
0076260 r e t u r n a n e r r o r
0076300 . \r u n l e s s i n S e
0076320 q N u m e q 0 d o \r
0076340 S e n d E F T P A b
0076360 376 001 \0 E \a o r t ( s o c , O u
0076400 t O f S y n c h A b o r t , \r
0076420
0076440 " Y o u r s e n d e r i s
0076460 o u t o f s y n c . " ,
0076500 i n P b i ) \r R e l e a s
0076520 e P B I ( i n P b i ) \r r
0076540 e s u l t i s i n S e q N u m
0076560 e q 0 ? E F T P R e s e t
0076600 R e c e i v e d , E F T P A b
0076620 o r t S e n t \r ] \r \f \r \r
0076640 / / - - - - - - - - - - - - - -
0076660 - - - - - - - - - - - - - - - -
*
0076740 - - - - - - - - - - - - - - \r a
0076760 n d A c 376 001 \0 253 313 k E F T P P
0077000 a c k e t ( s o c , p b i )
0077020 b e \r / / - - - - - - - - - - -
0077040 - - - - - - - - - - - - - - - -
*
0077140 - \r [ \r / / c o n s t r u c t
0077160 t h e o u t g o i n g a c
0077200 k p a c k e t \r l e t a c k
0077220 P b i = G e t P B I ( s o c
0077240 ) \r a c k P b i > > P B I . p u
0077260 p . i d ^ 2 = p b i > > P B
0077300 I . p u p . i d ^ 2 \r C o m p l
0077320 e t e P u p ( a c k P b i , t
0077340 y p e E F T P A c k , p u p O
0077360 v B y t e s ) \r ] \r 377 \0 \0 P u p
0077400 E F T P C o m m o n . b c p l \0
0077420 373 223 361 363 350 \0 \0 376 001 \0 ] 212 / / P
0077440 u p E F T P C o m m o n . b c p
0077460 l - - b y J . S h o c h
0077500 \r / / C o p y r i g h t X e
0077520 r o x C o r p o r a t i o n
0077540 1 9 7 9 \r \r / / L a s t m o
0077560 d i f i e d J u n e 3 , 1
0077600 9 7 9 1 2 : 0 0 P M b y
0077620 T a f t \r \r g e t " P u p E
0077640 F T P . d e c l " \r \r e x t e r
0077660 n a l \r [ \r / / o u t g o i n
0077700 g p r o c e d u r e s \r I n i
0077720 t E F T P P a c k a g e ; O p
0077740 e n E F T P S o c ; C l o s e
0077760 E F T P S o c ; G e t E F T P
0100000 A b o r t ; S e n d E F T P A
0100020 b o r t \r \r / / i n c 376 001 \0 365
0100040 003 o m i n g p r o c e d u r e
0100060 s \r O p e n L e v e l 1 S o c k
0100100 e t ; C l o s e L e v e l 1 S
0100120 o c k e t ; G e t P B I ; R
0100140 e l e a s e P B I \r S e t P u p
0100160 D P o r t ; A p p e n d S t r
0100200 i n g T o P u p ; C o m p l e
0100220 t e P u p \r D e f a u l t A r g
0100240 s ; Z e r o \r \r / / o u t g
0100260 o i n g s t a t i c s \r l E F
0100300 T P S o c \r ] \r \r s t a t i c
0100320 [ l E F T P S o c = l e n
0100340 E F T P S o c ] \r \r \r / / - -
0100360 - - - - - - - - - - - - - - - -
*
0100440 - 376 001 \0 226 260 - - - - - - - - - -
0100460 - - - - - - - - - - - - - - - \r
0100500 l e t I n i t E F T P P a c k
0100520 a g e ( p a c k a g e Z o n e )
0100540 b e [ ] \r / / - - - - - -
0100560 - - - - - - - - - - - - - - - -
*
0100660 - - - - - - \r \r / / - - - - - -
0100700 - - - - - - - - - - - - - - - -
*
0101000 - - - - - - \r a n d O p e n E
0101020 F T P S o c ( s o c , l c l p
0101040 o r t , f 376 001 \0 375 255 r n p o r
0101060 t ; n u m a r g s n a ) b
0101100 e \r / / - - - - - - - - - - - -
0101120 - - - - - - - - - - - - - - - -
*
0101220 \r [ \r D e f a u l t A r g s ( l
0101240 v n a , - 1 , 0 , 0 ) \r
0101260 Z e r o ( s o c , l e n E F T
0101300 P S o c ) \r s o c > > E F T P S
0101320 o c . T r a n s f e r N o t S t
0101340 a r t e d = t r u e \r s o c
0101360 > > E F T P S o c . c u r r e n
0101400 t T i m e o u t = s t a r t
0101420 i n g T i m e o u t \r O p e n L
0101440 e v e l 1 S o c k e t 376 001 \0 356 224
0101460 ( s o c , l c l p o r t , f
0101500 r n p o r t ) \r ] \r \r / / - - -
0101520 - - - - - - - - - - - - - - - -
*
0101620 - - - - - - - - - \r a n d C l
0101640 o s e E F T P S o c ( s o c )
0101660 b e \r / / - - - - - - - - - - -
0101700 - - - - - - - - - - - - - - - -
*
0102000 - \r [ \r i f s o c > > E F T P
0102020 S o c . A b o r t P B I n e
0102040 0 t h e n R e l e a s e P B
0102060 376 001 \0 334 \f I ( s o c > > E F T P
0102100 S o c . A b o r t P B I ) \r C l
0102120 o s e L e v e l 1 S o c k e t (
0102140 s o c ) \r ] \r \r / / - - - - - -
0102160 - - - - - - - - - - - - - - - -
*
0102260 - - - - - - \r a n d G e t E F
0102300 T P A b o r t ( s o c ) = s
0102320 o c > > E F T P S o c . A b o r
0102340 t P B I \r / / - - - - - - - - -
0102360 - - - - - - - - - - - - - - - -
*
0102460 - - - \r \r 376 001 \0 \t C / / - - - -
0102500 - - - - - - - - - - - - - - - -
*
0102600 - - - - - - - - \r a n d S e n
0102620 d E F T P A b o r t ( s o c ,
0102640 a b o r t C o d e , a b o r t
0102660 S t r i n g , p b i ; n u m
0102700 a r g s n a ) b e \r / / - -
0102720 - - - - - - - - - - - - - - - -
*
0103020 - - - - - - - - - - \r / / c o
0103040 n s t r u c t t h e o u t g
0103060 o i n g a b o r t 376 001 \0 324 224
0103100 p a c k e t , \r / / w i l l
0103120 g e t s e n t t o s o u r
0103140 c e o f p b i i f s u p
0103160 p l i e d , \r / / w i l l g
0103200 e t s e n t t o y o u r
0103220 c u r r e n t f o r e i g n
0103240 p o r t o t h e r w i s e \r [
0103260 \r l e t a b o r t P b i =
0103300 G e t P B I ( s o c ) \r i f n
0103320 a g r 3 t h e n \r [
0103340 \r a b o r t P b i > > P B
0103360 I . p u p . i d ^ 2 = p b i
0103400 > > P B I . p u p . i d ^ 2 \r
0103420 S e t P u p D P o r t ( a b
0103440 o r t P b i , l v p b i > >
0103460 P B I . p u p . s P o r t ) \r 376
0103500 \0 253 L ] ] \r a b o r t P b
0103520 i > > P B I . p u p . i d ^ 2
0103540 = s o c > > E F T P S o c . S
0103560 e q N u m \r a b o r t P b i > >
0103600 P B I . p u p . w o r d s ^ 1
0103620 = a b o r t C o d e \r A p p e
0103640 n d S t r i n g T o P u p ( a b
0103660 o r t P b i , 3 , a b o r t
0103700 S t r i n g ) \r C o m p l e t e
0103720 P u p ( a b o r t P b i , t y
0103740 p e E F T P A b o r t ) \r ] \r 377
0103760 \0 \0 C o m p i l e E F T P . c m
0104000 \0 373 223 361 363 350 \0 \0 376 \0 s 353 250 B c p
0104020 l / f E F T P . b c p l \r B c
0104040 p l / f E F T P F i l e . b c
0104060 p l \r B c p l / f P u p E F T
0104100 P S e n d . b c p l \r B c p l /
0104120 f P u p E F T P R e c e i v e
0104140 . b c p l \r B c p l / f P u p
0104160 E F T P C o m m o n . b c p l \r
0104200 377 \0 \0 L o a d E F T P . c m \0 373
0104220 223 361 363 350 \0 \0 376 \0 355 243 033 B L D R /
0104240 L / V E F T P E F T P F i l
0104260 e P u p E F T P S e n d P u
0104300 p E F T P R e c e i v e P u p
0104320 E F T P C o m m o n P u p A l
0104340 E t h b P u p A l E t h a P
0104360 u p A l E t h I n i t P u p 1
0104400 b P u p A l 1 a P u p D u m
0104420 m y G a t e P u p R o u t e
0104440 P u p 1 I n i t P u p 1 O p e
0104460 n C l o s e P u p N a m e L o
0104500 o k u p C o n t e x t C o n
0104520 t e x t I n i t I n t e r r u
0104540 p t I n t e r r u p t I n i t
0104560 A l t o Q u e u e A l t o T
0104600 i m e r G P \r 377 \0 \0 R e l e a
0104620 s e E F T P . c m \0 373 223 361 363 350 \0
0104640 \0 376 \0 273 227 362 F t p M a x c c
0104660 o n n / c A l t o s t o r e
0104700 / c E F T P . r u n E F T P
0104720 . s y m s ^ \r d u m p / c E
0104740 F T P p a c k a g e . d m P u
0104760 p E F T P . d e c l P u p E F
0105000 T P S e n d . b r P u p E F T
0105020 P R e c e i v e . b r P u p E
0105040 F T P C o m m o n . b r ^ \r c
0105060 o n n / c A l t o S o u r c e
0105100 d u m p / c E F T P S o u r
0105120 c e s . d m @ E F T P . c m @
0105140 \r 377 \0 \0 E F T P . c m \0 373 223 361 363
0105160 350 \0 \0 376 \0 216 032 _ P u p E F T P .
0105200 d e c l E F T P . b c p l E
0105220 F T P F i l e . b c p l P u p
0105240 E F T P S e n d . b c p l P u
0105260 p E F T P R e c e i v e . b c p
0105300 l P u p E F T P C o m m o n .
0105320 b c p l C o m p i l e E F T P
0105340 . c m L o a d E F T P . c m
0105360 R e l e a s e E F T P . c m E
0105400 F T P . c m 374
0105407