$ od -c -N 50000 [Pixel]<IFS>IfsFtp.dm!1 0000000 377 \0 \0 I f s F t p P r o t . d e 0000020 c l \0 373 231 \f 034 273 \0 \0 376 001 \0 265 355 / 0000040 / I f s F t p P r o t . d e c 0000060 l - - D e c l a r a t i o n 0000100 s f o r t h e I f s i m 0000120 p l e m e n t a t i o n o f 0000140 F t p \r / / C o p y r i g h t 0000160 X e r o x C o r p o r a t i 0000200 o n 1 9 7 9 , 1 9 8 0 , 1 0000220 9 8 1 , 1 9 8 2 \r / / L a s 0000240 t m o d i f i e d M a y 1 0000260 4 , 1 9 8 2 1 : 1 0 P M 0000300 b y B o g g s \r \r g e t " 0000320 I f s R s . d e c l " \r \r / / 0000340 N o t e t h a t t h i s i 0000360 s s u b s t a n t i a l l y 0000400 d i f f e r e n t f r o m t 0000420 h e s t a n d a r d p a c 376 0000440 001 \0 017 335 k a g e . \r / / R e n 0000460 a m e t h i s f i l e t o 0000500 F t p P r o t . d e c l t h 0000520 e n c o m p i l e t h e F 0000540 t p p a c k a g e f o r I 0000560 f s . \r \r / / - - - - - - - - - 0000600 - - - - - - - - - - - - - - - - * 0000700 - - \r m a n i f e s t \t \t / / 0000720 p a c k a g e w i d e d e c 0000740 l a r a t i o n s \r / / - - - - 0000760 - - - - - - - - - - - - - - - - * 0001040 - - - - 376 001 \0 i 212 - - - - - - - 0001060 - - - - - - - - - - - - \r [ \r s 0001100 o c k e t F T P = 3 \t \t / / 0001120 w e l l k n o w n P u p 0001140 s o c k e t \r \r F T P V e r s i 0001160 o n = 1 \t \t / / F T P p 0001200 r o t o c o l v e r s i o n \r 0001220 M T P = t r u e \t \t / / c 0001240 o n t r o l s c o m p i l a t 0001260 i o n o f M T P c o d e \r 0001300 \r Q u o t e C h a r = $ ' \t 0001320 \t / / s t r i n g q u o t e 0001340 c h a r a c t e r \r \r / / d 0001360 a t a t y p e s \r U n s p e c 0001400 i f i e d = 0 \r T e x t = 0001420 1 \r B i n a r y = 2 \r \r / 0001440 / e n d o f 376 001 \0 \n s l i 0001460 n e c o n v e n t i o n s \r C 0001500 R = 1 \r C R L F = 2 \r T 0001520 r a n s p a r e n t = 3 \r ] 0001540 \r \f \r / / - - - - - - - - - - - 0001560 - - - - - - - - - - - - - - - - * 0001660 \r m a n i f e s t \r / / - - - - 0001700 - - - - - - - - - - - - - - - - * 0002000 - - - - - - - \r [ \r / / F T P 0002020 & M T P m a r k b y t e 0002040 s \r m a r k R e t r i e v e 376 001 0002060 \0 } 373 = 1 \r m a r k S t o r 0002100 e = 2 \t \t \t / / ' o l d ' 0002120 s t o r e p r o t o c o l \r m 0002140 a r k Y e s = 3 \r m a r k N 0002160 o = 4 \r m a r k H e r e I s 0002200 F i l e = 5 \r m a r k E n d 0002220 O f C o m m a n d = 6 \r m a 0002240 r k C o m m e n t = 7 \r m a 0002260 r k V e r s i o n = 1 0 b \r 0002300 m a r k N e w S t o r e = 1 0002320 1 b \t \t / / ' n e w ' s t o r 0002340 e p r o t o c o l \r m a r k D 0002360 i r e c t o r y = 1 2 b \t \t 0002400 / / ' o l d ' d i r e c t o r 0002420 y p r o t o c o l \r m a r k H 0002440 e r e I s P L i s t = 1 3 b 0002460 \r m a 376 001 \0 202 206 r k N e w D i r 0002500 e c t o r y = 1 4 b \t \t / / 0002520 ' n e w ' d i r e c t o r y 0002540 p r o t o c o l \r / / 1 5 b 0002560 i s a v a i l a b l e \r m a r 0002600 k D e l e t e = 1 6 b \r m a 0002620 r k R e n a m e = 1 7 b \r m 0002640 a r k S t o r e M a i l = 2 0002660 0 b \r m a r k R e t r i e v e M 0002700 a i l = 2 1 b \r m a r k F l 0002720 u s h M a i l B o x = 2 2 b 0002740 \r m a r k M a i l b o x E x c e 0002760 p t i o n = 2 3 b \r n u m M 0003000 a r k s = M T P ? 2 3 b , 0003020 1 7 b \r ] \r \r / / - - - - - - 0003040 - - - - - - - - - - - - - - - - 0003060 - - - - - - - - 376 001 \0 \r 213 - - - 0003100 - - - - - - - - - - - - - - - - * 0003140 - - - - - - - - - - \r s t r u c 0003160 t u r e M a r k [ s u b C 0003200 o d e b y t e ; m a r k b 0003220 y t e ] \r / / - - - - - - - - 0003240 - - - - - - - - - - - - - - - - * 0003340 - - - \r \r / / - - - - - - - - - 0003360 - - - - - - - - - - - - - - - - * 0003460 - - \r s t r u c t u r e 376 001 \0 0003500 0 004 M T : \t / / M a r k T a 0003520 b l e \r / / - - - - - - - - - - 0003540 - - - - - - - - - - - - - - - - * 0003640 - \r [ \r s t r i n g w o r d \t 0003660 / / - > s t r i n g \r c o d 0003700 e b y t e \t / / m a r k b 0003720 y t e v a l u e \r q B i t s 0003740 b y t e = \t / / q u a l i f 0003760 y i n g b i t s \r [ \r 0004000 b l a n k b i t 5 \r 0004020 p t x b i t \t / / p r i n 0004040 t t e x t a f t e r t h i 0004060 s m a r k \r n f b i t 0004100 \t / 376 001 \0 370 233 / d o n t f e 0004120 t c h b y t e s p a s t t 0004140 h i s m a r k \r s c b 0004160 i t \t / / s u b c o d e b y 0004200 t e f o l l o w s t h i s 0004220 m a r k \r ] \r ] ^ 1 , n 0004240 u m M a r k s \r m a n i f e s t 0004260 l e n M T = s i z e M T 0004300 / 1 6 \r \r m a n i f e s t \r [ \r 0004320 / / M T q u a l i f y i n g 0004340 b i t s \r p t x = 1 b 1 5 0004360 r s h i f t ( o f f s e t 0004400 M T . p t x ^ 1 r e m 1 6 ) 0004420 \r n f = 1 b 1 5 r s h i f 0004440 t ( o f f s e t M T . n f ^ 0004460 1 r e m 1 6 ) \r s c = 1 0004500 b 1 5 r s h 376 001 \0 = 246 i f t 0004520 ( o f f s e t M T . s c ^ 1 0004540 r e m 1 6 ) \r ] \r \f \r / / - - 0004560 - - - - - - - - - - - - - - - - * 0004660 - - - - - - - - - \r s t r u c t 0004700 u r e T i m e [ h w o r 0004720 d ; l w o r d ] \r / / - - 0004740 - - - - - - - - - - - - - - - - * 0005040 - - - - - - - - - \r \r / / - - - 0005060 - - - - - - - - - - - - - - - - 0005100 - - - - - - - - - - - - 376 001 \0 \f 0005120 332 - - - - - - - - - - - - - - - 0005140 - - - - - - - - - - - - - - - - * 0005200 - - - - - - - - - - - \r s t r u 0005220 c t u r e D P R P : \r / / - - 0005240 - - - - - - - - - - - - - - - - * 0005360 - - - - - - - \r [ \r b l a n k 0005400 b i t 2 \r S F I L b i t \t / 0005420 / S e r v e r - F i l e n a m 0005440 e \r D E V I b i t \t / / D e 0005460 v i c e \r D I R E b i t \t / / 0005500 D i r e c t o r y \r N A M B 0005520 b 376 001 \0 351 ; i t \t / / N a m e 0005540 - B o d y \r V E R S b i t \t / 0005560 / V e r s i o n \r T Y P E b 0005600 i t \t / / T y p e \r B Y T E 0005620 b i t \t / / B y t e - s i z e 0005640 \r E O L C b i t \t / / E n d 0005660 - o f - l i n e - c o n v e n t 0005700 i o n \r S I Z E b i t \t / / 0005720 S i z e \r A U T H b i t \t / / 0005740 A u t h o r \r C D A T b i t 0005760 \t / / C r e a t i o n - d a t 0006000 e \r R D A T b i t \t / / R e 0006020 a d - d a t e \r W D A T b i t 0006040 \t / / W r i t e - d a t e \r C 0006060 S U M b i t \t / / C h e c k 0006100 s u m \r ] \r \r / / - - - - - - - 0006120 - - - - - - 376 001 \0 210 Y - - - - - 0006140 - - - - - - - - - - - - - - - - * 0006220 - - - - - - - - - \r s t r u c t 0006240 u r e F P L : / / F i l 0006260 e P r o p e r t y L i s t \r 0006300 / / - - - - - - - - - - - - - - 0006320 - - - - - - - - - - - - - - - - * 0006400 - - - - - - - - - - - - - \r [ \r 0006420 U N A M w o r d \t / / U s e 0006440 r - N a m e < S t r i n g > \r 0006460 U P S W w o r d \t / / U s e 0006500 r - P a s s w o r d < S t r i 0006520 n g > \r C N A M w o 376 001 \0 \r 377 0006540 r d \t / / C o n n e c t - n a 0006560 m e < S t r i n g > \r C P S W 0006600 w o r d \t / / C o n n e c t 0006620 - p a s s w o r d < S t r i n 0006640 g > \r S F I L w o r d \t / / 0006660 S e r v e r - F i l e n a m e 0006700 < S t r i n g > \r D E V I w o 0006720 r d \t / / D e v i c e < S t 0006740 r i n g > \r D I R E w o r d \t 0006760 / / D i r e c t o r y < S t 0007000 r i n g > \r N A M B w o r d \t 0007020 / / N a m e - B o d y < S t 0007040 r i n g > \r V E R S w o r d \t 0007060 / / v e r s i o n < S t r i 0007100 n g > \r T Y P E w o r d \t / / 0007120 T y p e < T e x t | B i n a 0007140 376 001 \0 217 332 r y | U n s p e c i f 0007160 e d > \r B Y T E w o r d \t / / 0007200 B y t e - s i z e < N u m b 0007220 e r > \r E O L C w o r d \t / / 0007240 E n d - o f - l i n e - c o n 0007260 v e n t i o n < C R | C R L F 0007300 | T r a n s p a r e n t > \r S I 0007320 Z E w o r d 2 \t / / S i z 0007340 e < N u m b e r > \r A U T H 0007360 w o r d \t / / A u t h o r < 0007400 S t r i n g > \r C D A T @ T i 0007420 m e \t / / c r e a t i o n - d 0007440 a t e < A l t o f o r m a t 0007460 d a t e > \r R D A T @ T i m 0007500 e \t / / r e a d - d a t e < 0007520 A l t o f o r m a t d a t e 0007540 > \r W D A 376 001 \0 016 333 T @ T i m 0007560 e \t / / w r i t e - d a t e 0007600 < A l t o f o r m a t d a t 0007620 e > \r C S U M w o r d \t / / 0007640 C h e c k s u m < N u m b e r 0007660 > \r D P R P @ D P R P \t / / 0007700 D e s i r e d - P r o p e r t y 0007720 < p r o p e r t y n a m e > 0007740 \r ] \r \r / / - - - - - - - - - - 0007760 - - - - - - - - - - - - - - - - * 0010060 - \r s t r u c t u r e M P L : 0010100 \t / / M a i l P r o p e r t 0010120 y L i s t \r / / - - - - - - - 0010140 - - - - - - - - - - 376 001 \0 002 0 - 0010160 - - - - - - - - - - - - - - - - * 0010240 - - - - - - - - - \r [ \r M L B X 0010260 w o r d \t / / M a i l b o x 0010300 < s t r i n g > \r L G T H w 0010320 o r d 2 \t / / L e n g t h 0010340 < N u m b e r > \r R C V D @ T 0010360 i m e \t / / D a t e - R e c e 0010400 i v e d < A l t o f o r m a 0010420 t d a t e > \r S N D R w o r 0010440 d \t / / S e n d e r < s t r 0010460 i n g > \r ] \r \r / / - - - - - - 0010500 - - - - - - - - - - - - - - - - * 0010540 - - - - - - - - - - - - - - - 376 0010560 001 \0 375 216 - - - - - - - - - - - - 0010600 - - - - - - - - - - \r c o m p i 0010620 l e t e s t M T P \r i f 0010640 s o [ s t r u c t u r e 0010660 P L [ @ F P L ; @ M P L 0010700 ] ] \r i f n o t [ s 0010720 t r u c t u r e P L [ @ F 0010740 P L ] ] \r / / - - - - - - - 0010760 - - - - - - - - - - - - - - - - * 0011060 - - - - \r m a n i f e s t l e 0011100 n P L = s i z e P L / 1 6 0011120 \r \f \r / / - - - - - - - - - - - 0011140 - - - - - - - - - - - - - - - - 0011160 - - - - 376 001 \0 252 8 - - - - - - - 0011200 - - - - - - - - - - - - - - - - * 0011240 - - - - - \r s t r u c t u r e 0011260 P r o p : \t \t / / a n o b j 0011300 e c t \r / / - - - - - - - - - - 0011320 - - - - - - - - - - - - - - - - * 0011420 - \r [ \r S c a n w o r d \t \t / 0011440 / c a l l 0 \r G e n w o r 0011460 d \t \t / / c a l l 1 \r F r e 0011500 e w o r d \t \t / / c a l l 0011520 2 \r I n i t w o r d \t \t / / 0011540 c a l l 3 \r p O f f s e t w 0011560 o r d \t \t / / w 376 001 \0 G 354 o r 0011600 d o f f s e t i n t o p L 0011620 i s t \r p E r r S u b C o d e 0011640 w o r d \t / / m a r k N o s 0011660 u b c o d e \r p D P R P w o r 0011700 d \t \t / / D P R P b i t v 0011720 e c t o r \r p E x t r a w o r 0011740 d \t \t / / o b j e c t p r i 0011760 v a t e i n t e r p r e t a t 0012000 i o n \r ] \r m a n i f e s t l 0012020 e n P r o p = s i z e P r 0012040 o p / 1 6 \r \r / / - - - - - - - 0012060 - - - - - - - - - - - - - - - - * 0012160 - - - - \r s t r u c t u r e 376 001 0012200 \0 325 ] F T P S F I : \t / / F 0012220 t p S e r v e r F i l e I 0012240 n t e r f a c e \r / / - - - - - 0012260 - - - - - - - - - - - - - - - - * 0012360 - - - - - - \r [ \r V e r s i o n 0012400 w o r d \t \t / / V e r s i o 0012420 n ( b s p S t r e a m , n i l ) 0012440 \r S t o r e w o r d \t \t / / 0012460 S t o r e ( p L i s t ) = t 0012500 r u e | f a l s e \r S t o r e F 0012520 i l e w o r d \t \t / / S t o 0012540 r e F i l e ( p L i s t ) = 0012560 t r u e | f a l s e \r S t o r e 0012600 C l e 376 001 \0 254 371 a n u p w o r 0012620 d \t / / S t o r e C l e a n u 0012640 p ( p L i s t , o k ) \r R e t r 0012660 i e v e w o r d \t \t / / R e 0012700 t r i e v e ( l o c a l P L i s 0012720 t , r e m o t e P L i s t ) = 0012740 t r u e | f a l s e \r R e t r 0012760 i e v e F i l e w o r d \t / / 0013000 R e t r i e v e F i l e ( l o 0013020 c a l P L i s t ) = t r u e 0013040 | f a l s e \r R e t r i e v e C 0013060 l e a n u p w o r d \t / / R 0013100 e t r i e v e C l e a n u p ( l 0013120 o c a l P L i s t , o k ) \r D e 0013140 l e t e w o r d \t \t / / D e 0013160 l e t e ( l o c a l P L i s t , 0013200 r e m o t e P L 376 001 \0 D d i s t 0013220 ) = t r u e | f a l s e \r D 0013240 e l e t e F i l e w o r d \t \t 0013260 / / D e l e t e F i l e ( l o 0013300 c a l P L i s t ) = t r u e 0013320 | f a l s e \r D i r e c t o r y 0013340 w o r d \t \t / / D i r e c t 0013360 o r y ( l o c a l P L i s t , r 0013400 e m o t e P L i s t ) = t r 0013420 u e | f a l s e \r R e n a m e 0013440 w o r d \t \t / / R e n a m e ( 0013460 o l d P L i s t , n e w P L i s 0013500 t ) = t r u e | f a l s e \r 0013520 ] \r \r / / - - - - - - - - - - - 0013540 - - - - - - - - - - - - - - - - * 0013600 - - - - - - - - - - - - - 376 001 \0 0013620 253 305 - - - - - - - - - - - - - - 0013640 - - - - - \r s t r u c t u r e 0013660 F T P S M I : \t / / F t p S 0013700 e r v e r M a i l I n t e r 0013720 f a c e \r / / - - - - - - - - - 0013740 - - - - - - - - - - - - - - - - * 0014040 - - \r [ \r S t o r e M a i l w 0014060 o r d \t \t / / S t o r e M a i 0014100 l ( p L i s t ) = t r u e | 0014120 f a l s e \r S t o r e M a i l M 0014140 e s s a g e w o r d \t / / S 0014160 t o r e M a i l M e s s a g e ( 0014200 ) = t r u e | f a l s e \r S 0014220 t o 376 001 \0 p 336 r e M a i l C l e 0014240 a n u p w o r d \t / / S t o 0014260 r e M a i l C l e a n u p ( o k 0014300 ) \r R e t r i e v e M a i l w 0014320 o r d \t / / R e t r i e v e M 0014340 a i l ( p L i s t ) = p L i 0014360 s t | f a l s e \r R e t r i e v 0014400 e M a i l M e s s a g e w o r 0014420 d / / R e t r i e v e M a i 0014440 l M e s s a g e ( l o c a l P L 0014460 i s t , r e m o t e P L i s t ) 0014500 = t | f \r R e t r i e v e M 0014520 a i l C l e a n u p w o r d 0014540 / / R e t r i e v e M a i l C 0014560 l e a n u p ( r e m o t e P L i 0014600 s t , o k ) \r ] \r \r / / - - - - 0014620 - - - - - - - 376 001 \0 = < - - - - 0014640 - - - - - - - - - - - - - - - - * 0014720 - - - - - - - - - - - - \r c o m 0014740 p i l e t e s t M T P \t \t / / 0014760 F t p S e r v e r I n t e 0015000 r f a c e \r i f s o [ 0015020 s t r u c t u r e F T P S I 0015040 [ @ F T P S F I ; @ F T P 0015060 S M I ] ] \r i f n o t 0015100 [ s t r u c t u r e F T P 0015120 S I [ @ F T P S F I ] ] 0015140 \r / / - - - - - - - - - - - - - 0015160 - - - - - - - - - - - - - - - - * 0015220 - - - - - - - - - - - - 376 001 \0 ] 0015240 023 - - - - - - - - - - - - - - - 0015260 - - - \r m a n i f e s t l e n 0015300 F T P S I = s i z e F T P 0015320 S I / 1 6 \r \f \r / / - - - - - - 0015340 - - - - - - - - - - - - - - - - * 0015440 - - - - - \r s t r u c t u r e 0015460 F T P I : \t \t / / F t p I n 0015500 t e r f a c e \r / / - - - - - - 0015520 - - - - - - - - - - - - - - - - * 0015620 - - - - - \r [ \r d s p S t r e a 0015640 m 376 001 \0 366 305 w o r d \t \t / / 0015660 - > d i s p l a y s t r e a 0015700 m \r b s p S t r e a m w o r d 0015720 \t \t / / - > b s p S t r e 0015740 a m \r l s t w o r d \t \t / / 0015760 - > l o g s t r e a m \r d l 0016000 s w o r d \t \t / / - > d e 0016020 b u g g i n g s t r e a m \r d 0016040 b l s w o r d \t \t / / - > 0016060 b s p a n d d e b u g g i n 0016100 g s t r e a m \r g e t C m d S 0016120 t r i n g w o r d \t / / - > 0016140 l a s t s t r i n g r e a 0016160 d b y G e t C o m m a n d \r 0016200 f l a g s w o r d = \r 0016220 [ \r d e b u g F l a g b 0016240 i t \t / / 376 001 \0 245 # t r u e 0016260 e n a b l e s l o t s o f 0016300 e x t r a p r i n t o u t \r 0016320 s e r v e r F l a g b i t 0016340 \t / / t r u e i f t h i s 0016360 i s a s e r v e r \r 0016400 n e w D i r e c t o r y b i t 0016420 \t / / s e r v e r i m p l e 0016440 m e n t s m a r k N e w D i r 0016460 e c t o r y \r n e w S t o 0016500 r e b i t \t \t / / s e r v e 0016520 r i m p l e m e n t s m a r 0016540 k N e w S t o r e \r b l a 0016560 n k b i t 1 2 \r ] \r @ 0016600 F T P S I \t \t \t / / s e r v e 0016620 r i n t e r f a c e \r ] \r m a 0016640 n i f e s t l e n F 376 001 \0 321 372 0016660 T P I = s i z e F T P I / 0016700 1 6 \r \r / / - - - - - - - - - - 0016720 - - - - - - - - - - - - - - - - * 0017020 - \r s t r u c t u r e F t p C 0017040 t x : \t / / F t p C o n t e 0017060 x t \r / / - - - - - - - - - - - 0017100 - - - - - - - - - - - - - - - - * 0017200 \r [ \r @ R S C t x \r f t p i w 0017220 o r d = @ F T P I \r [ 0017240 \r d i s k S t r e a m w 0017260 376 001 \0 x 016 o r d \t / / - > d 0017300 i s k s t r e a m \r f d 0017320 w o r d \t \t / / - > I F S 0017340 f i l e d e s c r i p t o r 0017360 \r ] = \r [ \r 0017400 m s g w o r d \t \t / / - > 0017420 M s g d e s c r i p t o r \r 0017440 i n d e x w o r d \t \t / / 0017460 m a i l b o x i n d e x \r 0017500 ] \r ] \r m a n i f e s t l 0017520 e n E x t r a F t p C t x = 0017540 s i z e F t p C t x / 1 6 - 3 0017560 \r \r m a n i f e s t \r [ \r / / 0017600 F i l e S e r v e r e r r o 0017620 r c o d e s \r e c B i n a r y 0017640 N o t T e x t = 6 0 1 \t / / 0017660 1 0 2 376 001 \0 234 \b f i l e t 0017700 y p e i s B i n a r y n o 0017720 t T e x t \r e c M a y B e T e 0017740 x t = 6 0 2 \t / / W a r n 0017760 i n g : $ S m a y b e t 0020000 y p e T e x t \r e c C R L F C 0020020 o n v e r s i o n = 6 0 3 \t 0020040 / / 1 0 2 C R L F c o n v 0020060 e r s i o n n o t s u p p o 0020100 r t e d \r e c B y t e S i z e 0020120 = 6 0 4 \t / / 1 0 2 r e q 0020140 u e s t e d b y t e s i z e 0020160 n o t e q u a l t o f i 0020200 l e b y t e s i z e \r e c T 0020220 y p e R e q u i r e d = 6 0 0020240 5 \t / / 1 0 2 T Y P E p r 0020260 o p e r t y r e q 376 001 \0 255 233 u 0020300 i r e d \r e c B y t e R e q u i 0020320 r e d = 6 0 6 \t / / 1 0 2 0020340 B Y T E - S I Z E p r o p e 0020360 r t y r e q u i r e d \r e c N 0020400 o t R e t r i e v e d = 6 0 0020420 7 \t / / 1 1 0 $ S n o t 0020440 r e t r i e v e d : $ P \r e c 0020460 N o t I m p l e m e n t e d = 0020500 6 0 8 \t / / 1 U n i m p l 0020520 e m e n t e d c o m m a n d \r 0020540 e c N o t S t o r e d = 6 0 0020560 9 \t / / 1 0 7 n o t s t o 0020600 r e d : $ P \r e c N e t T o D 0020620 i s k = 6 1 0 \t / / 1 1 0 0020640 B S P R e a d B l o c k f a 0020660 i l e d \r e c D i s k T o N e 376 0020700 \0 Y d f t = 6 1 1 \t / / 1 0020720 1 0 B S P W r i t e B l o c k 0020740 f a i l e d \r e c F i l e D a 0020760 m a g e d = 6 1 2 \t / / C 0021000 a u t i o n : f i l e $ S 0021020 i s d a m a g e d \r ] \r 377 \0 \0 0021040 I f s F t p I n i t . b c p l \0 0021060 373 231 \n 331 275 \0 \0 376 001 \0 345 340 / / I 0021100 f s F t p I n i t . b c p l - 0021120 F i l e S e r v e r i n i 0021140 t i a l i z a t i o n \r / / C 0021160 o p y r i g h t X e r o x C 0021200 o r p o r a t i o n 1 9 7 9 , 0021220 1 9 8 0 , 1 9 8 2 \r / / L 0021240 a s t m o d i f i e d M a y 0021260 1 3 , 1 9 8 2 2 : 1 0 0021300 P M b y B o g g s \r \r g e t 0021320 " I f s F t p P r o t . d e c 0021340 l " \r g e t " S t r e a m s . 0021360 d " \r \r e x t e r n a l \r [ \r / 0021400 / o u t g o i n g p r o c e 0021420 d u r e s \r I n i t F t p S e r 0021440 v \r \r / / i n c o m i n g p 0021460 r o c e d u r e s \r I f 376 001 \0 223 0021500 200 s F t p S e r v \r A l l o c a 0021520 t e ; E n q u e u e ; O p e 0021540 n L e v e l 1 S o c k e t \r I n 0021560 i t F t p U t i l ; I n i t F 0021600 t p P L i s t \r S e t B l o c k 0021620 ; Z e r o ; N o o p ; S y 0021640 s E r r \r \r / / p r o c e d u 0021660 r e s e x t e r n a l o n l 0021700 y f o r O E P d e c l a r 0021720 a t i o n s \r F t p S V e r s i 0021740 o n ; F t p S D i r e c t o r 0021760 y ; F t p S R e n a m e \r F t 0022000 p S R e t r i e v e ; F t p S 0022020 R e t r i e v e F i l e \r F t p 0022040 S S t o r e ; F t p S S t o r 0022060 e F i l e ; F t p S S t o r e 0022100 C 376 001 \0 235 l e a n u p \r F t p 0022120 S D e l e t e ; F t p S D e l 0022140 e t e F i l e ; F t p S N o t 0022160 I m p l \r \r / / o u t g o i n 0022200 g s t a t i c s \r d F T P I \r 0022220 \r / / i n c o m i n g s t a 0022240 t i c s \r s y s Z o n e ; r s 0022260 Q ; l P u p S o c \r ] \r \r s t 0022300 a t i c d F T P I \r \f \r / / - 0022320 - - - - - - - - - - - - - - - - * 0022420 - - - - - - - - - - \r l e t I 0022440 n i t F t p S e r v ( ) b e \r 0022460 / / - - - - - - - - - - - - - - 0022500 - - - - - - 376 001 \0 017 275 - - - - - 0022520 - - - - - - - - - - - - - - - - * 0022600 - - \r [ \r / / r e g i s t e r 0022620 t h e F T P s o c k e t 0022640 w i t h t h e s o c k e t 0022660 m a n a g e r \r l e t r s = 0022700 A l l o c a t e ( s y s Z o n 0022720 e , l e n R S ) ; Z e r o ( 0022740 r s , l e n R S ) \r r s > > R 0022760 S . p r o c = I f s F t p S 0023000 e r v \r r s > > R S . s o c = 0023020 A l l o c a t e ( s y s Z o n 0023040 e , l P u p S o c ) \r O p e n 0023060 L e v e l 1 S o c k e t ( r s > 0023100 > R S . s o c , t a 376 001 \0 226 301 0023120 b l e [ 0 ; 0 ; s o c k 0023140 e t F T P ] ) \r r s > > R S . 0023160 e x t r a S p a c e = l e n 0023200 E x t r a F t p C t x \r r s > > 0023220 R S . t y p e = j o b T y p 0023240 e F T P \r E n q u e u e ( r s Q 0023260 , r s ) \r \r / / F t p p a 0023300 c k a g e i n i t i a l i z a 0023320 t i o n \r I n i t F t p U t i l 0023340 ( ) \r I n i t F t p P L i s t ( 0023360 ) \r \r / / b u i l d t h e 0023400 d e f a u l t F t p I n t e 0023420 r f a c e \r d F T P I = A l 0023440 l o c a t e ( s y s Z o n e , 0023460 l e n F T P I ) ; Z e r o ( d 0023500 F T P I , l e n F T P I ) \r d 0023520 376 001 \0 Y $ F T P I > > F T P I . 0023540 d s p S t r e a m = l v N 0023560 o o p - o f f s e t S T . 0023600 p u t s / 1 6 \r d F T P I > > F 0023620 T P I . l s t = l v N o o 0023640 p - o f f s e t S T . p u 0023660 t s / 1 6 \r d F T P I > > F T P 0023700 I . d l s = l v N o o p 0023720 - o f f s e t S T . p u t s 0023740 / 1 6 \r d F T P I > > F T P I . 0023760 V e r s i o n = F t p S V e 0024000 r s i o n \r d F T P I > > F T P 0024020 I . S t o r e = F t p S S t 0024040 o r e \r d F T P I > > F T P I . 0024060 S t o r e F i l e = F t p S 0024100 S t o r e F i l e \r d F T P I > 0024120 > F T P I 376 001 \0 I 031 . S t o r e 0024140 C l e a n u p = F t p S S t 0024160 o r e C l e a n u p \r d F T P I 0024200 > > F T P I . R e t r i e v e 0024220 = F t p S R e t r i e v e \r d 0024240 F T P I > > F T P I . R e t r i 0024260 e v e F i l e = F t p S R e 0024300 t r i e v e F i l e \r d F T P I 0024320 > > F T P I . R e t r i e v e C 0024340 l e a n u p = N o o p \r d F 0024360 T P I > > F T P I . D e l e t e 0024400 = F t p S D e l e t e \r d F 0024420 T P I > > F T P I . D e l e t e 0024440 F i l e = F t p S D e l e t 0024460 e F i l e \r d F T P I > > F T P 0024500 I . D i r e c t o r y = F t 0024520 p S D i r e c t o r 376 \0 w 4 y y 0024540 \r d F T P I > > F T P I . R e n 0024560 a m e = F t p S R e n a m e 0024600 \r d F T P I > > F T P I . S t o 0024620 r e M a i l = F t p S N o t 0024640 I m p l \r d F T P I > > F T P I 0024660 . R e t r i e v e M a i l = 0024700 F t p S N o t I m p l \r ] \r 032 ( 0024720 1 8 0 0 ) \r 377 \0 \0 I f s F t p S 0024740 e r v . b c p l \0 373 231 \n 332 005 \0 \0 0024760 376 001 \0 205 = / / I f s F t p S e 0025000 r v . b c p l - I F S F t 0025020 p S e r v e r \r / / C o p y 0025040 r i g h t X e r o x C o r p 0025060 o r a t i o n 1 9 7 9 , 1 9 0025100 8 0 , 1 9 8 1 , 1 9 8 2 \r / 0025120 / L a s t m o d i f i e d 0025140 M a y 1 3 , 1 9 8 2 2 : 0025160 1 3 P M b y B o g g s \r \r 0025200 g e t " I f s F t p P r o t . 0025220 d e c l " \r g e t " I f s F i 0025240 l e s . d e c l " \r \r e x t e r 0025260 n a l \r [ \r / / o u t g o i n 0025300 g p r o c e d u r e s \r I f s 0025320 F t p S e r v \r \r / / i n c o 0025340 m i n g p r o c e d u r e s \r 0025360 F t p S e 376 001 \0 220 330 r v P r o t 0025400 \r C r e a t e U s e r I n f o ; 0025420 D e s t r o y U s e r I n f o 0025440 \r F r e e P o i n t e r ; D e 0025460 s t r o y J o b ; M o v e B l 0025500 o c k \r \r / / i n c o m i n g 0025520 s t a t i c s \r d F T P I ; 0025540 o f f s e t B S P S t r \r ] \r \r 0025560 / / - - - - - - - - - - - - - - 0025600 - - - - - - - - - - - - - - - - * 0025660 - - - - - - - - - - - - - \r l e 0025700 t I f s F t p S e r v ( c t x 0025720 ) b e / / a c o n t e x 0025740 t \r / / - - - - - - - - - - - - 0025760 - - - - - - - - - - 376 001 \0 346 200 - 0026000 - - - - - - - - - - - - - - - - * 0026060 - - - - \r [ \r M o v e B l o c k 0026100 ( l v c t x > > F t p C t x . 0026120 f t p i , d F T P I , l e n 0026140 F T P I ) \r c t x > > F t p C t 0026160 x . b s p S t r e a m = c t 0026200 x > > F t p C t x . b s p S o c 0026220 + o f f s e t B S P S t r \r 0026240 c t x > > F t p C t x . d b l s 0026260 = c t x > > F t p C t x . b 0026300 s p S t r e a m \r c t x > > F t 0026320 p C t x . u s e r I n f o = 0026340 C r e a t e U s e r I n f o ( ) 0026360 \r c t x > > F t p C t x . f d 376 0026400 \0 204 301 310 = 0 \r F t p S e r v 0026420 P r o t ( 1 8 0 0 0 ) / / m 0026440 a i n l o o p i s i n h 0026460 e r e . 1 8 0 0 0 = 3 0026500 m i n u t e s \r D e s t r o y U 0026520 s e r I n f o ( c t x > > F t p 0026540 C t x . u s e r I n f o ) \r D e 0026560 s t r o y J o b ( ) / / s u 0026600 i c i d e \r ] \r 377 \0 \0 I f s F t 0026620 p S t o r e . b c p l \0 373 233 236 \t 0026640 ? \0 \0 376 001 \0 256 355 / / I f s F t 0026660 p S t o r e . b c p l - - I 0026700 F S F t p S t o r e c o m 0026720 m a n d \r / / C o p y r i g h 0026740 t X e r o x C o r p o r a t 0026760 i o n 1 9 7 9 , 1 9 8 0 , 0027000 1 9 8 1 , 1 9 8 2 , 1 9 8 3 0027020 \r / / L a s t m o d i f i e 0027040 d S e p t e m b e r 2 3 , 0027060 1 9 8 3 6 : 0 9 P M b y 0027100 T a f t \r \r g e t " I f s . 0027120 d e c l " \r g e t " I f s D i 0027140 r s . d e c l " \r g e t " I f 0027160 s F i l e s . d e c l " \r g e t 0027200 " I f s F t p P r o t . d e c 0027220 l " \r \r e x t e r n a l \r [ \r / 0027240 / o u t g o i 376 001 \0 7 317 n g 0027260 p r o c e d u r e s \r F t p S S 0027300 t o r e ; F t p S S t o r e F 0027320 i l e ; F t p S S t o r e C l 0027340 e a n u p ; F t p S S e t P r 0027360 o p s \r \r / / i n c o m i n g 0027400 p r o c e d u r e s f r o m 0027420 o t h e r F t p f i l e s 0027440 \r F t p S M a k e S F I L ; F 0027460 t p S S e n d M a r k \r F t p S 0027500 C h e c k A c c e s s ; F t p 0027520 S F i l l P L F r o m L D \r N e 0027540 t T o D i s k ; F r e e P L i 0027560 s t \r \r / / i n c o m i n g 0027600 p r o c e d u r e s f r o m 0027620 I F S D i r s \r I F S O p e n 0027640 F i l e ; D e l e t e F 376 001 \0 0027660 ` 232 i l e F r o m F D ; G e t 0027700 B u f f e r F o r F D \r S t r e 0027720 a m s F D ; D e s t r o y F D 0027740 \r C l o s e I F S S t r e a m ; 0027760 C l o s e I F S F i l e ; T 0030000 r a n s f e r L e a d e r P a g 0030020 e \r \r / / i n c o m i n g p 0030040 r o c e d u r e s - m i s c 0030060 e l l a n e o u s \r S y s F r e 0030100 e ; M o v e B l o c k ; I F 0030120 S P r i n t E r r o r ; C o p 0030140 y S t r i n g ; F r e e P o i 0030160 n t e r ; E x t r a c t S u b 0030200 s t r i n g \r \r / / i n c o m 0030220 i n g s t a t i c s \r C t x R 0030240 u n n i n g \r ] \r \f \r / / - - - 0030260 - - 376 001 \0 035 325 - - - - - - - - - 0030300 - - - - - - - - - - - - - - - - * 0030360 - - - - - - - - - - - - - \r l e 0030400 t F t p S S t o r e ( r e m o 0030420 t e P L ) = v a l o f \r / / 0030440 - - - - - - - - - - - - - - - - * 0030540 - - - - - - - - - - - \r [ \r u n 0030560 l e s s F t p S C h e c k A c 0030600 c e s s ( r e m o t e P L ) r 0030620 e s u l t i s f a l s e \r \r s 0030640 w i t c h o n r e m o t e P L 0030660 > > P L . T Y 376 001 \0 * B P E i 0030700 n t o \r [ \r c a s e 0030720 U n s p e c i f i e d : \r 0030740 r e s u l t i s F t p 0030760 S S e n d M a r k ( m a r k N o 0031000 , e c T y p e R e q u i r e d 0031020 ) \r c a s e T e x t : \r 0031040 i f r e m o t e P 0031060 L > > P L . E O L C e q C R 0031100 L F t h e n \r 0031120 r e s u l t i s F t p S S e 0031140 n d M a r k ( m a r k N o , e 0031160 c C R L F C o n v e r s i o n ) 0031200 \r e n d c a s e \r 0031220 c a s e B i n a r y : \r 0031240 i f r e m o t e P L 0031260 > > P L . B Y T E e q 376 001 \0 b 0031300 026 0 t h e n \r 0031320 r e s u l t i s F t p S S 0031340 e n d M a r k ( m a r k N o , 0031360 e c B y t e R e q u i r e d ) \r 0031400 e n d c a s e \r 0031420 ] \r \r F t p S M a k e S F I L 0031440 ( r e m o t e P L ) \r l e t e 0031460 c = n i l \r C t x R u n n i 0031500 n g > > F t p C t x . d i s k S 0031520 t r e a m = I F S O p e n F 0031540 i l e ( r e m o t e P L > > P L 0031560 . S F I L , l v e c , \r m 0031600 o d e W r i t e , 0 , 0 , 0031620 0 , r e m o t e P L > > P L . 0031640 D I R E ) \r i f C t x R u n n 0031660 i n g > > F t p C t x . d i s k 0031700 S 376 001 \0 374 016 t r e a m e q 0 0031720 t h e n r e s u l t i s F 0031740 t p S S e n d M a r k ( m a r k 0031760 N o , e c ) \r \r / / o b t a 0032000 i n p r o p e r t i e s f o 0032020 r t h e a c t u a l f i l 0032040 e t h a t w a s c r e a t 0032060 e d \r C t x R u n n i n g > > F 0032100 t p C t x . f d = S t r e a 0032120 m s F D ( C t x R u n n i n g > 0032140 > F t p C t x . d i s k S t r e 0032160 a m ) \r l e t l o c a l P L 0032200 = F t p S F i l l P L F r o m 0032220 L D ( r e m o t e P L ) / / 0032240 c a n ' t f a i l , f i l 0032260 e i s l o c k e d \r \r / / 0032300 n o w c o 376 001 \0 004 255 p y u s 0032320 e r ' s p r o p e r t i e s 0032340 t h a t w e w i l l p u t 0032360 i n f i l e o n c e i t 0032400 g e t s s t o r e d . \r / / 0032420 N o t e t h a t w e d o 0032440 n ' t s e t t h e s e p r 0032460 o p e r t i e s n o w , b e 0032500 c a u s e t h e u s e r s 0032520 t i l l h a s \r / / a c h 0032540 a n c e t o a b a n d o n 0032560 t h e s t o r e a n d w e 0032600 d o n ' t w a n t t o m 0032620 o d i f y t h e f i l e y 0032640 e t . \r l o c a l P L > > P L . 0032660 T Y P E = r e m o t e P L > 0032700 > P L . T Y P E \r l o 376 001 \0 201 \t 0032720 c a l P L > > P L . B Y T E = 0032740 r e m o t e P L > > P L . B Y 0032760 T E \r i f r e m o t e P L > > 0033000 P L . C D A T . h n e 0 t 0033020 h e n \r M o v e B l o c k 0033040 ( l v l o c a l P L > > P L . 0033060 C D A T , l v r e m o t e P 0033100 L > > P L . C D A T , 2 ) \r M 0033120 o v e B l o c k ( l v l o c a 0033140 l P L > > P L . S I Z E , l v 0033160 r e m o t e P L > > P L . S I 0033200 Z E , 2 ) / / t h i s 0033220 i s a l i e - - \r / 0033240 / s i z e w i l l b e d 0033260 e t e r m i n e d b y t h e 0033300 n u m b e r o f b y t e s 0033320 376 001 \0 245 \ t h e u s e r a 0033340 c t u a l l y s e n d s . \r i 0033360 f r e m o t e P L > > P L . A 0033400 U T H n e 0 t h e n \r 0033420 [ \r F r e e P o i n t e 0033440 r ( l v l o c a l P L > > P L 0033460 . A U T H ) \r l o c a l P 0033500 L > > P L . A U T H = E x t 0033520 r a c t S u b s t r i n g ( r e 0033540 m o t e P L > > P L . A U T H ) 0033560 \r ] \r l o c a l P L > > P 0033600 L . C S U M = r e m o t e P 0033620 L > > P L . C S U M \r \r r e s u 0033640 l t i s l o c a l P L \r ] \r \f 0033660 \r / / - - - - - - - - - - - - - 0033700 - - - - - - - - - - - - - - - - 0033720 - - - - - 376 001 \0 340 254 - - - - - - 0033740 - - - - - - - - - - - - - - - - * 0034000 - - - \r a n d F t p S S t o r 0034020 e F i l e ( r e m o t e P L , 0034040 l o c a l P L ) = v a l o f 0034060 \r / / - - - - - - - - - - - - - 0034100 - - - - - - - - - - - - - - - - * 0034160 - - - - - - - - - - - - - - \r [ 0034200 \r / / S e t a n y f i l e 0034220 p r o p e r t i e s t h a t 0034240 a r e s u p p l i e d i n 0034260 r e m o t e P L . \r / / T h 0034300 e f i l e i s l o c k e d 0034320 , s o t h e r e 376 001 \0 245 \0 0034340 i s n o n e e d t o l o 0034360 c k t h e d i r e c t o r y 0034400 f o r t h i s . \r l e t f 0034420 d = S t r e a m s F D ( C t 0034440 x R u n n i n g > > F t p C t x 0034460 . d i s k S t r e a m ) \r l e t 0034500 i l d = G e t B u f f e r 0034520 F o r F D ( f d ) \r T r a n s f 0034540 e r L e a d e r P a g e ( f d , 0034560 i l d ) \r F t p S S e t P r o 0034600 p s ( i l d , r e m o t e P L 0034620 ) \r T r a n s f e r L e a d e r 0034640 P a g e ( f d , i l d , t r 0034660 u e ) \r S y s F r e e ( i l d ) 0034700 \r \r / / T r a n s f e r t h 0034720 e f i l e . \r l e t e c 376 0034740 001 \0 \ 211 = N e t T o D i s k ( 0034760 C t x R u n n i n g > > F t p C 0035000 t x . d i s k S t r e a m , \r 0035020 C t x R u n n i n g > > F t p C 0035040 t x . b s p S t r e a m , l v 0035060 r e m o t e P L > > P L . S I 0035100 Z E ) \r i f e c e q 0 r 0035120 e s u l t i s t r u e \r r e s 0035140 u l t i s F t p S S e n d M a 0035160 r k ( m a r k N o , e c N o t 0035200 S t o r e d , I F S P r i n t 0035220 E r r o r , e c ) \r ] \r \r / / 0035240 - - - - - - - - - - - - - - - - * 0035340 - - - - 376 001 \0 1 Y - - - - - - - 0035360 \r a n d F t p S S t o r e C l 0035400 e a n u p ( r e m o t e P L , 0035420 o k , l o c a l P L ) b e \r 0035440 / / - - - - - - - - - - - - - - 0035460 - - - - - - - - - - - - - - - - * 0035540 - - - - - - - - - - - - - \r [ \r 0035560 C t x R u n n i n g > > F t p C 0035600 t x . f d = 0 \r F r e e P L 0035620 i s t ( l o c a l P L ) \r / / 0035640 d e s t r o y s t r e a m u 0035660 n c o n d i t i o n a l l y , 0035700 b u t c l o s e f i l e o 0035720 n l y i f t r a n s f e r 0035740 w e n t o k \r l 376 001 \0 022 307 e t 0035760 f d = C l o s e I F S S t 0036000 r e a m ( C t x R u n n i n g > 0036020 > F t p C t x . d i s k S t r e 0036040 a m , n o t o k ) \r u n l e 0036060 s s o k d o \r / / T 0036100 h e f i l e i s d a m a g 0036120 e d , a n d w e m u s t 0036140 d e s t r o y i t i f w e 0036160 c a n \r i f D e l e t 0036200 e F i l e F r o m F D ( f d , 0036220 f a l s e , t r u e ) n e 0036240 0 t h e n C l o s e I F S F 0036260 i l e ( f d ) \r D e s t r o y F 0036300 D ( f d ) \r ] \r \r / / - - - - - 0036320 - - - - - - - - - - - - - - - - 0036340 - - - - - - - - - - - - - - 376 001 0036360 \0 245 u - - - - - - - - - - - - - 0036400 - - - - - - - - - - - - - - - - 0036420 - - - - - - - - - - - \r a n d 0036440 F t p S S e t P r o p s ( i l d 0036460 , r e m o t e P L ) b e \r / 0036500 / - - - - - - - - - - - - - - - 0036520 - - - - - - - - - - - - - - - - * 0036600 - - - - - - - - - - - - \r / / 0036620 C o p i e s f i l e p r o p 0036640 e r t i e s f r o m r e m o 0036660 t e P L i n t o l e a d e r 0036700 p a g e s u p p l i e d b 0036720 y c a l l e r , \r / / w h o 0036740 i s e x p e c t e d t o 0036760 r e w 376 001 \0 ! 322 r i t e i t 0037000 a f t e r w a r d . ( C a l 0037020 l e d b y S t o r e a n d 0037040 R e n a m e . ) \r [ \r i f r 0037060 e m o t e P L > > P L . T Y P E 0037100 n e 0 t h e n i l d > > 0037120 I L D . t y p e = r e m o t 0037140 e P L > > P L . T Y P E \r i f 0037160 r e m o t e P L > > P L . B Y T 0037200 E n e 0 t h e n i l d > 0037220 > I L D . b y t e S i z e = 0037240 r e m o t e P L > > P L . B Y T 0037260 E \r i f r e m o t e P L > > P 0037300 L . C D A T . h n e 0 t h 0037320 e n \r M o v e B l o c k ( 0037340 l v i l d > > I L D . c r e a 0037360 t e d , l v 376 \0 347 023 P r e m 0037400 o t e P L > > P L . C D A T , 0037420 2 ) \r i f r e m o t e P L > > 0037440 P L . A U T H n e 0 & r 0037460 e m o t e P L > > P L . A U T H 0037500 > > S t r i n g . l e n g t h 0037520 l e m a x D i r N a m e C h a 0037540 r s t h e n \r C o p y S 0037560 t r i n g ( l v i l d > > I L 0037600 D . a u t h o r , r e m o t e 0037620 P L > > P L . A U T H ) \r i f 0037640 i l d > > I L D . c h e c k s u 0037660 m n e 0 t h e n i l d > 0037700 > I L D . c h e c k s u m = 0037720 r e m o t e P L > > P L . C S U 0037740 M \r ] \r 377 \0 \0 I f s F t p R e t 0037760 r i e v e . b c p l \0 373 231 \b 021 273 0040000 \0 \0 376 001 \0 332 361 / / I f s F t p 0040020 R e t r i e v e . b c p l - - 0040040 I F S F t p R e t r i e v 0040060 e c o m m a n d \r / / C o p 0040100 y r i g h t X e r o x C o r 0040120 p o r a t i o n 1 9 7 9 , 1 0040140 9 8 0 , 1 9 8 1 \r / / L a s 0040160 t m o d i f i e d M a y 1 0040200 1 , 1 9 8 2 1 1 : 3 3 A 0040220 M b y T a f t \r \r g e t " 0040240 I f s D i r s . d e c l " \r g e 0040260 t " I f s F i l e s . d e c l 0040300 " \r g e t " I f s F t p P r o 0040320 t . d e c l " \r \r e x t e r n a 0040340 l \r [ \r / / o u t g o i n g 0040360 p r o c e d u r e s \r F t p S R 0040400 e t r i e v e 376 001 \0 344 005 ; F t 0040420 p S R e t r i e v e F i l e \r \r 0040440 / / i n c o m i n g p r o c 0040460 e d u r e s f r o m o t h e 0040500 r F t p f i l e s \r F t p S 0040520 M a k e S F I L ; F t p S S e 0040540 n d M a r k \r F t p S C h e c k 0040560 A c c e s s ; F t p S F i l l 0040600 P L F r o m L D \r M t p S A n o 0040620 n y m o u s A c c e s s ; F t 0040640 p S C h e c k C o n n e c t i o 0040660 n \r D i s k T o N e t ; F i l 0040700 e T y p e ; F r e e P L i s t 0040720 \r \r / / i n c o m i n g p r 0040740 o c e d u r e s f r o m I F 0040760 S D i r s \r N e x t F D ; D 0041000 e s t r o y F D \r L o o 376 001 \0 H 0041020 z k u p I F S F i l e ; O p e 0041040 n I F S S t r e a m ; C l o s 0041060 e I F S S t r e a m \r \r / / i 0041100 n c o m i n g p r o c e d u r 0041120 e s - m i s c e l l a n e o 0041140 u s \r I F S P r i n t E r r o r 0041160 \r \r / / i n c o m i n g s t 0041200 a t i c s \r C t x R u n n i n g 0041220 \r ] \r \f \r / / - - - - - - - - - 0041240 - - - - - - - - - - - - - - - - * 0041340 - - \r l e t F t p S R e t r i 0041360 e v e ( r e m o t e P L , l o 0041400 c a l P L ) = v a l o f \r / 0041420 / 376 001 \0 - 311 - - - - - - - - - - 0041440 - - - - - - - - - - - - - - - - * 0041540 - \r [ / / r e p e a t \r l o 0041560 c a l P L = F r e e P L i s 0041600 t ( l o c a l P L ) \r u n l e s 0041620 s F t p S C h e c k C o n n e 0041640 c t i o n ( ) r e s u l t i s 0041660 f a l s e \r l e t e c = 0041700 n i l \r t e s t C t x R u n n 0041720 i n g > > F t p C t x . f d e 0041740 q 0 \r i f s o \r 0041760 [ / / f i r s t t i 0042000 m e f o r t h i s R e t r 0042020 i e v e r 376 001 \0 354 352 e q u e s 0042040 t \r F t p S M a k e 0042060 S F I L ( r e m o t e P L ) \r 0042100 t e s t C t x R u n 0042120 n i n g > > F t p C t x . t y p 0042140 e e q j o b T y p e F T P \r 0042160 i f s o u n 0042200 l e s s F t p S C h e c k A c 0042220 c e s s ( r e m o t e P L ) r 0042240 e s u l t i s f a l s e \r 0042260 i f n o t u n l 0042300 e s s M t p S A n o n y m o u 0042320 s A c c e s s ( r e m o t e P L 0042340 ) r e s u l t i s f a l s e 0042360 \r C t x R u n n i n 0042400 g > > F t p C t x . f d = L 0042420 o o k u p I F S F i l 376 001 \0 9 326 0042440 e ( r e m o t e P L > > P L . S 0042460 F I L , \r l c M u 0042500 l t i p l e + l c V H i g h e s 0042520 t , l v e c , 0 , r e m 0042540 o t e P L > > P L . D I R E ) \r 0042560 i f C t x R u n n 0042600 i n g > > F t p C t x . f d e 0042620 q 0 r e s u l t i s F t p 0042640 S S e n d M a r k ( m a r k N o 0042660 , e c ) \r ] \r 0042700 i f n o t u n l e s s N e 0042720 x t F D ( C t x R u n n i n g > 0042740 > F t p C t x . f d , f a l s 0042760 e ) d o \r [ / 0043000 / f a i l e d - n o m o 0043020 r e f i l e s \r C 0043040 376 001 \0 354 271 t x R u n n i n g > > 0043060 F t p C t x . f d = D e s t 0043100 r o y F D ( C t x R u n n i n g 0043120 > > F t p C t x . f d ) \r 0043140 r e s u l t i s f a l s 0043160 e \r ] \r l e t f d 0043200 = C t x R u n n i n g > > F 0043220 t p C t x . f d \r \r / / S e t 0043240 u p o u t g o i n g p r o 0043260 p e r t y l i s t \r l o c a l 0043300 P L = F t p S F i l l P L F 0043320 r o m L D ( r e m o t e P L , 0043340 t r u e ) \r i f l o c a l P L 0043360 e q 0 t h e n l o o p 0043400 / / f i l e w e n t a w 0043420 a y ? \r \r / / I f w e e n 0043440 c o u n t 376 001 \0 016 342 e r p r o 0043460 b l e m s w i t h t h e p 0043500 L i s t , r e s p o n d w i 0043520 t h e i t h e r \r / / m a 0043540 r k N o o r m a r k C o m m 0043560 e n t d e p e n d i n g o n 0043600 w h e t h e r t h e r e t 0043620 r i e v e r e q u e s t \r / / 0043640 s p e c i f i e d m u l t 0043660 i p l e f i l e s ( s e r v 0043700 e r F i l e n a m e c o n t a 0043720 i n e d a w i l d c a r d 0043740 c h a r ) . \r l e t m a r k F 0043760 a i l = f d > > F D . t e m 0044000 p l a t e e q 0 ? m a r k 0044020 N o , m a r k C o m m e n t \r 0044040 \r i f l o c a l P 376 001 \0 312 m L 0044060 > > P L . T Y P E e q U n s 0044100 p e c i f i e d t h e n \r 0044120 [ / / d o i t t h e 0044140 h a r d w a y \r l e t 0044160 d i s k S t r e a m = O p 0044200 e n I F S S t r e a m ( f d , 0044220 l v e c ) \r t e s t d 0044240 i s k S t r e a m n e 0 \r 0044260 i f s o \r 0044300 [ \r l o 0044320 c a l P L > > P L . T Y P E = 0044340 F i l e T y p e ( d i s k S t 0044360 r e a m ) ? T e x t , B i n 0044400 a r y \r C l o 0044420 s e I F S S t r e a m ( d i s k 0044440 S t r e a m ) \r 376 0044460 001 \0 ' m ] \r i f 0044500 n o t l o c a l P L > > P L . 0044520 T Y P E = r e m o t e P L > 0044540 > P L . T Y P E n e 0 ? \r 0044560 r e m o t e P L > > 0044600 P L . T Y P E , B i n a r y \r 0044620 ] \r \r i f r e m o t e P 0044640 L > > P L . T Y P E n e 0 0044660 & \r l o c a l P L > > P L . T 0044700 Y P E n e r e m o t e P L > 0044720 > P L . T Y P E t h e n \r 0044740 t e s t l o c a l P L > > P 0044760 L . T Y P E e q B i n a r y 0045000 \r i f s o \r 0045020 [ \r 0045040 F t p S S e n d M a r k ( m a r 0045060 k F a i 376 001 \0 272 222 l , e c N o 0045100 t R e t r i e v e d , l v f 0045120 d > > F D . d r > > D R . p a t 0045140 h N a m e , \r 0045160 I F S P r i n t E r r o r , 0045200 e c B i n a r y N o t T e x t ) 0045220 \r l o o p \r 0045240 ] \r 0045260 i f n o t \r [ 0045300 \r F t p S S e 0045320 n d M a r k ( m a r k C o m m e 0045340 n t , e c M a y B e T e x t , 0045360 l v f d > > F D . d r > > D 0045400 R . p a t h N a m e ) \r 0045420 l o c a l P L > > P L 0045440 . T Y P E = B i n a r y \r 0045460 ] 376 001 \0 306 203 \r \f 0045500 \r / / F t p S R e t r i e v e 0045520 ( c o n t ' d ) \r \r t e s t 0045540 l o c a l P L > > P L . T Y P E 0045560 e q T e x t \r i f s o 0045600 \r [ \r l 0045620 o c a l P L > > P L . E O L C 0045640 = C R \r i f r e 0045660 m o t e P L > > P L . E O L C 0045700 e q C R L F t h e n \r 0045720 [ \r 0045740 F t p S S e n d M a r k ( m a 0045760 r k F a i l , e c N o t R e t 0046000 r i e v e d , l v f d > > F 0046020 D . d r > > D R . p a t h N a m 0046040 e , \r I F S 0046060 P r i n t E r r o r , e c 376 001 0046100 \0 @ 021 C R L F C o n v e r s i o 0046120 n ) \r l o o p 0046140 \r ] \r 0046160 ] \r i f n o t t e s 0046200 t r e m o t e P L > > P L . B 0046220 Y T E e q 0 \r i 0046240 f s o i f l o c a l P L > > 0046260 P L . B Y T E e q 0 t h e 0046300 n l o c a l P L > > P L . B Y 0046320 T E = 8 \r i f n 0046340 o t t e s t l o c a l P L > 0046360 > P L . B Y T E e q 0 \r 0046400 i f s o l o c a 0046420 l P L > > P L . B Y T E = r 0046440 e m o t e P L > > P L . B Y T E 0046460 \r i f n o t 0046500 i f 376 001 \0 ; 4 l o c a l P L > 0046520 > P L . B Y T E n e r e m o 0046540 t e P L > > P L . B Y T E t h 0046560 e n \r [ 0046600 \r F t p 0046620 S S e n d M a r k ( m a r k F a 0046640 i l , e c N o t R e t r i e v 0046660 e d , l v f d > > F D . d r 0046700 > > D R . p a t h N a m e , \r 0046720 I F S P 0046740 r i n t E r r o r , e c B y t 0046760 e S i z e ) \r 0047000 l o o p \r 0047020 ] \r \r r e s u l t i s 0047040 l o c a l P L \r ] r e p e a t 0047060 \r \r / / - - - - - - - - - - - - 0047100 - - - - - - - - 376 001 \0 363 016 - - - 0047120 - - - - - - - - - - - - - - - - * 0047200 - - - - \r a n d F t p S R e t 0047220 r i e v e F i l e ( p L i s t ) 0047240 = v a l o f \r / / - - - - - 0047260 - - - - - - - - - - - - - - - - * 0047360 - - - - - - \r [ \r l e t e c 0047400 = n i l \r l e t d i s k S t 0047420 r e a m = O p e n I F S S t 0047440 r e a m ( C t x R u n n i n g > 0047460 > F t p C t x . f d , l v e 0047500 c , m o d e R e a d ) \r 376 \0 257 0047520 244 t i f d i s k S t r e a m 0047540 n e 0 t h e n \r [ \r 0047560 e c = D i s k T o N e t 0047600 ( C t x R u n n i n g > > F t p 0047620 C t x . b s p S t r e a m , d 0047640 i s k S t r e a m ) \r C l 0047660 o s e I F S S t r e a m ( d i s 0047700 k S t r e a m ) \r ] \r r e 0047720 s u l t i s e c e q 0 ? 0047740 t r u e , F t p S S e n d M a 0047760 r k ( m a r k N o , e c ) \r ] 0050000 \r 377 \0 \0 I f s F t p C m d . b c 0050020 p l \0 373 233 240 314 \f \0 \0 376 001 \0 210 \ / 0050040 / I f s F t p C m d . b c p l 0050060 - M o r e I F S F t p 0050100 s e r v e r c o m m a n d s \r 0050120 / / C o p y r i g h t X e r 0050140 o x C o r p o r a t i o n 1 0050160 9 7 9 , 1 9 8 0 , 1 9 8 1 , 0050200 1 9 8 2 , 1 9 8 3 \r / / L 0050220 a s t m o d i f i e d S e p 0050240 t e m b e r 2 7 , 1 9 8 3 0050260 4 : 3 3 P M b y T a f t 0050300 \r \r g e t " I f s D i r s . d 0050320 e c l " \r g e t " I f s F i l 0050340 e s . d e c l " \r g e t " I f 0050360 s F t p P r o t . d e c l " \r \r 0050400 e x t e r n a l \r [ \r / / o u 0050420 t g o i n g p r o c e d u r 376 0050440 001 \0 006 216 e s \r F t p S V e r s i 0050460 o n ; F t p S R e n a m e ; 0050500 F t p S D i r e c t o r y \r F t 0050520 p S D e l e t e ; F t p S D e 0050540 l e t e F i l e ; F t p S N o 0050560 t I m p l \r \r / / i n c o m i 0050600 n g p r o c e d u r e s f r 0050620 o m I f s F t p S e r v U t i 0050640 l . b c p l \r F t p S M a k e S 0050660 F I L ; F t p S S e n d M a r 0050700 k ; F t p S C h e c k C o n n 0050720 e c t i o n \r F t p S C h e c k 0050740 A c c e s s ; F t p S F i l l 0050760 P L F r o m L D \r \r / / i n c 0051000 o m i n g p r o c e d u r e s 0051020 f r o m I F S D i r s \r L 0051040 o o k u 376 001 \0 353 273 p I F S F i l 0051060 e ; D e l e t e F i l e F r o 0051100 m F D ; R e n a m e F i l e F 0051120 r o m F D \r N e x t F D ; D e 0051140 s t r o y F D ; L o o k u p F 0051160 D \r \r / / i n c o m i n g p 0051200 r o c e d u r e s - m i s c 0051220 e l l a n e o u s \r F r e e P L 0051240 i s t ; P r i n t I F S V e r 0051260 s i o n ; P u t T e m p l a t 0051300 e ; A c t i v e J o b s ; F 0051320 t p S S e t P r o p s \r \r / / 0051340 i n c o m i n g s t a t i c s 0051360 \r C t x R u n n i n g ; m a x 0051400 J o b s \r ] \r \r / / - - - - - - 0051420 - - - - - - - - - - - - - - - - 0051440 - - - - - - - - - 376 001 \0 305 363 - - 0051460 - - - - - - - - - - - - - - - - * 0051520 - - - - - - - - - - \r l e t F 0051540 t p S V e r s i o n ( ) b e \r 0051560 / / - - - - - - - - - - - - - - 0051600 - - - - - - - - - - - - - - - - * 0051660 - - - - - - - - - - - - - \r [ \r 0051700 P r i n t I F S V e r s i o n ( 0051720 C t x R u n n i n g > > F t p C 0051740 t x . b s p S t r e a m , \r ( 0051760 C t x R u n n i n g > > F t p C 0052000 t x . t y p e e q j o b T y 0052020 p e M T P ? " M a i l s e r 0052040 v e r " , " F i l e s e 376 001 0052060 \0 j 353 r v e r " ) ) \r l e t a 0052100 c t i v e J o b s = A c t i 0052120 v e J o b s ( ) \r P u t T e m p 0052140 l a t e ( C t x R u n n i n g > 0052160 > F t p C t x . b s p S t r e a 0052200 m , " ; $ D u s e r $ S 0052220 o u t o f $ D " , \r a c t 0052240 i v e J o b s , ( a c t i v e 0052260 J o b s e q 1 ? " " , " 0052300 s " ) , m a x J o b s ) \r ] \r 0052320 \r / / - - - - - - - - - - - - - 0052340 - - - - - - - - - - - - - - - - * 0052420 - - - - - - - - - - - - - - \r a 0052440 n d F t p S N o t I m p l ( ) 0052460 = 376 001 \0 z 020 F t p S S e n d 0052500 M a r k ( m a r k N o , e c N 0052520 o t I m p l e m e n t e d ) \r / 0052540 / - - - - - - - - - - - - - - - 0052560 - - - - - - - - - - - - - - - - * 0052640 - - - - - - - - - - - - \r \f \r / 0052660 / - - - - - - - - - - - - - - - 0052700 - - - - - - - - - - - - - - - - * 0052760 - - - - - - - - - - - - \r a n d 0053000 F t p S D i r e c t o r y ( r 0053020 e m o t e P L , l o c a l P L 0053040 ) = v a l o f \r / / - - - - 0053060 - - - - - - - - 376 001 \0 Z 222 - - - 0053100 - - - - - - - - - - - - - - - - * 0053160 - - - - - - - - - - - - \r [ / 0053200 / r e p e a t \r l o c a l P L 0053220 = F r e e P L i s t ( l o c 0053240 a l P L ) \r u n l e s s F t p 0053260 S C h e c k C o n n e c t i o n 0053300 ( ) r e s u l t i s f a l s 0053320 e \r t e s t C t x R u n n i n 0053340 g > > F t p C t x . f d e q 0053360 0 \r i f s o \r 0053400 [ / / f i r s t t i m e 0053420 f o r t h i s D i r e c t 0053440 o r y r e q u e s t \r 0053460 u n l e s s F t p S 376 001 \0 0053500 5 * C h e c k A c c e s s ( r e 0053520 m o t e P L ) r e s u l t i s 0053540 f a l s e \r F t p 0053560 S M a k e S F I L ( r e m o t e 0053600 P L ) \r l e t e c 0053620 = n i l \r C t x 0053640 R u n n i n g > > F t p C t x . 0053660 f d = L o o k u p I F S F i 0053700 l e ( r e m o t e P L > > P L . 0053720 S F I L , \r l c M 0053740 u l t i p l e + l c V A l l , 0053760 l v e c , 0 , r e m o t e 0054000 P L > > P L . D I R E ) \r 0054020 i f C t x R u n n i n g 0054040 > > F t p C t x . f d e q 0 0054060 r e s u l t i s F t p S S e 0054100 n d 376 001 \0 ' ) M a r k ( m a r k 0054120 N o , e c ) \r ] \r 0054140 i f n o t u n l e s s 0054160 N e x t F D ( C t x R u n n i n 0054200 g > > F t p C t x . f d ) d o 0054220 \r [ / / f a i 0054240 l e d - n o m o r e f i 0054260 l e s \r C t x R u n 0054300 n i n g > > F t p C t x . f d 0054320 = D e s t r o y F D ( C t x R 0054340 u n n i n g > > F t p C t x . f 0054360 d ) \r r e s u l t i 0054400 s f a l s e \r ] \r 0054420 \r l o c a l P L = F t p S F 0054440 i l l P L F r o m L D ( r e m o 0054460 t e P L ) \r i f l o c a l P L 0054500 n e 0 r 376 001 \0 $ 222 e s u l 0054520 t i s l o c a l P L \r ] r e 0054540 p e a t \r \r / / - - - - - - - - 0054560 - - - - - - - - - - - - - - - - * 0054660 - - - \r a n d F t p S R e n a 0054700 m e ( o l d P L , n e w P L ) 0054720 = v a l o f \r / / - - - - - 0054740 - - - - - - - - - - - - - - - - * 0055040 - - - - - - \r [ \r u n l e s s 0055060 F t p S C h e c k A c c e s s ( 0055100 o l d P L ) r e s u l 376 001 \0 j 0055120 6 t i s f a l s e \r F t p S M 0055140 a k e S F I L ( o l d P L ) \r F 0055160 t p S M a k e S F I L ( n e w P 0055200 L ) \r l e t e c = 0 \r l e 0055220 t f d = L o o k u p I F S 0055240 F i l e ( o l d P L > > P L . S 0055260 F I L , l c V H i g h e s t , 0055300 l v e c , 0 , o l d P L 0055320 > > P L . D I R E ) \r i f f d 0055340 n e 0 t h e n \r [ \r 0055360 e c = R e n a m e F i 0055400 l e F r o m F D ( f d , n e w 0055420 P L > > P L . S F I L , n e w 0055440 P L > > P L . D I R E , F t p 0055460 S S e t P r o p s , n e w P L 0055500 ) \r D e s t r o y F D ( f 0055520 d 376 001 \0 005 G ) \r ] \r r e s 0055540 u l t i s e c e q 0 ? t 0055560 r u e , F t p S S e n d M a r 0055600 k ( m a r k N o , e c ) \r ] \r 0055620 \f \r / / - - - - - - - - - - - - 0055640 - - - - - - - - - - - - - - - - * 0055720 - - - - - - - - - - - - - - - \r 0055740 a n d F t p S D e l e t e ( r 0055760 e m o t e P L , l o c a l P L 0056000 ) = v a l o f \r / / - - - - 0056020 - - - - - - - - - - - - - - - - * 0056120 - - - - - - 376 001 \0 245 341 - \r [ / 0056140 / r e p e a t \r l o c a l P L 0056160 = F r e e P L i s t ( l o c 0056200 a l P L ) \r u n l e s s F t p 0056220 S C h e c k C o n n e c t i o n 0056240 ( ) r e s u l t i s f a l s 0056260 e \r t e s t C t x R u n n i n 0056300 g > > F t p C t x . f d e q 0056320 0 \r i f s o \r 0056340 [ / / f i r s t t i m e 0056360 f o r t h i s D e l e t e 0056400 r e q u e s t \r u 0056420 n l e s s F t p S C h e c k A 0056440 c c e s s ( r e m o t e P L ) 0056460 r e s u l t i s f a l s e \r 0056500 F t p S M a k e S F I 0056520 L ( r e m o t e P L ) 376 001 \0 242 303 0056540 \r l e t e c = 0056560 n i l \r C t x R u n 0056600 n i n g > > F t p C t x . f d 0056620 = L o o k u p I F S F i l e ( 0056640 r e m o t e P L > > P L . S F I 0056660 L , \r l c M u l t 0056700 i p l e + l c V L o w e s t , 0056720 l v e c , 0 , r e m o t e 0056740 P L > > P L . D I R E ) \r 0056760 i f C t x R u n n i n g 0057000 > > F t p C t x . f d e q 0 0057020 r e s u l t i s F t p S S e 0057040 n d M a r k ( m a r k N o , e 0057060 c ) \r ] \r i f 0057100 n o t u n l e s s N e x t F 0057120 D ( C t x R u n n i n g > > F t 0057140 376 001 \0 232 200 p C t x . f d ) d o 0057160 \r [ / / f a i 0057200 l e d - n o m o r e f i 0057220 l e s \r C t x R u n 0057240 n i n g > > F t p C t x . f d 0057260 = D e s t r o y F D ( C t x R 0057300 u n n i n g > > F t p C t x . f 0057320 d ) \r r e s u l t i 0057340 s f a l s e \r ] \r 0057360 \r l o c a l P L = F t p S F 0057400 i l l P L F r o m L D ( r e m o 0057420 t e P L ) \r i f l o c a l P L 0057440 n e 0 r e s u l t i s l 0057460 o c a l P L \r ] r e p e a t \r 0057500 \r / / - - - - - - - - - - - - - 0057520 - - - - - - - - - - - - - - - - 0057540 - - - - - 376 \0 375 374 214 - - - - - - 0057560 - - - - - - - - - - - - - - - - * 0057620 - - - \r a n d F t p S D e l e 0057640 t e F i l e ( p l ) = v a l 0057660 o f \r / / - - - - - - - - - - - 0057700 - - - - - - - - - - - - - - - - * 0060000 \r [ \r l e t e c = D e l e 0060020 t e F i l e F r o m F D ( C t x 0060040 R u n n i n g > > F t p C t x . 0060060 f d ) \r r e s u l t i s e c 0060100 e q 0 ? t r u e , F t p S 0060120 S e n d M a r k ( m a r k N o , 0060140 e c ) \r ] \r 377 \0 \0 I f s F t p 0060160 X f e r . b c p l \0 373 230 ( 031 350 \0 0060200 \0 376 001 \0 4 / / I f s F t p X 0060220 f e r . b c p l - B l o c k 0060240 I O r o u t i n e s \r / / 0060260 C o p y r i g h t X e r o x 0060300 C o r p o r a t i o n 1 9 7 9 0060320 , 1 9 8 0 , 1 9 8 1 \r / / 0060340 L a s t m o d i f i e d N o 0060360 v e m b e r 2 2 , 1 9 8 1 0060400 1 2 : 2 2 P M b y T a f 0060420 t \r \r g e t " P u p . d e c l 0060440 " \r g e t " I f s F t p P r o 0060460 t . d e c l " \r g e t e c F i 0060500 l e S y s t e m F u l l , e c 0060520 D i s k E r r o r f r o m " 0060540 I f s D i r s . d e c l " \r g e 0060560 t K D H , f r e e P a g e s 0060600 , l F A 376 001 \0 304 021 f r o m 0060620 " A l t o F i l e S y s . d " \r 0060640 g e t D S K , d i s k K d 0060660 f r o m " D i s k s . d " \r \r 0060700 e x t e r n a l \r [ \r / / o u 0060720 t g o i n g p r o c e d u r e 0060740 s \r D i s k T o D i s k ; N e 0060760 t T o D i s k ; D i s k T o N 0061000 e t \r F i l e T y p e ; F l i 0061020 p C u r s o r \r \r / / i n c o 0061040 m i n g p r o c e d u r e s \r 0061060 F T P M \r L n P a g e S i z e ; 0061100 K s B u f f e r A d d r e s s 0061120 ; K s G e t D i s k ; F i l 0061140 e P o s ; S e t F i l e P o s 0061160 \r S e t D i r t y ; C l e a n 0061200 u p D i s k S t r e a 376 001 \0 305 021 0061220 m ; C u r r e n t P o s ; G 0061240 e t C u r r e n t F a ; J u m 0061260 p T o F a \r E n d o f s ; R e 0061300 s e t s ; P o s i t i o n P t 0061320 r \r B S P W r i t e B l o c k ; 0061340 B S P R e a d B l o c k \r D a 0061360 t a I s B i n a r y ; M i n ; 0061400 D o u b l e A d d ; D o u b 0061420 l e I n c r e m e n t ; B y t 0061440 e B l t \r R e t u r n F r o m ; 0061460 S y s E r r ; M o v e B l o 0061500 c k \r \r / / i n c o m i n g 0061520 s t a t i c s \r o f f s e t B S 0061540 P S t r ; C t x R u n n i n g 0061560 \r ] \r \r m a n i f e s t \r [ \r e 0061600 c D i s k F u l l = 2 4 1 3 0061620 376 001 \0 355 \f / / c o p i e d 0061640 f r o m T f s . d , f o r 0061660 T r i d e n t d i s k s o 0061700 n l y \r e c U n R e c o v D i s 0061720 k E r r o r = 2 4 1 2 \r ] \r 0061740 \r / / - - - - - - - - - - - - - 0061760 - - - - - - - - - - - - - - - - * 0062040 - - - - - - - - - - - - - - - \r 0062060 l e t D i s k T o D i s k ( d 0062100 S t r e a m , s S t r e a m , 0062120 l v B y t e s ; n u m a r g 0062140 s n a ) = v a l o f \r / / 0062160 - - - - - - - - - - - - - - - - * 0062220 - - - - - 376 001 \0 I X - - - - - - 0062240 - - - - - - - - - - - - - - - - * 0062300 - \r / / C o p i e s d a t a 0062320 f r o m d i s k s t r e a 0062340 m s S t r e a m t o a n o 0062360 t h e r d i s k s t r e a m 0062400 d S t r e a m . \r / / l v B 0062420 y t e s , i f s u p p l i e 0062440 d , p o i n t s t o a 3 0062460 2 - b i t m a x i m u m b y 0062500 t e c o u n t . \r / / R e t 0062520 u r n s t r u e n o r m a l 0062540 l y , f a l s e i f t h e 0062560 s o u r c e s t r e a m r 0062600 a n o u t b e f o r e \r / / 0062620 t h e r e q u 376 001 \0 3 350 e 0062640 s t e d n u m b e r o f b 0062660 y t e s w e r e t r a n f e 0062700 r r e d . \r / / L e a v e s 0062720 t h e b y t e c o u n t e 0062740 q u a l t o t h e n u m b 0062760 e r o f b y t e s l e f t 0063000 t o t r a n s f e r . \r [ \r 0063020 l e t d e f B y t e s = v 0063040 e c 1 ; d e f B y t e s ! 0 0063060 = - 1 \r i f n a l s 3 0063100 t h e n l v B y t e s = 0063120 d e f B y t e s \r \r l e t d P 0063140 a g e B y t e s = 2 l s h 0063160 i f t L n P a g e S i z e ( d 0063200 S t r e a m ) \r l e t s P a g 0063220 e B y t e s = 2 l s h i 376 0063240 001 \0 376 211 f t L n P a g e S i z 0063260 e ( s S t r e a m ) \r l e t d 0063300 K s B u f f e r = K s B u f 0063320 f e r A d d r e s s ( d S t r e 0063340 a m ) \r l e t s K s B u f f e 0063360 r = K s B u f f e r A d d r 0063400 e s s ( s S t r e a m ) \r \r w h 0063420 i l e l v B y t e s ! 0 n e 0063440 0 % l v B y t e s ! 1 n 0063460 e 0 d o \r [ \r i 0063500 f E n d o f s ( s S t r e a m 0063520 ) r e s u l t i s f a l s e 0063540 \r l e t d P o s , s P 0063560 o s = C u r r e n t P o s ( 0063600 d S t r e a m ) , C u r r e n 0063620 t P o s ( s S t r e a m ) \r 0063640 l e t 376 001 \0 342 346 c o u n t 0063660 = M i n ( d P a g e B y t e s 0063700 - d P o s , s P a g e B y t e 0063720 s - s P o s ) \r i f l v 0063740 B y t e s ! 0 e q 0 & l 0063760 v B y t e s ! 1 g e 0 t h 0064000 e n c o u n t = M i n ( c 0064020 o u n t , l v B y t e s ! 1 ) 0064040 \r P o s i t i o n P t r ( 0064060 s S t r e a m , s P o s + c o 0064100 u n t , f a l s e ) \r c 0064120 o u n t = C u r r e n t P o 0064140 s ( s S t r e a m ) - s P o s \r 0064160 P o s i t i o n P t r ( d 0064200 S t r e a m , d P o s + c o u 0064220 n t ) \r B y t e B l t ( d 0064240 K s B u f f e r , 376 001 \0 H G d 0064260 P o s , s K s B u f f e r , 0064300 s P o s , c o u n t ) \r 0064320 i f d P o s + c o u n t e q 0064340 d P a g e B y t e s t h e n 0064360 C l e a n u p D i s k S t r e 0064400 a m ( d S t r e a m ) \r i 0064420 f s P o s + c o u n t e q 0064440 s P a g e B y t e s t h e n 0064460 C l e a n u p D i s k S t r e a 0064500 m ( s S t r e a m ) \r D o 0064520 u b l e I n c r e m e n t ( l v 0064540 B y t e s , - c o u n t ) \r 0064560 ] \r \r r e s u l t i s t r 0064600 u e \r ] \r \f \r / / - - - - - - - 0064620 - - - - - - - - - - - - - - - - 0064640 - - - - - - - - - - - - - - 376 001 0064660 \0 347 202 - - - - - - - - - - - - - 0064700 - - - - - - - - - - - - - - - - 0064720 - - - - - - - - - \r a n d N e 0064740 t T o D i s k ( d i s k S t r e 0064760 a m , b s p S t r e a m , l 0065000 v E x p e c t e d B y t e s ; 0065020 n u m a r g s n a ) = v a 0065040 l o f \r / / - - - - - - - - - - 0065060 - - - - - - - - - - - - - - - - * 0065160 - \r / / C o p i e s d a t a 0065200 f r o m b s p S t r e a m 0065220 t o d i s k S t r e a m . \r / 0065240 / R e t u r n s I F S e r 0065260 r o r 376 001 \0 252 321 c o d e , o 0065300 r z e r o i f O K . \r / / 0065320 l v E x p e c t e d B y t e s 0065340 , i f s u p p l i e d , i 0065360 s a p o i n t e r t o a 0065400 3 2 - b i t c o u n t o f 0065420 t h e \r / / n u m b e r o 0065440 f b y t e s e x p e c t e d 0065460 ; t h i s i s u s e d a 0065500 s a h i n t t o e x t e 0065520 n d t h e f i l e \r / / t 0065540 o t h e p r o p e r l e n 0065560 g t h ( t o s p e e d d a 0065600 t a t r a n s f e r ) a n d 0065620 n e e d n o t b e c o r 0065640 r e c t . \r [ \r d i s k S t r e 0065660 a m > > S T . e 376 001 \0 V 032 r r o 0065700 r = N e t T o D i s k E r r 0065720 o r \r l e t l n C h a r s P e 0065740 r P a g e = L n P a g e S i 0065760 z e ( d i s k S t r e a m ) + 1 0066000 \r l e t c h a r s P e r P a g 0066020 e = 1 l s h i f t l n C 0066040 h a r s P e r P a g e \r l e t 0066060 k s B u f f e r = K s B u f 0066100 f e r A d d r e s s ( d i s k S 0066120 t r e a m ) \r \r i f n a g e 0066140 3 & l v E x p e c t e d B 0066160 y t e s n e 0 t h e n \r 0066200 [ \r / / e x t e n d 0066220 f i l e t o t h e p r o 0066240 p e r l e n g t h i f t h 0066260 e e x p e c t e d a m 376 001 \0 0066300 265 ~ o u n t o f d a t a \r 0066320 / / i s w o r t h o u 0066340 r w h i l e a n d i s n 0066360 o t s o g r e a t t h a t 0066400 w e w o u l d r i s k \r 0066420 / / e x h a u s t i n g 0066440 t h e f i l e s y s t e m . 0066460 \r l e t e x p e c t e d 0066500 P a g e s = l v E x p e c t 0066520 e d B y t e s ! 0 l s h i f t 0066540 ( 1 6 - l n C h a r s P e r P 0066560 a g e ) + \r l v E x p 0066600 e c t e d B y t e s ! 1 r s h 0066620 i f t l n C h a r s P e r P a 0066640 g e \r i f e x p e c t e 0066660 d P a g e s u g e 3 & e 0066700 x p 376 001 \0 2 , e c t e d P a g e 0066720 s u l s 1 0 0 0 & e x p 0066740 e c t e d P a g e s + 2 5 0 u 0066760 l s \r K s G e t D i s k 0067000 ( d i s k S t r e a m ) > > D S 0067020 K . d i s k K d > > K D H . f r 0067040 e e P a g e s t h e n \r 0067060 [ \r l e t f 0067100 i l e P o s = v e c 1 ; 0067120 F i l e P o s ( d i s k S t r e 0067140 a m , f i l e P o s ) \r 0067160 D o u b l e A d d ( f i l 0067200 e P o s , l v E x p e c t e d 0067220 B y t e s ) \r l e t 0067240 c u r r e n t F A = v e c 0067260 l F A ; G e t C u r r e n t 0067300 F a ( d i s k 376 001 \0 270 264 S t r e 0067320 a m , c u r r e n t F A ) \r 0067340 S e t F i l e P o s ( 0067360 d i s k S t r e a m , f i l e 0067400 P o s ) \r J u m p T 0067420 o F a ( d i s k S t r e a m , 0067440 c u r r e n t F A ) \r 0067460 ] \r ] \r \r [ / / 0067500 r e p e a t \r l e t p 0067520 o s = C u r r e n t P o s ( 0067540 d i s k S t r e a m ) \r l 0067560 e t n e t B y t e s = B S 0067600 P R e a d B l o c k ( b s p S t 0067620 r e a m , k s B u f f e r , 0067640 p o s , c h a r s P e r P a g 0067660 e - p o s ) \r F l i p C u 0067700 r s o r ( ) \r i f 376 001 \0 005 0067720 Z n e t B y t e s n e 0 0067740 t h e n S e t D i r t y ( d i 0067760 s k S t r e a m , t r u e ) \r 0070000 P o s i t i o n P t r ( d 0070020 i s k S t r e a m , p o s + n 0070040 e t B y t e s ) \r i f p 0070060 o s + n e t B y t e s n e c 0070100 h a r s P e r P a g e b r e a 0070120 k \r C l e a n u p D i s k 0070140 S t r e a m ( d i s k S t r e a 0070160 m ) \r ] r e p e a t \r \r 0070200 d i s k S t r e a m > > S T . e 0070220 r r o r = S y s E r r \r r e 0070240 s u l t i s ( b s p S t r e a 0070260 m - o f f s e t B S P S t r ) > 0070300 > B S P S o c . m a r k P e n d 0070320 i 376 001 \0 236 211 n g ? 0 , e c N 0070340 e t T o D i s k \r ] \r \r / / - - 0070360 - - - - - - - - - - - - - - - - * 0070460 - - - - - - - - - \r a n d N e 0070500 t T o D i s k E r r o r ( s , 0070520 e c , p a r ) b e \r / / - - 0070540 - - - - - - - - - - - - - - - - * 0070640 - - - - - - - - - \r / / I f 0070660 d i s k b e c o m e s f u l 0070700 l t h e n j u s t a b o r 0070720 t t h e 376 001 \0 212 245 t r a n s 0070740 f e r . \r / / N o t e t h a 0070760 t N e t T o D i s k i s n ' 0071000 t t h e o n l y c o n t e 0071020 x t i n w h i c h t h e 0071040 d i s k c a n \r / / o v e 0071060 r f l o w , b u t i t i s 0071100 b y f a r t h e m o s t 0071120 l i k e l y o n e a n d 0071140 i s t h e r e f o r e w o r 0071160 t h \r / / p r o t e c t i n 0071200 g . ( I n o t h e r c a 0071220 s e s , I F S w i l l j u 0071240 s t g o i n t o S w a t . 0071260 ) \r [ \r i f e c e q e c D 0071300 i s k F u l l t h e n \r 0071320 [ / / F l u s h 376 001 \0 304 = 0071340 t h e s t r e a m u p t 0071360 o t h e n e x t m a r k \r 0071400 l e t k s B u f f e r 0071420 = K s B u f f e r A d d r e s 0071440 s ( s ) \r l e t c h a r 0071460 s P e r P a g e = 2 l s h 0071500 i f t L n P a g e S i z e ( s 0071520 ) \r w h i l e B S P R e 0071540 a d B l o c k ( C t x R u n n i 0071560 n g > > F t p C t x . b s p S t 0071600 r e a m , k s B u f f e r , 0071620 0 , c h a r s P e r P a g e ) 0071640 l o o p \r s > > S T . e 0071660 r r o r = S y s E r r \r 0071700 S e t D i r t y ( s , f a l 0071720 s e ) \r R e t u r n F r o 0071740 376 001 \0 374 t m ( N e t T o D i s k 0071760 , e c F i l e S y s t e m F u 0072000 l l ) \r ] \r S y s E r r ( 0072020 s , e c , p a r ) \r ] \r \f \r 0072040 / / - - - - - - - - - - - - - - 0072060 - - - - - - - - - - - - - - - - * 0072140 - - - - - - - - - - - - - \r a n 0072160 d D i s k T o N e t ( b s p S 0072200 t r e a m , d i s k S t r e a 0072220 m , l v B y t e s ; n u m a 0072240 r g s n a ) = v a l o f \r 0072260 / / - - - - - - - - - - - - - - 0072300 - - - - - - - - - - - - - - - - * 0072340 - - - - - 376 001 \0 225 021 - - - - - - 0072360 - - - - - - - - - - - - - - - - 0072400 - - \r / / C o p i e s d a t 0072420 a f r o m d i s k S t r e a 0072440 m t o b s p S t r e a m . \r 0072460 / / R e t u r n s I F S e 0072500 r r o r c o d e , o r z e 0072520 r o i f O K . \r / / l v B 0072540 y t e s , i f s u p p l i e 0072560 d p o i n t s t o a 3 2 0072600 - b i t m a x i m u m b y t 0072620 e c o u n t . \r / / L e a v 0072640 e s t h e b y t e c o u n 0072660 t e q u a l t o t h e n 0072700 u m b e r o f b y t e s l 0072720 e f t t o t r a n s f e r . 0072740 \r [ \r l e t d e f 376 001 \0 017 371 B 0072760 y t e s = v e c 1 ; d e 0073000 f B y t e s ! 0 = - 1 \r i f 0073020 n a l s 3 t h e n l v 0073040 B y t e s = d e f B y t e s 0073060 \r d i s k S t r e a m > > S T . 0073100 e r r o r = D i s k T o N e 0073120 t E r r o r \r l e t c h a r s 0073140 P e r P a g e = 2 l s h i 0073160 f t L n P a g e S i z e ( d i 0073200 s k S t r e a m ) \r l e t k s 0073220 B u f f e r = K s B u f f e 0073240 r A d d r e s s ( d i s k S t r 0073260 e a m ) \r \r F T P M ( m a r k H 0073300 e r e I s F i l e ) \r w h i l e 0073320 l v B y t e s ! 0 n e 0 0073340 % l v B y t e s ! 1 n e 376 0073360 001 \0 315 017 0 d o \r [ \r 0073400 l e t p o s = C u r r e 0073420 n t P o s ( d i s k S t r e a m 0073440 ) \r l e t f i l e B y t 0073460 e s = c h a r s P e r P a g 0073500 e - p o s \r i f l v B y 0073520 t e s ! 0 e q 0 & l v B 0073540 y t e s ! 1 g e 0 t h e n 0073560 \r f i l e B y t e s 0073600 = M i n ( f i l e B y t e s 0073620 , l v B y t e s ! 1 ) \r 0073640 P o s i t i o n P t r ( d i s k 0073660 S t r e a m , p o s + f i l e 0073700 B y t e s , f a l s e ) \r 0073720 f i l e B y t e s = C u r 0073740 r e n t P o s ( d i s k S t r e 0073760 a m ) - 376 001 \0 ] 001 p o s \r 0074000 i f B S P W r i t e B l o c k 0074020 ( b s p S t r e a m , k s B u 0074040 f f e r , p o s , f i l e B 0074060 y t e s ) n e f i l e B y t 0074100 e s t h e n \r r e 0074120 s u l t i s e c D i s k T o N 0074140 e t \r F l i p C u r s o r 0074160 ( ) \r D o u b l e I n c r 0074200 e m e n t ( l v B y t e s , - 0074220 f i l e B y t e s ) \r i f 0074240 p o s + f i l e B y t e s l 0074260 s c h a r s P e r P a g e b 0074300 r e a k \r C l e a n u p D 0074320 i s k S t r e a m ( d i s k S t 0074340 r e a m ) \r ] \r \r d i s k 0074360 S t r e a m > > S 376 001 \0 033 A T . 0074400 e r r o r = S y s E r r \r r 0074420 e s u l t i s 0 \r ] \r \r / / - 0074440 - - - - - - - - - - - - - - - - * 0074540 - - - - - - - - - - \r a n d D 0074560 i s k T o N e t E r r o r ( s , 0074600 e c , p a r ) b e \r / / - 0074620 - - - - - - - - - - - - - - - - * 0074720 - - - - - - - - - - \r / / I f 0074740 a h a r d d a t a e r r 0074760 o r o c c u r s t h e n 376 001 0075000 \0 6 237 j u s t a b o r t t 0075020 h e t r a n s f e r . \r [ \r i 0075040 f e c e q e c U n R e c o 0075060 v D i s k E r r o r t h e n \r 0075100 [ \r s > > S T . e r 0075120 r o r = S y s E r r \r 0075140 R e t u r n F r o m ( D i s k T 0075160 o N e t , e c D i s k E r r o 0075200 r ) \r ] \r S y s E r r ( s 0075220 , e c , p a r ) \r ] \r \f \r / 0075240 / - - - - - - - - - - - - - - - 0075260 - - - - - - - - - - - - - - - - * 0075340 - - - - - - - - - - - \r a n d 0075360 F i l e T y p e ( d i s k S t r 0075400 e a m 376 001 \0 312 213 ) = v a l o 0075420 f \r / / - - - - - - - - - - - - 0075440 - - - - - - - - - - - - - - - - * 0075520 - - - - - - - - - - - - - - \r / 0075540 / t r u e = t e x t ; f 0075560 a l s e = b i n a r y \r [ \r 0075600 l e t t e x t = t r u e \r 0075620 l e t c h a r s P e r P a g e 0075640 = 2 l s h i f t L n P a 0075660 g e S i z e ( d i s k S t r e a 0075700 m ) \r l e t k s B u f f e r 0075720 = K s B u f f e r A d d r e s 0075740 s ( d i s k S t r e a m ) \r R e 0075760 s e t s ( d i s k S t r e a m ) 0076000 \r \r [ \r 376 001 \0 343 344 P 0076020 o s i t i o n P t r ( d i s k S 0076040 t r e a m , c h a r s P e r P 0076060 a g e , f a l s e ) \r l 0076100 e t f i l e B y t e s = C 0076120 u r r e n t P o s ( d i s k S t 0076140 r e a m ) \r i f D a t a 0076160 I s B i n a r y ( k s B u f f e 0076200 r , f i l e B y t e s ) t h 0076220 e n [ t e x t = f a l s 0076240 e ; b r e a k ] \r i f 0076260 f i l e B y t e s l s c h 0076300 a r s P e r P a g e b r e a k 0076320 \r C l e a n u p D i s k S 0076340 t r e a m ( d i s k S t r e a m 0076360 ) \r ] r e p e a t \r \r R 0076400 e s e t s ( d i s k S t r 376 001 \0 0076420 306 033 e a m ) \r r e s u l t i s 0076440 t e x t \r ] \r \r / / - - - - - - 0076460 - - - - - - - - - - - - - - - - * 0076560 - - - - - \r a n d F l i p C u 0076600 r s o r ( ) b e \r / / - - - - 0076620 - - - - - - - - - - - - - - - - * 0076720 - - - - - - - \r [ \r m a n i f e 0076740 s t c u r s o r B i t M a p 0076760 = 4 3 1 b \r f o r i = 0 0077000 t o 1 5 d o c u r s o r 0077020 B i 376 \0 036 017 371 t M a p ! i = 0077040 n o t c u r s o r B i t M a p 0077060 ! i \r ] \r 377 \0 \0 I f s F t p U t 0077100 i l . b c p l \0 373 231 \b V 202 \0 \0 376 0077120 001 \0 356 % / / I f s F t p U t i 0077140 l . b c p l - - U t i l i t 0077160 y r o u t i n e s \r / / C o 0077200 p y r i g h t X e r o x C o 0077220 r p o r a t i o n 1 9 7 9 , 0077240 1 9 8 0 , 1 9 8 1 , 1 9 8 2 0077260 \r / / L a s t m o d i f i e 0077300 d M a y 1 1 , 1 9 8 2 0077320 4 : 2 6 P M b y T a f t \r 0077340 \r g e t " P u p 0 . d e c l " 0077360 \r g e t " P u p 1 . d e c l " 0077400 \r g e t " P u p R T P . d e c 0077420 l " \r g e t " I f s . d e c l 0077440 " \r g e t E r r R e c , f t 0077460 p E c , e r r o r S t r i n g 0077500 f r o m " I f s S y s t e m 0077520 I n f o 376 001 \0 363 274 . d e c l " \r 0077540 g e t " I f s F i l e s . d e 0077560 c l " \r g e t " I f s D i r s 0077600 . d e c l " \r g e t " I f s F 0077620 t p P r o t . d e c l " \r \r e x 0077640 t e r n a l \r [ \r / / o u t g 0077660 o i n g p r o c e d u r e s \r 0077700 F t p S M a k e S F I L ; F t 0077720 p S S e n d M a r k \r F t p S F 0077740 i l l P L F r o m L D ; F t p 0077760 S C h e c k A c c e s s ; F t 0100000 p S C h e c k C o n n e c t i o 0100020 n \r \r / / i n c o m i n g p 0100040 r o c e d u r e s \r E x t r a c 0100060 t S u b s t r i n g ; S t r i 0100100 n g C o m p a r e ; E x p a n 0100120 d T e m p l a t e 376 001 \0 & 360 \r I 0100140 F S P r i n t E r r o r ; L o 0100160 g i n ; C o n n e c t ; M o 0100200 v e B l o c k \r S y s F r e e ; 0100220 F r e e P o i n t e r \r L o c 0100240 k T r a n s f e r L e a d e r P 0100260 a g e ; G e t B u f f e r F o 0100300 r F D ; D e s t r o y F D \r F 0100320 T P M ; F r e e P L i s t ; 0100340 I n i t P L i s t \r L o o k u p 0100360 E r r o r C o d e \r \r / / i n 0100400 c o m i n g s t a t i c s \r C 0100420 t x R u n n i n g \r ] \r \r / / - 0100440 - - - - - - - - - - - - - - - - * 0100520 - - - - - - - - - - - - - - 376 001 0100540 \0 201 h - - - - - - - - - - - - \r 0100560 l e t F t p S S e n d M a r k 0100600 ( m a r k , e c , a r g 0 , 0100620 a r g 1 , a r g 2 , a r g 0100640 3 , a r g 4 ) = v a l o f 0100660 \r / / - - - - - - - - - - - - - 0100700 - - - - - - - - - - - - - - - - * 0100760 - - - - - - - - - - - - - - \r / 0101000 / E x p a n d s e c i n t 0101020 o a n F t p e r r o r c 0101040 o d e a n d s t r i n g . \r 0101060 / / T h e n e x t s t e p 0101100 i s u s u a l l y t o r 0101120 e t u r n f a l s e , \r / / 0101140 s o 376 001 \0 277 322 t h i s r o 0101160 u t i n e s u p p l i e s t 0101200 h e ' f a l s e ' v a l u e 0101220 a l l o w i n g y o u t o 0101240 s a y : \r / / u n l e s 0101260 s I F S D e l e t e F i l e ( 0101300 . . . ) r e s u l t i s F t 0101320 p S S e n d M a r k ( . . . ) \r 0101340 [ \r l e t e r r R e c = L 0101360 o o k u p E r r o r C o d e ( e 0101400 c ) \r F T P M ( m a r k , e r 0101420 r R e c > > E r r R e c . f t p 0101440 E c , l v e r r R e c > > E 0101460 r r R e c . e r r o r S t r i n 0101500 g , \r f a l s e , a r g 0 , 0101520 a r g 1 , a r g 2 , a r g 0101540 3 , a r g 4 ) 376 001 \0 214 g \r S y 0101560 s F r e e ( e r r R e c ) \r r e 0101600 s u l t i s f a l s e \r ] \r \r 0101620 / / - - - - - - - - - - - - - - 0101640 - - - - - - - - - - - - - - - - * 0101720 - - - - - - - - - - - - - \r a n 0101740 d F t p S C h e c k C o n n e 0101760 c t i o n ( ) = v a l o f \r 0102000 / / - - - - - - - - - - - - - - 0102020 - - - - - - - - - - - - - - - - * 0102100 - - - - - - - - - - - - - \r / / 0102120 D o n o t c a l l f r o 0102140 m M T P s e r v e r ; 376 001 \0 0102160 _ 227 o n l y F T P s e r v 0102200 e r \r [ \r i f C t x R u n n i 0102220 n g > > F t p C t x . b s p S o 0102240 c > > R T P S o c . s t a t e 0102260 n e s t a t e O p e n t h e 0102300 n \r [ \r i f C t x 0102320 R u n n i n g > > F t p C t x . 0102340 f d n e 0 t h e n \r 0102360 C t x R u n n i n g > > F 0102400 t p C t x . f d = D e s t r 0102420 o y F D ( C t x R u n n i n g > 0102440 > F t p C t x . f d ) \r r 0102460 e s u l t i s f a l s e \r 0102500 ] \r r e s u l t i s t r u e 0102520 \r ] \r \f \r / / - - - - - - - - - 0102540 - - - - - - - - - - - - - - - - 0102560 - - 376 001 \0 377 Z - - - - - - - - - 0102600 - - - - - - - - - - - - - - - - * 0102640 - - - - - - - \r a n d F t p S 0102660 C h e c k A c c e s s ( p l ) 0102700 = v a l o f \r / / - - - - - - 0102720 - - - - - - - - - - - - - - - - * 0103020 - - - - - \r / / C h e c k l 0103040 o g i n / c o n n e c t p a r 0103060 a m e t e r s i n p l . \r [ 0103100 \r l e t u i = C t x R u n 0103120 n i n g > > F t p C t x . u s e 0103140 r I n f o \r \r / / L o g i n 0103160 p a r a m e t 376 001 \0 021 ? e r s \r 0103200 l e t e c = L o g i n ( p 0103220 l > > P L . U N A M , p l > > 0103240 P L . U P S W , u i ) \r \r / / 0103260 C o n n e c t p a r a m e t 0103300 e r s \r i f e c e q 0 t 0103320 h e n \r e c = C o n n 0103340 e c t ( p l > > P L . C N A M , 0103360 p l > > P L . C P S W , u i 0103400 ) \r \r r e s u l t i s e c e 0103420 q 0 ? t r u e , F t p S S 0103440 e n d M a r k ( m a r k N o , 0103460 e c ) \r ] \r \r / / - - - - - - - 0103500 - - - - - - - - - - - - - - - - * 0103560 - - - - - - - - - - - - 376 001 \0 005 0103600 207 - - - - - - - - \r a n d F t 0103620 p S M a k e S F I L ( p l ) b 0103640 e \r / / - - - - - - - - - - - - 0103660 - - - - - - - - - - - - - - - - * 0103740 - - - - - - - - - - - - - - - \r 0103760 / / B u i l d s a s e r v 0104000 e r F i l e n a m e f r o m 0104020 t h e i n f o r m a t i o n 0104040 i n p l . \r / / T h e r e 0104060 s u l t i s l e f t i n 0104100 p l > > P L . S F I L . \r [ \r / 0104120 / I f t h e r e i s n o 0104140 n a m e b o d y , c o n s 0104160 t r u c t a b l a n k o n 0104200 e 376 001 \0 a 312 \r i f p l > > P L 0104220 . N A M B e q 0 t h e n \r 0104240 p l > > P L . N A M B = 0104260 E x t r a c t S u b s t r i n 0104300 g ( " " ) \r \r / / I f t h e 0104320 r e i s n o s e r v e r 0104340 f i l e n a m e , c o n s t r 0104360 u c t o n e . \r / / T h e 0104400 V e r s i o n p r o p e r t y 0104420 i s n ' t c o r r e c t l y 0104440 h a n d l e d . A v e r 0104460 s i o n s u p p l i e d \r / / 0104500 i n a P L w i l l o 0104520 n l y b e u s e d a s a 0104540 d e f a u l t i f n o S 0104560 e r v e r F i l e n a m e w a 0104600 s \r / / 376 001 \0 8 H s u p p l 0104620 i e d . T h e p r o p e r 0104640 i m p l e m e n t a t i o n 0104660 i s t o h a n d l e i t 0104700 t h e w a y \r / / d e f a 0104720 u l t d i r e c t o r i e s 0104740 a r e : p a s s t h e d e 0104760 f a u l t v e r s i o n f r 0105000 o m t h e P L t o \r / / 0105020 t h e d i r e c t o r y m 0105040 o d u l e , w h e r e C r e 0105060 a t e F D c a n d e c i d e 0105100 w h e t h e r i t i s n 0105120 e e d e d . \r i f p l > > P L 0105140 . S F I L e q 0 t h e n \r 0105160 p l > > P L . S F I L = 0105200 E x p a n d T e m p 376 001 \0 8 323 0105220 l a t e ( ( p l > > P L . V E R 0105240 S e q 0 ? " $ S " , " $ 0105260 S ! $ S " ) , \r p l > > 0105300 P L . N A M B , p l > > P L . 0105320 V E R S ) \r \r / / I f a d 0105340 i r e c t o r y i s s p e c 0105360 i f i e d , s t r i p o f f 0105400 t h e o u t e r < > i 0105420 f p r e s e n t \r i f p l > 0105440 > P L . D I R E n e 0 t h 0105460 e n \r [ \r l e t d 0105500 i r = p l > > P L . D I R E 0105520 \r i f d i r > > S t r i 0105540 n g . c h a r ^ ( d i r > > S t 0105560 r i n g . l e n g t h ) e q 0105600 $ > t h e n \r d i 0105620 376 001 \0 267 177 r > > S t r i n g . l 0105640 e n g t h = d i r > > S t r 0105660 i n g . l e n g t h - 1 \r 0105700 i f d i r > > S t r i n g . 0105720 c h a r ^ 1 e q $ < t h e 0105740 n \r [ \r 0105760 p l > > P L . D I R E = E x 0106000 t r a c t S u b s t r i n g ( d 0106020 i r , 2 ) \r S y s 0106040 F r e e ( d i r ) \r 0106060 ] \r ] \r ] \r \f \r / / - - - 0106100 - - - - - - - - - - - - - - - - * 0106200 - - - - - - - - \r a n d F t p 0106220 S F i l l 376 001 \0 326 267 P L F r o m 0106240 L D ( r e m o t e P L , r e p 0106260 o r t D a m a g e ; n u m a r 0106300 g s n a ) = v a l o f \r / 0106320 / - - - - - - - - - - - - - - - 0106340 - - - - - - - - - - - - - - - - * 0106420 - - - - - - - - - - - - \r / / 0106440 C r e a t e s a n d r e t u 0106460 r n s a P L f r o m t h 0106500 e p r o p e r t i e s o f 0106520 t h e f i l e d e s c r i b 0106540 e d b y F t p C t x . f d . 0106560 \r / / R e t u r n s z e r o 0106600 i f t h e f i l e h a s 0106620 g o n e a w a y 376 001 \0 h " . 0106640 \r [ \r l e t d p r p = r e 0106660 m o t e P L > > P L . D P R P 0106700 / / d e s i r e d p r o p 0106720 e r t i e s \r i f d p r p e 0106740 q 0 t h e n d p r p = 0106760 - 1 / / i f n o n e s 0107000 p e c i f i e d , r e q u e s 0107020 t a l l p r o p e r t i e s 0107040 \r l e t p l = I n i t P L 0107060 i s t ( ) \r l e t f d = C 0107100 t x R u n n i n g > > F t p C t 0107120 x . f d \r l e t d r = f d 0107140 > > F D . d r \r \r / / f i r s 0107160 t g e n e r a t e p r o p e 0107200 r t i e s t h a t c a n b 0107220 e e x t r a c t e d f r o 376 0107240 001 \0 l 224 m t h e F D \r i f 0107260 d p r p < < D P R P . S F I L 0107300 t h e n p l > > P L . S F I L 0107320 = E x t r a c t S u b s t r 0107340 i n g ( l v d r > > D R . p a 0107360 t h N a m e ) \r i f d p r p < 0107400 < D P R P . D E V I t h e n 0107420 p l > > P L . D E V I = E x 0107440 t r a c t S u b s t r i n g ( f 0107460 d > > F D . f s > > I F S . i d 0107500 ) \r i f d p r p < < D P R P . 0107520 D I R E t h e n p l > > P L 0107540 . D I R E = E x t r a c t S 0107560 u b s t r i n g ( l v d r > > 0107600 D R . p a t h N a m e , \r 0107620 2 , f d > > F D . l e n S u 0107640 b D i r 376 001 \0 A 311 S t r i n g - 0107660 1 ) \r i f d p r p < < D P R P 0107700 . N A M B t h e n p l > > P 0107720 L . N A M B = E x t r a c t 0107740 S u b s t r i n g ( l v d r > 0107760 > D R . p a t h N a m e , \r 0110000 f d > > F D . l e n S u b D 0110020 i r S t r i n g + 1 , f d > > 0110040 F D . l e n B o d y S t r i n g 0110060 - 1 ) \r i f d p r p < < D P R 0110100 P . V E R S t h e n p l > > 0110120 P L . V E R S = E x t r a c 0110140 t S u b s t r i n g ( l v d r 0110160 > > D R . p a t h N a m e , \r 0110200 f d > > F D . l e n B o d 0110220 y S t r i n g + 1 ) \r \r / / i 0110240 f n o o t h e 376 001 \0 \f h r 0110260 p r o p e r t i e s d e s i r 0110300 e d , d o n ' t n e e d t 0110320 o r e a d t h e l e a d e 0110340 r p a g e \r m a n i f e s t 0110360 r e q u i r e s L e a d e r P a 0110400 g e = 1 0 0 0 0 0 B r s h 0110420 i f t o f f s e t D P R P . 0110440 T Y P E % \r 1 0 0 0 0 0 B 0110460 r s h i f t o f f s e t D P 0110500 R P . B Y T E % 1 0 0 0 0 0 0110520 B r s h i f t o f f s e t 0110540 D P R P . S I Z E % \r 1 0 0 0110560 0 0 0 B r s h i f t o f f s 0110600 e t D P R P . A U T H % 1 0110620 0 0 0 0 0 B r s h i f t o f 0110640 f s e t D P R P . C D A T 376 001 0110660 \0 004 ] % \r 1 0 0 0 0 0 B r 0110700 s h i f t o f f s e t D P R 0110720 P . R D A T % 1 0 0 0 0 0 B 0110740 r s h i f t o f f s e t D 0110760 P R P . W D A T % \r 1 0 0 0 0111000 0 0 B r s h i f t o f f s e 0111020 t D P R P . C S U M \r i f ( 0111040 d p r p & r e q u i r e s L 0111060 e a d e r P a g e ) n e 0 0111100 t h e n \r [ \r l e t 0111120 i l d = G e t B u f f e r 0111140 F o r F D ( f d ) \r l e t 0111160 e c = L o c k T r a n s f 0111200 e r L e a d e r P a g e ( f d , 0111220 i l d ) / / r e a d \r 0111240 i f e c n e 0 t h e 0111260 n [ 376 001 \0 363 } S y s F r e e 0111300 ( i l d ) ; r e s u l t i s 0111320 F r e e P L i s t ( p l ) ] \r 0111340 \r i f d p r p < < D P R 0111360 P . T Y P E t h e n p l > > 0111400 P L . T Y P E = i l d > > I 0111420 L D . t y p e \r i f d p 0111440 r p < < D P R P . B Y T E t h 0111460 e n p l > > P L . B Y T E = 0111500 i l d > > I L D . b y t e S i 0111520 z e \r i f d p r p < < D 0111540 P R P . A U T H t h e n p l 0111560 > > P L . A U T H = E x t r 0111600 a c t S u b s t r i n g ( l v 0111620 i l d > > I L D . a u t h o r ) 0111640 \r \r i f d p r p < < D P 0111660 R P . C D A T 376 001 \0 221 262 t h e 0111700 n M o v e B l o c k ( l v p 0111720 l > > P L . C D A T , l v i 0111740 l d > > L D . c r e a t e d , 0111760 2 ) \r i f d p r p < < D 0112000 P R P . R D A T t h e n M o 0112020 v e B l o c k ( l v p l > > P 0112040 L . R D A T , l v i l d > > 0112060 L D . r e a d , 2 ) \r i 0112100 f d p r p < < D P R P . W D A 0112120 T t h e n M o v e B l o c k 0112140 ( l v p l > > P L . W D A T , 0112160 l v i l d > > L D . w r i t 0112200 t e n , 2 ) \r \r i f d 0112220 p r p < < D P R P . S I Z E t 0112240 h e n \r [ \r 0112260 l e t s i z = l 376 001 \0 0112300 034 N v p l > > P L . S I Z E \r 0112320 l e t f a = l 0112340 v i l d > > L D . h i n t L a 0112360 s t P a g e F a \r l 0112400 e t l n B y t e s = f d > 0112420 > F D . f s > > I F S . l o g P 0112440 a g e L e n g t h + 1 \r 0112460 l e t n u m P a g e s 0112500 = f a > > F A . p a g e N u m 0112520 b e r - 1 / / d o n ' t 0112540 c o u n t l e a d e r p a 0112560 g e \r u n l e s s 0112600 n u m P a g e s e q - 1 d 0112620 o \r [ \r 0112640 s i z ! 0 = n u 0112660 m P a g e s r s h i f t ( 1 0112700 6 - 376 001 \0 331 l l n B y t e s ) \r 0112720 s i z ! 1 = 0112740 n u m P a g e s l s h i f t 0112760 l n B y t e s + f a > > F 0113000 A . c h a r P o s \r 0113020 ] \r ] \r \r 0113040 i f d p r p < < D P R P . C 0113060 S U M t h e n p l > > P L . 0113100 C S U M = i l d > > I L D . 0113120 c h e c k s u m \r \r i f 0113140 n a g r 1 & r e p o r t 0113160 D a m a g e & i l d > > I L 0113200 D . d a m a g e d t h e n \r 0113220 F t p S S e n d M a r 0113240 k ( m a r k C o m m e n t , e 0113260 c F i l e D a m a g e d , l v 0113300 d r > > D R 376 \0 0 342 q . p a t 0113320 h N a m e ) \r \r S y s F r 0113340 e e ( i l d ) \r ] \r \r r e 0113360 s u l t i s p l \r ] \r 377 \0 \0 I 0113400 f s F t p O E P . b c p l \0 373 233 0113420 236 005 m \0 \0 376 001 \0 307 371 / / I f s 0113440 F t p S e r v O E P . b c p l \r 0113460 / / C o p y r i g h t X e r 0113500 o x C o r p o r a t i o n 1 0113520 9 7 9 , 1 9 8 3 \r / / L a s 0113540 t m o d i f i e d S e p t e 0113560 m b e r 2 5 , 1 9 8 3 2 0113600 : 0 2 P M b y T a f t \r \r 0113620 e x t e r n a l \r [ \r / / o u 0113640 t g o i n g p r o c e d u r e 0113660 s \r I n i t F t p S e r v O E P 0113700 \r \r / / i n c o m i n g p r 0113720 o c e d u r e s \r D e c l a r e 0113740 O E P ; I f s F t p S e r v \r 0113760 F t p S V e r s i o n ; F t p 0114000 S N o t I m p l ; F t p S R e 0114020 n a m e \r F t p S S 376 001 \0 X w t 0114040 o r e ; F t p S S t o r e F i 0114060 l e ; F t p S S t o r e C l e 0114100 a n u p \r F t p S R e t r i e v 0114120 e ; F t p S R e t r i e v e F 0114140 i l e \r F t p S D e l e t e ; 0114160 F t p S D e l e t e F i l e ; 0114200 F t p S D i r e c t o r y ; F 0114220 t p S S e t P r o p s \r ] \r \r \r 0114240 / / - - - - - - - - - - - - - - 0114260 - - - - - - - - - - - - - - - - * 0114340 - - - - - - - - - - - - - - \r l 0114360 e t I n i t F t p S e r v O E 0114400 P ( o e v ) b e \r / / - - - - 0114420 - - - - - - - - - - - - - - - 376 0114440 001 \0 241 213 - - - - - - - - - - - - 0114460 - - - - - - - - - - - - - - - - * 0114520 - - - - - - - - - - - - - \r [ \r 0114540 D e c l a r e O E P ( o e v , 0114560 l v I f s F t p S e r v , l 0114600 v F t p S V e r s i o n , \r 0114620 l v F t p S S t o r e , l v 0114640 F t p S S t o r e F i l e , 0114660 l v F t p S S t o r e C l e a 0114700 n u p , \r l v F t p S R e t 0114720 r i e v e , l v F t p S R e 0114740 t r i e v e F i l e ) \r D e c l 0114760 a r e O E P ( o e v , l v F 0115000 t p S D e l e t e , l v F t 0115020 p S D e l e t e F i l e , \r l 0115040 v F t 376 \0 ? 277 R p S D i r e c 0115060 t o r y , l v F t p S R e n 0115100 a m e , l v F t p S N o t I 0115120 m p l , l v F t p S S e t P 0115140 r o p s ) \r ] \r 377 \0 \0 C o m p i 0115160 l e I f s F t p . c m \0 373 230 025 272 0115200 002 \0 \0 376 \0 213 . 205 B c p l / f o 0115220 I f s F t p I n i t . b c p l 0115240 I f s F t p S e r v . b c p l 0115260 I f s F t p S t o r e . b c p l 0115300 I f s F t p R e t r i e v e . 0115320 b c p l I f s F t p C m d . b 0115340 c p l I f s F t p X f e r . b 0115360 c p l I f s F t p U t i l . b 0115400 c p l I f s F t p O E P . b c 0115420 p l \r 377 \0 \0 I f s F t p . c m \0 0115440 373 223 361 317 306 \0 \0 376 \0 255 f 327 I f s F 0115460 t p P r o t . d e c l I f s F 0115500 t p I n i t . b c p l I f s F 0115520 t p S e r v . b c p l I f s F 0115540 t p S t o r e . b c p l I f s 0115560 F t p R e t r i e v e . b c p l 0115600 I f s F t p C m d . b c p l 0115620 I f s F t p X f e r . b c p l 0115640 I f s F t p U t i l . b c p l 0115660 I f s F t p O E P . b c p l C 0115700 o m p i l e I f s F t p . c m 0115720 I f s F t p . c m 374 0115732