$ 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