$ od -c -N 50000 [Pixel]<IFS>IfsTelnet.dm!2 0000000 377 \0 \0 I f s T e l n e t . d e c 0000020 l \0 373 223 361 331 263 \0 \0 376 001 \0 " 220 / / 0000040 I f s T e l n e t . d e c l 0000060 - - d e c l a r a t i o n s 0000100 f o r I F S s e r v e r t 0000120 e l n e t \r / / C o p y r i g 0000140 h t X e r o x C o r p o r a 0000160 t i o n 1 9 7 9 \r \r / / L a 0000200 s t m o d i f i e d J u n e 0000220 2 2 , 1 9 7 9 3 : 4 7 0000240 P M b y T a f t \r \r / / r 0000260 e q u i r e s p r e v i o u s 0000300 " g e t " o f I f s R s . 0000320 d e c l \r \r / / - - - - - - - - 0000340 - - - - - - - - - - - - - - - - * 0000420 - - - - - - - - - - - - - - 376 001 0000440 \0 025 330 - - - - - \r s t r u c t u 0000460 r e R B D : / / R i n g 0000500 B u f f e r D e s c r i p t o 0000520 r ( f o r r i n g b u f f 0000540 e r p a c k a g e ) \r / / - - 0000560 - - - - - - - - - - - - - - - - * 0000660 - - - - - - - - - \r [ \r b u f f 0000700 e r w o r d \t \t / / - > t h 0000720 e b u f f e r i t s e l f \r 0000740 b l a n k w o r d 3 \t \t / / 0000760 o t h e r s t u f f u s e d 0001000 b y p a c k a g e \r ] \r \r / 0001020 / - - - - - - - - - - - - - - - 0001040 - - - 376 001 \0 005 o - - - - - - - - 0001060 - - - - - - - - - - - - - - - - * 0001140 - \r s t r u c t u r e T C t x 0001160 : / / T e l n e t C o n t 0001200 e x t \r / / - - - - - - - - - - 0001220 - - - - - - - - - - - - - - - - * 0001320 - \r [ \r @ R S C t x \r b s p S t 0001340 r e a m w o r d \t \t / / - > 0001360 B S P s t r e a m \r c a p a b 0001400 i l i t i e s w o r d \t / / p 0001420 o t e n t i a l u s e r c a 0001440 p a b i l i t i 376 001 \0 251 002 e s \r 0001460 t o p K T w o r d \t \t / / - > 0001500 t o p - l e v e l k e y w o 0001520 r d t a b l e \r i R B D @ R 0001540 B D \t \t / / i n p u t r i n g 0001560 b u f f e r d e s c r i p t 0001600 o r \r o T i m i n g M a r k s 0001620 w o r d \t / / u n a c k n o w l 0001640 e d g e d o u t g o i n g t 0001660 i m i n g m a r k s \r i S y n 0001700 c s w o r d \t \t / / i n c o m 0001720 i n g s y n c c o u n t - 0001740 - i n t e r r u p t s m i n 0001760 u s d a t a m a r k s \r p e 0002000 n d i n g M a r k w o r d \t / 0002020 / p e n d i n g m a r k b y 0002040 t e ( a r g u m e n t 376 001 \0 0002060 223 ; b y t e e x p e c t e d ) 0002100 \r f l a g s w o r d = \r 0002120 [ \r a b o r t i n g b 0002140 i t 3 = \t / / a b o r t i n 0002160 g c o m m a n d ( f o r w 0002200 h a t e v e r r e a s o n ) \r 0002220 [ \r c o 0002240 n t r o l C b i t \t / / a b o 0002260 r t c a u s e d b y c o n 0002300 t r o l - C \r k i l 0002320 l b i t 2 = \r 0002340 [ \r t i 0002360 m e o u t b i t \t / / a b o r 0002400 t c a u s e d b y t i m e 0002420 o u t \r l o g 0002440 o u t b i t \t / / l o g o u t 0002460 r 376 001 \0 { 265 e q u e s t ( o 0002500 r c o n n e c t i o n c l o 0002520 s e d b y u s e r ) \r 0002540 ] \r ] \r 0002560 p a u s e b i t \t \t / / 0002600 p a u s e a t e n d o f 0002620 p a g e \r i n i t i a l i 0002640 z e d b i t \t / / c o n t e x 0002660 t f u l l y i n i t i a l i 0002700 z e d , o k t o r u n T 0002720 e l n e t P r o c e s s \r 0002740 ] \r n u m L i n e w o r d \t \t 0002760 / / l e n g t h o f p a g e 0003000 i n l i n e s \r t h i s L i 0003020 n e w o r d \t \t / / c u r r e 0003040 n t l i n e n u m b e r \r ] 0003060 \r m a n i f e 376 001 \0 232 374 s t l 0003100 e n T C t x = s i z e T C 0003120 t x / 1 6 \r \r m a n i f e s t \r 0003140 [ \r s o c k e t T e l n e t = 0003160 1 \t / / w e l l - k n o w n 0003200 P u p s o c k e t \r \r l e n T 0003220 y p e i n B u f = 4 0 \t / / 0003240 l e n g t h o f t y p e a h 0003260 e a d b u f f e r ( = 2 * 0003300 n u m b e r o f c h a r s ) 0003320 \r m a x C m d C h a r s = 1 0003340 5 0 \t / / m a x l e n g t h 0003360 o f m a i n c o m m a n d 0003400 l i n e \r m a x C m d P h r a s 0003420 e s = 1 0 \t / / m a x n u 0003440 m b e r o f p h r a s e s 0003460 i n m a i n c o m m 376 001 \0 354 0003500 220 a n d l i n e \r t e l n e t 0003520 G e t s T i m e o u t = 1 8 0003540 0 0 0 / / 3 m i n u t e 0003560 t i m e o u t f o r G e t s 0003600 \r t e l n e t P u t s T i m e o 0003620 u t = 6 0 0 0 / / 1 m 0003640 i n u t e t i m e o u t f o 0003660 r P u t s \r \r / / T e l n e t 0003700 m a r k t y p e s \r m a r k 0003720 S y n c = 1 \t \t / / d a t a 0003740 m a r k f o r s y n c p 0003760 r o t o c o l \r m a r k L i n e 0004000 W i d t h = 2 \t / / l i n e 0004020 w i d t h p a r a m e t e r 0004040 \r m a r k P a g e L e n g t h 0004060 = 3 \t / / p a g e l e n g t 0004100 h 376 001 \0 276 337 p a r a m e t e r 0004120 \r m a r k T e r m i n a l T y p 0004140 e = 4 \t / / t e r m i n a l 0004160 t y p e p a r a m e t e r \r 0004200 m a r k T i m i n g = 5 \t \t 0004220 / / t i m i n g m a r k \r m a 0004240 r k T i m i n g R e p l y = 0004260 6 \t / / t i m i n g m a r k 0004300 r e p l y \r \r t e r m T y p e D 0004320 i s p l a y = 1 0 \t / / t e 0004340 r m i n a l t y p e f o r 0004360 d i s p l a y ( p a u s e a 0004400 t e n d o f p a g e ) \r \r 0004420 / / e r r o r c o d e s \r e c 0004440 U n c a u g h t T e l n e t E r 0004460 r o r = 3 0 0 \r ] \r \f \r / / 0004500 F o l l o 376 001 \0 \v 321 w i n g 0004520 a r e d e f i n i t i o n s 0004540 t h a t a r e r e a l l y 0004560 p r i v a t e t o s o m e 0004600 m o d u l e \r / / b u t t h 0004620 a t a r e d e c l a r e d 0004640 h e r e b e c a u s e t h a 0004660 t m o d u l e i s s p l i 0004700 t i n t o \r / / m u l t i p 0004720 l e s o u r c e f i l e s . 0004740 \r \r / / D e f i n i t i o n s 0004760 f o r t h e I f s T e l n 0005000 e t L i s t * m o d u l e s \r 0005020 \r m a n i f e s t \r [ \r / / l i 0005040 s t c o n t r o l f l a g s 0005060 \r l i s t T y p e = # 1 0 0 0005100 0 0 0 \r l i s t L e n 376 \0 246 331 245 0005120 g t h = # 4 0 0 0 0 \r l i s 0005140 t S i z e = # 2 0 0 0 0 \r l 0005160 i s t C r e a t i o n = # 1 0005200 0 0 0 0 \r l i s t W r i t e = 0005220 # 4 0 0 0 \r l i s t R e a d 0005240 = # 2 0 0 0 \r l i s t B a c k 0005260 u p = # 1 0 0 0 \r l i s t T 0005300 i m e s = # 4 0 0 \r l i s t 0005320 A u t h o r = # 2 0 0 \r l i 0005340 s t P r o t e c t i o n = # 0005360 1 0 0 \r ] \r 377 \0 \0 I f s T e l n 0005400 e t . b c p l \0 373 230 336 D R \0 \0 376 0005420 001 \0 f 215 / / I f s T e l n e t 0005440 . b c p l - - t o p l e v 0005460 e l c o m m a n d i n t e r 0005500 p r e t e r a n d u s e f u 0005520 l s u b r o u t i n e s \r / / 0005540 C o p y r i g h t X e r o x 0005560 C o r p o r a t i o n 1 9 7 0005600 9 , 1 9 8 0 , 1 9 8 2 \r / / 0005620 L a s t m o d i f i e d A 0005640 p r i l 9 , 1 9 8 2 5 : 0005660 1 4 P M b y T a f t \r \r g 0005700 e t " I f s R s . d e c l " \r 0005720 g e t " I f s T e l n e t . d 0005740 e c l " \r g e t " C m d S c a 0005760 n . d e c l " \r g e t " I f s 0006000 F i l e s . d e c l " \r \r e x t 0006020 e r n a 376 001 \0 271 272 l \r [ \r / / 0006040 o u t g o i n g p r o c e d u 0006060 r e s \r T e l n e t T o p L e v 0006100 e l \r G e t K e y w o r d O r C 0006120 R ; P l u r a l ; T e l n e 0006140 t A b o r t i n g ; T e l n e 0006160 t C o m m a n d L o o p ; T e 0006200 l n e t C o m m a n d Q u i t \r 0006220 T e l n e t S u b c o m m a n d 0006240 P r o m p t ; S e l e c t K e 0006260 y w o r d ; C r e a t e K e y 0006300 w o r d I n t e g e r M a p ; 0006320 T e l n e t C o n f i r m \r \r / 0006340 / i n c o m i n g p r o c e 0006360 d u r e s \r I n i t T e l n e t 0006400 J o b ; C l e a n u p T e l n 0006420 e t J o b \r I n i 376 001 \0 227 244 t C 0006440 m d ; G e t K e y w o r d ; 0006460 G e t P h r a s e ; T e r m i 0006500 n a t i n g C h a r ; C o n f 0006520 i r m \r C r e a t e K e y w o r 0006540 d T a b l e ; D e s t r o y K 0006560 e y w o r d T a b l e ; I n s 0006600 e r t K e y w o r d \r E n a b l 0006620 e C a t c h ; D i s a b l e C 0006640 a t c h ; E n d C a t c h \r D 0006660 e f a u l t A r g s ; R e t u 0006700 r n F r o m ; I F S E r r o r 0006720 ; C a l l W i t h A r g V e c 0006740 \r P u t s ; E n d o f s ; C 0006760 l o s e s ; R e s e t s ; E 0007000 r r o r s ; W s s ; W s \r \r 0007020 / / i n c o m i n g s t 376 001 0007040 \0 375 302 a t i c s \r C t x R u n n 0007060 i n g ; k e y s ; d s p \r a 0007100 t S u b P r o m p t ; b a n g 0007120 S u b P r o m p t ; p l u r a 0007140 l S t r i n g ; s i n g u l a 0007160 r S t r i n g \r ] \r \r m a n i f 0007200 e s t e c R e t u r n F r o m 0007220 R e t u r n e d = 1 0 3 \r \r 0007240 \r / / - - - - - - - - - - - - - 0007260 - - - - - - - - - - - - - - - - * 0007340 - - - - - - - - - - - - - - \r l 0007360 e t T e l n e t T o p L e v e 0007400 l ( c t x ) b e \r / / - - - - 0007420 - - - - - - - - - - - - - - - - 0007440 - - - 376 001 \0 004 002 - - - - - - - - 0007460 - - - - - - - - - - - - - - - - * 0007520 - - - - - - - - - - - - \r / / 0007540 T o p - l e v e l p r o c e d 0007560 u r e f o r t e l n e t s 0007600 e r v e r c o n t e x t . \r [ 0007620 \r I n i t T e l n e t J o b ( c 0007640 t x ) \r \r [ / / r e p e 0007660 a t \r T e l n e t C o m m 0007700 a n d L o o p ( c t x > > T C t 0007720 x . t o p K T , \r ( c t 0007740 x > > T C t x . u s e r I n f o 0007760 > > U s e r I n f o . c a p a b 0010000 i l i t i e s n e 0 ? " * 0010020 n ! " , " * n @ " ) ) \r 0010040 i f c t x > > 376 001 \0 D 376 T C t 0010060 x . k i l l b r e a k \r 0010100 i f c t x > > T C t x . c o n 0010120 t r o l C t h e n \r 0010140 [ \r R e s e t s ( 0010160 d s p ) \r R e s e t 0010200 s ( k e y s ) \r c t 0010220 x > > T C t x . c o n t r o l C 0010240 = f a l s e \r W 0010260 s ( " ^ C " ) \r ] \r 0010300 ] r e p e a t \r \r C l e 0010320 a n u p T e l n e t J o b ( c t 0010340 x ) \r ] \r \f \r / / - - - - - - - 0010360 - - - - - - - - - - - - - - - - * 0010440 - - - - - - - - - - - - - 376 001 \0 0010460 247 r - - - - - - - \r a n d G e 0010500 t K e y w o r d O r C R ( c s , 0010520 k t ) = v a l o f \r / / - 0010540 - - - - - - - - - - - - - - - - * 0010640 - - - - - - - - - - \r / / R e 0010660 t u r n s p o i n t e r t o 0010700 k e y w o r d t a b l e e 0010720 n t r y , o r z e r o i f 0010740 j u s t a c a r r i a g e 0010760 \r / / r e t u r n i s t 0011000 y p e d i n . \r [ \r l e t e 0011020 n t r y = G e t K e y w o r 0011040 d ( c s , k t , t r u e ) \r 0011060 i f 376 001 \0 \r 300 e n t r y e q 0011100 0 t h e n \r [ \r 0011120 R e s e t s ( c s ) \r u n 0011140 l e s s G e t P h r a s e ( c 0011160 s ) e q 0 & T e r m i n 0011200 a t i n g C h a r ( c s ) e q 0011220 $ * n d o \r E r 0011240 r o r s ( c s , e c K e y N o 0011260 t F o u n d ) \r ] \r r e s 0011300 u l t i s e n t r y \r ] \r \r / 0011320 / - - - - - - - - - - - - - - - 0011340 - - - - - - - - - - - - - - - - * 0011420 - - - - - - - - - - - - \r a n d 0011440 T e l n e t C o m m a n d L o 0011460 o p ( k t , 376 001 \0 025 315 p r o m 0011500 p t , r e t u r n O n C R , 0011520 a r g , n u m C h a r s , n 0011540 u m P h r a s e s , \r F 0011560 i x e d P r o c ; n u m a r g 0011600 s n a ) b e \r / / - - - - - 0011620 - - - - - - - - - - - - - - - - * 0011720 - - - - - - \r / / A c c e p t 0011740 s a k e y w o r d t a b l 0011760 e k t w h o s e e n t r i 0012000 e s a r e c o m m a n d p 0012020 r o c e d u r e s . \r / / R e 0012040 p e a t e d l y i n p u t s 0012060 a c o m m a n d k e 376 001 \0 326 0012100 226 y w o r d a n d c a l l s 0012120 P r o c ( c s , a r g ) , 0012140 w h e r e \r / / P r o c i 0012160 s t h e c o r r e s p o n d 0012200 i n g c o m m a n d p r o c 0012220 e d u r e . I f r e t u r 0012240 n O n C R i s t r u e , \r / 0012260 / r e t u r n s i f j u 0012300 s t a c a r r i a g e r e 0012320 t u r n i s t y p e d i n 0012340 r e s p o n s e t o t h e 0012360 p r o m p t . \r / / I f F 0012400 i x e d P r o c i s s u p p 0012420 l i e d , t h e n i n s t e 0012440 a d o f c a l l i n g P r 0012460 o c ( c s , a r g ) i t \r / 0012500 / 376 001 \0 - 250 c a l l s F i 0012520 x e d P r o c ( c s , e n t r 0012540 y , a r g ) . \r [ \r D e f a u 0012560 l t A r g s ( l v n a , - 2 0012600 , f a l s e , 0 , m a x C 0012620 m d C h a r s , m a x C m d P 0012640 h r a s e s , 0 ) \r [ 0012660 / / r e p e a t \r l e t 0012700 c s = I n i t C m d ( n u m 0012720 C h a r s , n u m P h r a s e 0012740 s ) \r i f c s n e 0 0012760 t h e n \r [ \r 0013000 W s s ( c s , p r o m 0013020 p t ) \r l e t e n 0013040 t r y = G e t K e y w o r d 0013060 O r C R ( c s , k t ) \r 0013100 i f 376 001 \0 035 - e n t r y 0013120 n e 0 t h e n \r 0013140 t e s t F i x e d P r 0013160 o c e q 0 \r 0013200 i f s o ( e n t r y ! 0013220 0 ) ( c s , a r g ) \r 0013240 i f n o t F i 0013260 x e d P r o c ( c s , e n t r 0013300 y , a r g ) \r C l 0013320 o s e s ( c s ) \r i 0013340 f e n t r y e q 0 & r 0013360 e t u r n O n C R b r e a k \r 0013400 ] \r ] r e p 0013420 e a t u n t i l T e l n e t A 0013440 b o r t i n g ( ) \r ] \r \r / / - 0013460 - - - - - - - - - - - - - - - - 0013500 - - - - - - - - - - - 376 001 \0 275 302 0013520 - - - - - - - - - - - - - - - - * 0013560 - - - - - - - - - - - - - - - \r 0013600 a n d T e l n e t C o m m a n 0013620 d Q u i t ( c s , n i l ) b 0013640 e \r / / - - - - - - - - - - - - 0013660 - - - - - - - - - - - - - - - - * 0013740 - - - - - - - - - - - - - - - \r 0013760 / / T h i s c o m m a n d 0014000 p r o c e d u r e q u i t s 0014020 o u t o f t h e i n n e r 0014040 m o s t T e l n e t C o m m a 0014060 n d L o o p \r [ \r C l o s e s ( 0014100 c s ) \r R e t u r n F r o m ( T 0014120 376 001 \0 n ; e l n e t C o m m a n 0014140 d L o o p ) \r I F S E r r o r ( 0014160 e c R e t u r n F r o m R e t u 0014200 r n e d ) \r ] \r \f \r / / - - - - 0014220 - - - - - - - - - - - - - - - - * 0014320 - - - - - - - \r a n d T e l n 0014340 e t S u b c o m m a n d P r o m 0014360 p t ( ) = \r / / - - - - - - - 0014400 - - - - - - - - - - - - - - - - * 0014500 - - - - \r C t x R u n n i n g 0014520 > > T C t 376 001 \0 ~ j x . u s e r 0014540 I n f o > > U s e r I n f o . c 0014560 a p a b i l i t i e s n e 0 0014600 ? \r b a n g S u b P r o m p 0014620 t , a t S u b P r o m p t ; \r 0014640 \r / / - - - - - - - - - - - - - 0014660 - - - - - - - - - - - - - - - - * 0014740 - - - - - - - - - - - - - - \r a 0014760 n d P l u r a l ( n u m b e r 0015000 ) = n u m b e r e q 1 ? 0015020 s i n g u l a r S t r i n g , 0015040 p l u r a l S t r i n g ; \r 0015060 / / - - - - - - - - - - - - - - 0015100 - - - - - - - - - - - - - - - - 0015120 - - - - - - - - - - 376 001 \0 340 317 - 0015140 - - - - - - - - - - - - - - - - * 0015200 - - \r \r / / - - - - - - - - - - 0015220 - - - - - - - - - - - - - - - - * 0015320 - \r a n d T e l n e t A b o r 0015340 t i n g ( ) = C t x R u n n 0015360 i n g > > T C t x . a b o r t i 0015400 n g n e 0 \r / / - - - - - - 0015420 - - - - - - - - - - - - - - - - * 0015520 - - - - - \r \r / / - - - - - - 376 0015540 001 \0 006 8 - - - - - - - - - - - - 0015560 - - - - - - - - - - - - - - - - * 0015640 - - - - - - - - - \r a n d S e 0015660 l e c t K e y w o r d ( c s , 0015700 k e y 1 , n i l , n i l , 0015720 n i l , n i l , n i l , n 0015740 i l , n i l , n i l , n i 0015760 l , \r n i l , n i l , 0016000 n i l , n i l , n i l ; 0016020 n u m a r g s n a ) = v a 0016040 l o f \r / / - - - - - - - - - - 0016060 - - - - - - - - - - - - - - - - * 0016140 - - - - 376 001 \0 027 257 - - - - - - - 0016160 - - - - - - \r / / T a k e s 0016200 a l i s t o f u p t o 0016220 1 5 k e y w o r d s , c a l 0016240 l s G e t K e y w o r d w i 0016260 t h t h a t l i s t , \r / / 0016300 a n d r e t u r n s t h e 0016320 i n d e x ( 1 - 1 5 ) o f 0016340 t h e o n e m a t c h i n 0016360 g t h e w o r d t y p e d 0016400 i n . \r / / K e y w o r d 0016420 a r g u m e n t s m a y b e 0016440 o m i t t e d b y s u p p 0016460 l y i n g z e r o i n s o 0016500 m e a r g u m e n t \r / / p 0016520 o s i t i o n s ; t h i s p 0016540 e r m i t s k e 376 001 \0 344 324 y w 0016560 o r d s t o b e i n c l u 0016600 d e d c o n d i t i o n a l l 0016620 y . \r [ \r P u t s ( c s , $ * 0016640 s ) \r l e t k t = n i l \r 0016660 i f E n a b l e C a t c h ( c 0016700 s ) t h e n [ D e s t r o 0016720 y K e y w o r d T a b l e ( k t 0016740 ) ; E n d C a t c h ( c s ) 0016760 ] \r k t = C a l l W i t h A 0017000 r g V e c ( C r e a t e K e y w 0017020 o r d I n t e g e r M a p , l 0017040 v k e y 1 , n a - 1 ) \r l e 0017060 t w h i c h = G e t K e y 0017100 w o r d ( c s , k t ) ! 0 \r D 0017120 e s t r o y K e y w o r d T a b 0017140 l e ( k t ) \r D i s a b l e 376 001 0017160 \0 353 g C a t c h ( c s ) \r r e s 0017200 u l t i s w h i c h \r ] \r \r / 0017220 / - - - - - - - - - - - - - - - 0017240 - - - - - - - - - - - - - - - - * 0017320 - - - - - - - - - - - - \r a n d 0017340 C r e a t e K e y w o r d I n 0017360 t e g e r M a p ( k e y 1 , n 0017400 i l , n i l , n i l , n i 0017420 l , n i l , n i l , n i l 0017440 , n i l , \r n i l , 0017460 n i l , n i l , n i l , n 0017500 i l , n i l ; n u m a r g s 0017520 n a ) = v a l o f \r / / - 0017540 - - - - - - - - - - - - - - - - 0017560 - - - 376 001 \0 035 \a - - - - - - - - 0017600 - - - - - - - - - - - - - - - - * 0017640 - - - - - - - - - - - - - - - \r 0017660 / / T a k e s a l i s t 0017700 o f u p t o 1 5 k e y w 0017720 o r d s a n d r e t u r n s 0017740 a k e y w o r d t a b l e 0017760 \r / / c o n t a i n i n g t 0020000 h o s e k e y w o r d s , e 0020020 a c h o f w h o s e e n t 0020040 r i e s i s t h e i n d e 0020060 x ( 1 - 1 5 ) \r / / o f t 0020100 h e c o r r e s p o n d i n g 0020120 k e y w o r d i n t h e 0020140 a r g u m e n t l i s t . \r / 0020160 / K e y w o r 376 001 \0 8 7 d a 0020200 r g u m e n t s m a y b e 0020220 o m i t t e d b y s u p p l 0020240 y i n g z e r o i n s o m 0020260 e a r g u m e n t \r / / p o 0020300 s i t i o n s ; t h i s p e 0020320 r m i t s k e y w o r d s t 0020340 o b e i n c l u d e d c o 0020360 n d i t i o n a l l y . \r [ \r l 0020400 e t k t = C r e a t e K e 0020420 y w o r d T a b l e ( n a ) \r f 0020440 o r i = 1 t o n a d 0020460 o \r [ \r l e t k e 0020500 y w o r d = ( l v k e y 1 0020520 ) ! ( i - 1 ) \r i f k e 0020540 y w o r d n e 0 t h e n 0020560 I n s e r t K e y w o r d 376 001 \0 0020600 277 G ( k t , k e y w o r d ) ! 0020620 0 = i \r ] \r r e s u l 0020640 t i s k t \r ] \r \r / / - - - - 0020660 - - - - - - - - - - - - - - - - * 0020760 - - - - - - - \r a n d T e l n 0021000 e t C o n f i r m ( s t r i n g 0021020 ; n u m a r g s n a ) = 0021040 v a l o f \r / / - - - - - - - - 0021060 - - - - - - - - - - - - - - - - * 0021160 - - - \r / / R e q u e s t s 0021200 a n 376 \0 352 j A i s o l a t e d 0021220 c o n f i r m a t i o n , i 0021240 . e . , o n e n o t i n 0021260 t h e c o n t e x t o f \r / 0021300 / a n e x i s t i n g c o 0021320 m m a n d l i n e . \r [ \r l e 0021340 t r e s u l t = f a l s e 0021360 \r l e t c c s = I n i t C 0021400 m d ( 5 0 , 1 ) \r i f c c s 0021420 n e 0 t h e n \r [ \r 0021440 r e s u l t = C o n f 0021460 i r m ( c c s , n a g r 0 0021500 & s t r i n g ) \r C l 0021520 o s e s ( c c s ) \r ] \r r 0021540 e s u l t i s r e s u l t \r ] 0021560 \r 377 \0 \0 I f s T e l n e t A d m 0021600 i n . b c p l \0 373 230 , $ 334 \0 \0 376 0021620 001 \0 h 240 / / I f s T e l n e t 0021640 A d m i n . b c p l - - p r 0021660 i v i l e g e d I F S s e r 0021700 v e r t e l n e t c o m m a 0021720 n d s \r / / C o p y r i g h t 0021740 X e r o x C o r p o r a t i 0021760 o n 1 9 7 9 , 1 9 8 1 \r \r / 0022000 / L a s t m o d i f i e d 0022020 N o v e m b e r 2 5 , 1 9 8 0022040 1 2 : 5 7 P M b y T a 0022060 f t \r \r g e t " I f s . d e c 0022100 l " \r g e t " I f s R s . d e 0022120 c l " \r g e t " I f s T e l n 0022140 e t . d e c l " \r g e t " I f 0022160 s F i l e s . d e c l " \r g e t 0022200 " I f s D i r s . d e c l " \r 0022220 \r e x t 376 001 \0 311 276 e r n a l \r [ 0022240 \r / / o u t g o i n g p r o 0022260 c e d u r e s \r E x e c E n a b 0022300 l e ; E x e c D i s a b l e ; 0022320 E x e c C r e a t e ; E x e 0022340 c D e s t r o y ; E x e c H a 0022360 l t \r \r / / i n c o m i n g 0022400 p r o c e d u r e s \r E x e c C 0022420 h a n g e D i r e c t o r y ; 0022440 G e t S t r i n g ; C o n f i 0022460 r m ; T e l n e t C o m m a n 0022500 d Q u i t \r E n a b l e C a t c 0022520 h ; E n d C a t c h ; \r E n a 0022540 b l e T i m e S e r v ; E n a 0022560 b l e N a m e S e r v ; E n a 0022600 b l e B o o t S e r v ; E n a 0022620 b l e P r e s s \r 376 001 \0 P : G e 0022640 t D I F ; R e a d D I F ; D 0022660 e s t r o y U s e r ; P a s s 0022700 w o r d \r W s s ; W s ; P u 0022720 t s ; C l o s e s ; R e s e 0022740 t s ; E r r o r s ; P u t T 0022760 e m p l a t e ; I F S P r i n 0023000 t E r r o r ; \r S y s A l l o c 0023020 a t e Z e r o ; S y s F r e e 0023040 ; M o v e B l o c k ; S e t 0023060 B l o c k ; F r e e P o i n t 0023100 e r \r \r / / i n c o m i n g 0023120 s t a t i c s \r C t x R u n n i 0023140 n g ; d s p ; l o g i n K T 0023160 ; e n a b l e K T ; e n t F 0023200 l a g ; h a l t F l a g ; \r ] 0023220 \r \r / / - - - - - - - - - - 376 001 0023240 \0 P 343 - - - - - - - - - - - - - 0023260 - - - - - - - - - - - - - - - - * 0023340 - - - - \r l e t E x e c E n a 0023360 b l e ( c s ) b e \r / / - - - 0023400 - - - - - - - - - - - - - - - - * 0023500 - - - - - - - - \r [ \r i f C t 0023520 x R u n n i n g > > T C t x . c 0023540 a p a b i l i t i e s < < C a p 0023560 a b i l i t i e s . w h e e l 0023600 e q 0 t h e n E r r o r s 0023620 ( c s , 0 ) \r C t x R u n n i 0023640 n g > 376 001 \0 331 231 > T C t x . u s 0023660 e r I n f o > > U s e r I n f o 0023700 . c a p a b i l i t i e s . w h 0023720 e e l = t r u e \r C t x R u 0023740 n n i n g > > T C t x . t o p K 0023760 T = e n a b l e K T \r T e l 0024000 n e t C o m m a n d Q u i t ( c 0024020 s ) / / f o r c e p r o m 0024040 p t s t r i n g t o b e 0024060 r e c o m p u t e d \r ] \r \r / / 0024100 - - - - - - - - - - - - - - - - * 0024200 - - - - - - - - - - - \r a n d 0024220 E x e c D i s a b l e ( c s ) 0024240 b e \r / / - - - 376 001 \0 } 236 - - - 0024260 - - - - - - - - - - - - - - - - * 0024360 - - - - - \r [ \r C t x R u n n i 0024400 n g > > T C t x . u s e r I n f 0024420 o > > U s e r I n f o . c a p a 0024440 b i l i t i e s . w h e e l = 0024460 f a l s e \r C t x R u n n i n 0024500 g > > T C t x . t o p K T = 0024520 l o g i n K T \r T e l n e t C o 0024540 m m a n d Q u i t ( c s ) / 0024560 / f o r c e p r o m p t s t 0024600 r i n g t o b e r e c o m 0024620 p u t e d \r ] \r \f \r / / - - - - 0024640 - - - - - - - - - - - - - 376 001 \0 0024660 274 n - - - - - - - - - - - - - - 0024700 - - - - - - - - - - - - - - - - * 0024740 - - - - - - - - - - - - \r a n d 0024760 E x e c C r e a t e ( c s ) 0025000 b e \r / / - - - - - - - - - - - 0025020 - - - - - - - - - - - - - - - - * 0025120 \r / / C r e a t e < d i r e 0025140 c t o r y > < p a s s w o r d 0025160 > < s u b c o m m a n d s > \r 0025200 [ \r W s s ( c s , " ( d i r 0025220 e c t o r y ) " ) \r l e t n 0025240 a m e , d i f = 0 , 0 \r 0025260 i f 376 001 \0 3 321 E n a b l e C a 0025300 t c h ( c s ) t h e n \r 0025320 [ \r F r e e P o i n t e r 0025340 ( l v n a m e , l v d i f 0025360 ) \r E n d C a t c h ( c s 0025400 ) \r ] \r \r n a m e = G 0025420 e t S t r i n g ( c s , 0 , 0025440 W s s , " d i r e c t o r y 0025460 n a m e " ) \r l e t d i f N a 0025500 m e = n i l \r d i f = G 0025520 e t D I F ( n a m e , t r u e 0025540 , l v d i f N a m e ) / 0025560 / a c c e p t o n l y r e 0025600 a l D I F \r l e t n e w = 0025620 d i f e q 0 \r t e s t n 0025640 e w \r i f s o \r 0025660 [ \r 376 001 \0 237 375 W s 0025700 s ( c s , " [ N e w ] ( p 0025720 a s s w o r d ) " ) \r 0025740 d i f = R e a d D I F ( 0025760 " D e f a u l t - U s e r " ) \r 0026000 i f d i f e q 0026020 0 t h e n d i f = S y s 0026040 A l l o c a t e Z e r o ( l e n 0026060 D I F ) \r l e t p 0026100 a s s w o r d = G e t S t r 0026120 i n g ( c s , 0 , W s s , 0026140 " p a s s w o r d " ) \r 0026160 t e s t p a s s w o r d > 0026200 > S t r i n g . l e n g t h e 0026220 q 0 \r i f s 0026240 o S e t B l o c k ( l v d i 0026260 f > > D I F . p a s s w 376 001 \0 Z 0026300 017 o r d , - 1 , s i z e D 0026320 I F . p a s s w o r d / 1 6 ) \r 0026340 i f n o t P 0026360 a s s w o r d ( p a s s w o r d 0026400 , l v d i f > > D I F . p a 0026420 s s w o r d , t r u e ) \r 0026440 S y s F r e e ( p a s s 0026460 w o r d ) \r ] \r 0026500 i f n o t \r [ \r 0026520 W s s ( c s , " [ 0026540 O l d ] " ) \r S y s 0026560 F r e e ( n a m e ) \r 0026600 n a m e = d i f N a m e \r 0026620 ] \r \r / / A c c e 0026640 p t " C h a n g e D i r e c 0026660 t o r y - P a r a m e t e r s " 0026700 376 001 \0 254 343 s u b c o m m a n d 0026720 s \r E x e c C h a n g e D i r e 0026740 c t o r y ( c s , n a m e , 0026760 d i f , n e w ) \r \r F r e e P 0027000 o i n t e r ( l v n a m e , 0027020 l v d i f ) \r ] \r \f \r / / - - 0027040 - - - - - - - - - - - - - - - - * 0027140 - - - - - - - - - \r a n d E x 0027160 e c D e s t r o y ( c s ) b e 0027200 \r / / - - - - - - - - - - - - - 0027220 - - - - - - - - - - - - - - - - * 0027300 - - - - - - 376 001 \0 5 \t - - - - - 0027320 - - - \r [ \r W s s ( c s , " 0027340 ( d i r e c t o r y ) " ) \r l 0027360 e t n a m e = 0 \r i f E 0027400 n a b l e C a t c h ( c s ) t 0027420 h e n [ F r e e P o i n t e 0027440 r ( l v n a m e ) ; E n d C 0027460 a t c h ( c s ) ] \r n a m e 0027500 = G e t S t r i n g ( c s , 0027520 0 , W s s , " d i r e c t o 0027540 r y n a m e " ) \r i f C o n 0027560 f i r m ( c s ) t h e n \r 0027600 [ \r l e t e c = D 0027620 e s t r o y U s e r ( n a m e ) 0027640 \r i f e c n e 0 t 0027660 h e n \r [ W s ( " 0027700 * n F a i l e d : " 376 001 \0 N 326 0027720 ) ; I F S P r i n t E r r o r 0027740 ( d s p , e c ) ] \r ] 0027760 \r F r e e P o i n t e r ( l v 0030000 n a m e ) \r ] \r \r \r / / - - - - 0030020 - - - - - - - - - - - - - - - - * 0030120 - - - - - - - \r a n d E x e c 0030140 H a l t ( c s ) b e \r / / - - 0030160 - - - - - - - - - - - - - - - - * 0030260 - - - - - - - - - \r [ \r W s s ( 0030300 c s , " ( t h e s y s t e 0030320 376 001 \0 205 305 m ) " ) \r i f C o 0030340 n f i r m ( c s ) t h e n \r 0030360 [ \r e n t F l a g = 0030400 f a l s e \r h a l t F l 0030420 a g = t r u e / / n o t 0030440 i f y R e a p e r \r E n 0030460 a b l e T i m e S e r v ( f a l 0030500 s e ) / / t u r n o f f 0030520 m i s c s e r v e r s \r 0030540 E n a b l e N a m e S e r v ( 0030560 f a l s e ) \r E n a b l e 0030600 B o o t S e r v ( f a l s e ) \r 0030620 E n a b l e P r e s s ( f 0030640 a l s e ) \r ] \r W s ( " * 0030660 n [ Y o u m u s t l o g o 0030700 u t b e f o r e t h e s y 0030720 s t e m 376 \0 020 275 # w i l l h 0030740 a l t . ] " ) \r ] \r 377 \0 \0 I f s 0030760 T e l n e t C h a n g e . b c p 0031000 l \0 373 226 232 026 033 \0 \0 376 001 \0 340 244 / / 0031020 I f s T e l n e t C h a n g e 0031040 . b c p l - - " C h a n g e 0031060 " c o m m a n d \r / / C o p 0031100 y r i g h t X e r o x C o r 0031120 p o r a t i o n 1 9 7 9 , 1 0031140 9 8 1 \r \r / / L a s t m o d 0031160 i f i e d J a n u a r y 2 4 0031200 , 1 9 8 1 3 : 3 9 P M 0031220 b y T a f t \r \r g e t " I f 0031240 s F i l e s . d e c l " \r g e t 0031260 " I f s R s . d e c l " \r \r e 0031300 x t e r n a l \r [ \r / / o u t 0031320 g o i n g p r o c e d u r e s 0031340 \r E x e c C h a n g e \r \r / / 0031360 i n c o m i n g p r o c e d u 0031400 r e s \r E x e c C h a n g e 376 001 0031420 \0 y } P a s s w o r d ; E x e 0031440 c C h a n g e P r o t e c t i o 0031460 n ; E x e c C h a n g e D i r 0031500 e c t o r y \r E x e c C h a n g 0031520 e S y s P a r a m ; E x e c C 0031540 h a n g e G r o u p \r S e l e c 0031560 t K e y w o r d \r \r / / i n c 0031600 o m i n g s t a t i c s \r C t 0031620 x R u n n i n g \r ] \r \r \r / / - 0031640 - - - - - - - - - - - - - - - - * 0031740 - - - - - - - - - - - \r l e t 0031760 E x e c C h a n g e ( c s ) b 0032000 e \r / / - - - - - - - - - - - - 0032020 - - - 376 001 \0 033 271 - - - - - - - - 0032040 - - - - - - - - - - - - - - - - * 0032120 - - - - - \r [ \r s w i t c h o n 0032140 S e l e c t K e y w o r d ( c 0032160 s , " P a s s w o r d " , " 0032200 P r o t e c t i o n " , " A t 0032220 t r i b u t e s " , \r " D i r 0032240 e c t o r y - P a r a m e t e r 0032260 s " , " G r o u p - M e m b e 0032300 r s h i p " , \r ( C t x R u n 0032320 n i n g > > R S C t x . u s e r 0032340 I n f o > > U s e r I n f o . c 0032360 a p a b i l i t i e s . w h e e 0032400 l ? \r " S y s t e m - P a r 0032420 a m e t e r s " 376 \0 372 v 235 , 0 0032440 ) ) i n t o \r [ \r 0032460 c a s e 1 : E x e c C h a n 0032500 g e P a s s w o r d ( c s ) ; 0032520 e n d c a s e \r c a s e 0032540 2 : \r c a s e 3 : E x 0032560 e c C h a n g e P r o t e c t i 0032600 o n ( c s ) ; e n d c a s e \r 0032620 c a s e 4 : E x e c C 0032640 h a n g e D i r e c t o r y ( c 0032660 s ) ; e n d c a s e \r c 0032700 a s e 5 : E x e c C h a n g 0032720 e G r o u p ( c s ) ; e n d c 0032740 a s e \r c a s e 6 : E 0032760 x e c C h a n g e S y s P a r a 0033000 m ( c s ) ; e n d c a s e \r 0033020 ] \r ] \r \r 377 \0 \0 I f s T e l 0033040 n e t C h a n g e D i r 1 . b c 0033060 p l \0 373 230 , % 200 \0 \0 376 001 \0 327 D / 0033100 / I f s T e l n e t C h a n g 0033120 e D i r 1 . b c p l - - C h 0033140 a n g e D i r e c t o r y - P 0033160 a r a m e t e r s c o m m a n 0033200 d \r / / C o p y r i g h t X 0033220 e r o x C o r p o r a t i o n 0033240 1 9 7 9 , 1 9 8 0 , 1 9 8 0033260 1 \r \r / / L a s t m o d i f 0033300 i e d N o v e m b e r 2 5 , 0033320 1 9 8 1 2 : 5 5 P M b 0033340 y T a f t \r \r g e t " I f s 0033360 . d e c l " \r g e t " I f s F 0033400 i l e s . d e c l " \r g e t " 0033420 I f s D i r s . d e c l " \r g e 0033440 t " I f s R S . d e c l " \r g 0033460 e t " C m d S c a n . d e c 376 0033500 001 \0 223 322 l " \r \r e x t e r n a l 0033520 \r [ \r / / o u t g o i n g p 0033540 r o c e d u r e s \r E x e c C h 0033560 a n g e D i r e c t o r y \r \r / 0033600 / i n c o m i n g p r o c e 0033620 d u r e s \r C h a n g e D i r S 0033640 u b c o m m a n d \r G e t S t r 0033660 i n g \r E n a b l e C a t c h ; 0033700 E n d C a t c h ; T e r m i 0033720 n a t i n g C h a r ; D e f a 0033740 u l t P h r a s e ; C o n f i 0033760 r m \r C r e a t e K e y w o r d 0034000 T a b l e ; D e s t r o y K e 0034020 y w o r d T a b l e ; I n s e 0034040 r t K e y w o r d ; D e f a u 0034060 l t T e m p l a t e \r T e l n e 0034100 t C o m 376 001 \0 031 373 m a n d L o o 0034120 p ; T e l n e t S u b c o m m 0034140 a n d P r o m p t ; T e l n e 0034160 t A b o r t i n g \r R e a d D I 0034200 F ; W r i t e D I F ; W h e 0034220 e l C a l l ; P a s s w o r d 0034240 \r L o o k u p I F S F i l e ; 0034260 G e t B u f f e r F o r F D ; 0034300 L o c k T r a n s f e r L e a d 0034320 e r P a g e \r D e l e t e F i l 0034340 e F r o m F D ; D e s t r o y 0034360 F D ; O p e n I F S S t r e a 0034400 m ; C l o s e I F S S t r e a 0034420 m \r S y s F r e e ; F r e e P 0034440 o i n t e r ; Z e r o ; S e 0034460 t B l o c k ; M o v e B l o c 0034500 k \r W s ; W s s 376 001 \0 376 203 ; 0034520 P u t s ; E r r o r s ; I F 0034540 S P r i n t E r r o r \r \r / / 0034560 i n c o m i n g s t a t i c s 0034600 \r d s p ; C t x R u n n i n g 0034620 \r ] \r \r m a n i f e s t e c M 0034640 a i l b o x N o t E m p t y = 0034660 3 0 1 \r \f \r / / - - - - - - - 0034700 - - - - - - - - - - - - - - - - * 0035000 - - - - \r l e t E x e c C h a 0035020 n g e D i r e c t o r y ( c s , 0035040 n a m e , d i f , n e w ; 0035060 n u m a r g s n a ) b e \r 0035100 / / - - - - - - - - - - - - 376 001 0035120 \0 235 L - - - - - - - - - - - - - 0035140 - - - - - - - - - - - - - - - - * 0035220 - - \r / / C h a n g e D i r 0035240 e c t o r y - P a r a m e t e r 0035260 s < d i r e c t o r y > < s 0035300 u b c o m m a n d s > \r / / 4 0035320 - a r g u m e n t f o r m i 0035340 s c a l l e d t o c o l l 0035360 e c t s u b c o m m a n d s 0035400 f o r C r e a t e . \r / / S 0035420 u b c o m m a n d s a r e : \r 0035440 / / [ N o ] R e a d | W r i 0035460 t e | A p p e n d | C r e a t e 0035500 | C o n n e c t < g r o u p > 0035520 | O w 376 001 \0 & ! n e r | W o r l 0035540 d | N o n e \r / / R e s e t 0035560 D e f a u l t - F i l e - P r o 0035600 t e c t i o n | C r e a t e - P 0035620 r o t e c t i o n | C o n n e c 0035640 t - P r o t e c t i o n \r / / 0035660 [ N o ] P r i n t i n g - S e 0035700 r v e r [ < h o s t N a m e 0035720 > ] \r / / A d d i t i o n a 0035740 l l y , i f e n a b l e d 0035760 w h e e l : \r / / [ N o ] G 0036000 r o u p - M e m b e r s h i p | 0036020 G r o u p - O w n e r s h i p 0036040 < g r o u p > | N o n e \r / / 0036060 R e s e t G r o u p - M e m b 0036100 e r s h i p | G r o u p - O w n 0036120 e r s h i p \r / 376 001 \0 310 \ / P 0036140 a s s w o r d < p a s s w o r 0036160 d > \r / / D i s k - L i m i t 0036200 < n u m b e r > \r / / [ N o 0036220 t ] F i l e s - O n l y [ 0036240 < o w n e r > ] \r / / [ N o 0036260 t ] W h e e l | M a i l \r [ \r 0036300 l e t c a l l e d F r o m C r 0036320 e a t e = n a e q 4 \r u 0036340 n l e s s c a l l e d F r o m 0036360 C r e a t e d o \r [ \r 0036400 W s s ( c s , " ( o f 0036420 d i r e c t o r y ) " ) \r 0036440 n a m e = 0 ; d i f = 0036460 0 \r i f E n a b l e C 0036500 a t c h ( c s ) t h e n [ 0036520 F r e e P o i n t e r ( l 376 001 \0 0036540 A W v n a m e , l v d i f 0036560 ) ; E n d C a t c h ( c s ) 0036600 ] \r D e f a u l t P h r a 0036620 s e ( c s , C t x R u n n i n 0036640 g > > R S C t x . u s e r I n f 0036660 o > > U s e r I n f o . c o n n 0036700 N a m e ) \r n a m e = 0036720 G e t S t r i n g ( c s , 0 , 0036740 W s s , " d i r e c t o r y 0036760 n a m e " ) \r \r / / R 0037000 e a d D I F w i l l f a i l 0037020 i f t h e u s e r d o e 0037040 s n ' t o w n t h e D I F 0037060 b e c a u s e \r / / D 0037100 I F s a r e r e a d - p r o 0037120 t e c t e d a g a i n s t a 0037140 l l 376 001 \0 005 353 b u t t h e 0037160 o w n e r . T h e r e f o r 0037200 e , \r / / n o a d d i 0037220 t i o n a l a c c e s s c h 0037240 e c k i s r e q u i r e d . 0037260 \r d i f = R e a d D I 0037300 F ( n a m e ) \r i f d i 0037320 f e q 0 t h e n E r r o 0037340 r s ( c s , 0 ) \r n e w 0037360 = f a l s e \r ] \r \r / 0037400 / C o l l e c t s u b c o m 0037420 m a n d s f o r c h a n g i 0037440 n g d i r e c t o r y p a r 0037460 a m e t e r s \r l e t k t = 0037500 C r e a t e K e y w o r d T a 0037520 b l e ( 1 5 ) \r I n s e r t K e 0037540 y w o r d ( k 376 001 \0 314 002 t , " 0037560 R e a d " ) ! 0 = 1 \r I n s 0037600 e r t K e y w o r d ( k t , " 0037620 W r i t e " ) ! 0 = 2 \r I n 0037640 s e r t K e y w o r d ( k t , 0037660 " A p p e n d " ) ! 0 = 3 \r 0037700 I n s e r t K e y w o r d ( k t 0037720 , " C r e a t e " ) ! 0 = 0037740 4 \r I n s e r t K e y w o r d ( 0037760 k t , " C o n n e c t " ) ! 0 0040000 = 5 \r I n s e r t K e y w o 0040020 r d ( k t , " N o " ) ! 0 = 0040040 6 \r I n s e r t K e y w o r d 0040060 ( k t , " R e s e t " ) ! 0 0040100 = 7 \r I n s e r t K e y w o r 0040120 d ( k t , " P r i n t i n g - 0040140 S e r v e r " ) ! 0 = 376 001 \0 W 0040160 271 8 \r \r i f C t x R u n n i 0040200 n g > > R S C t x . u s e r I n 0040220 f o > > U s e r I n f o . c a p 0040240 a b i l i t i e s . w h e e l 0040260 t h e n \r [ \r I n s 0040300 e r t K e y w o r d ( k t , " 0040320 N o t " ) ! 0 = 9 \r I 0040340 n s e r t K e y w o r d ( k t , 0040360 " G r o u p " ) ! 0 = 1 0 0040400 \r I n s e r t K e y w o r 0040420 d ( k t , " P a s s w o r d " 0040440 ) ! 0 = 1 1 \r I n s e 0040460 r t K e y w o r d ( k t , " D 0040500 i s k - L i m i t " ) ! 0 = 0040520 1 2 \r I n s e r t K e y w 0040540 o r d ( k t , " F i l e s - O 0040560 n 376 001 \0 374 210 l y " ) ! 0 = 1 0040600 3 \r I n s e r t K e y w o 0040620 r d ( k t , " W h e e l " ) ! 0040640 0 = 1 4 \r I n s e r t 0040660 K e y w o r d ( k t , " M a i 0040700 l " ) ! 0 = 1 5 \r ] \r 0040720 \r T e l n e t C o m m a n d L o 0040740 o p ( k t , T e l n e t S u b 0040760 c o m m a n d P r o m p t ( ) , 0041000 t r u e , l v n a m e , 0041020 0 , 0 , \r C h a n g e D i r 0041040 S u b c o m m a n d ) \r D e s t 0041060 r o y K e y w o r d T a b l e ( 0041100 k t ) \r \f \r / / E x e c C h a 0041120 n g e D i r e c t o r y ( c o 0041140 n t ' d ) \r \r i f C o n f i r 0041160 m ( c s ) 376 001 \0 035 263 t h e n \r 0041200 [ / / U p d a t e t 0041220 h e D I F \r l e t e c 0041240 = W h e e l C a l l ( W r i 0041260 t e D I F , n a m e , d i f 0041300 ) \r i f e c e q 0 0041320 & C t x R u n n i n g > > R S 0041340 C t x . u s e r I n f o > > U s 0041360 e r I n f o . c a p a b i l i t 0041400 i e s . w h e e l t h e n \r 0041420 [ / / C r e a t e 0041440 o r d e s t r o y m a i l 0041460 b o x i n c o n f o r m a n 0041500 c e w i t h m a i l c a p 0041520 a b i l i t y \r l e 0041540 t f d = L o o k u p I F S 0041560 F i l e ( n a m e , 376 001 \0 207 005 0041600 l c V H i g h e s t + l c C r e 0041620 a t e , l v e c , 0 , " 0041640 M a i l > B o x " ) ; \r 0041660 i f e c e q e c D i r 0041700 N o t F o u n d t h e n \r 0041720 [ / / I g n 0041740 o r e t h i s e r r o r i 0041760 f n o t t r y i n g t o 0042000 c r e a t e a m a i l b o x 0042020 \r i f d i f 0042040 > > D I F . c a p a b i l i t i 0042060 e s . m a i l t h e n \r 0042100 W s ( " * n C 0042120 a n ' t c r e a t e m a i l 0042140 b o x : n o < M a i l > d 0042160 i r e c t o r y . " ) \r 0042200 376 001 \0 \v Z e c = 0 0042220 \r ] \r 0042240 i f f d n e 0 t h e 0042260 n \r [ \r 0042300 s w i t c h o n 0042320 ( f d > > F D . l o o k u p S t 0042340 a t u s e q l s E x i s t s 0042360 ) l s h i f t 1 + \r 0042400 d i f > > D I F . 0042420 c a p a b i l i t i e s . m a i 0042440 l i n t o \r 0042460 [ \r 0042500 c a s e t r u e * 2 + 0 0042520 : \r 0042540 [ \r 0042560 l e t b u f = G e t B 0042600 u f f e r 376 001 \0 020 274 F o r F D ( 0042620 f d ) \r 0042640 L o c k T r a n s f e r L 0042660 e a d e r P a g e ( f d , b u 0042700 f ) \r 0042720 l e t e m p t y = b u 0042740 f > > I L D . h i n t L a s t P 0042760 a g e F a . p a g e N u m b e r 0043000 l e 1 & \r 0043020 b u f > > I L D 0043040 . h i n t L a s t P a g e F a . 0043060 c h a r P o s e q 0 \r 0043100 S y s F 0043120 r e e ( b u f ) \r 0043140 e c = e m p 0043160 t y ? D e l e t e F i l e F r 0043200 o m F D ( f d ) , 376 001 \0 214 341 e 0043220 c M a i l b o x N o t E m p t y 0043240 \r 0043260 e n d c a s e ; \r 0043300 ] \r 0043320 c a s e f a l 0043340 s e * 2 + 1 : \r 0043360 [ \r 0043400 l e t s t r 0043420 = O p e n I F S S t r e a m 0043440 ( f d , l v e c , m o d e 0043460 W r i t e ) ; \r 0043500 i f s t r n e 0043520 0 t h e n C l o s e I F S 0043540 S t r e a m ( s t r ) ; \r 0043560 e n d 0043600 c a s e ; \r 376 0043620 \0 302 t a ] \r 0043640 ] \r 0043660 D e s t r o y F D ( 0043700 f d ) ; \r ] \r 0043720 ] \r i f e c 0043740 n e 0 t h e n [ P u t 0043760 s ( d s p , $ * n ) ; I F S 0044000 P r i n t E r r o r ( d s p , 0044020 e c ) ] \r ] \r \r u n l e 0044040 s s c a l l e d F r o m C r e 0044060 a t e d o F r e e P o i n t 0044100 e r ( l v n a m e , l v d 0044120 i f ) \r ] \r 377 \0 \0 I f s T e l n 0044140 e t C h a n g e D i r 2 . b c p 0044160 l \0 373 230 036 360 l \0 \0 376 001 \0 321 D / / 0044200 I f s T e l n e t C h a n g e 0044220 D i r 2 . b c p l - - C h a 0044240 n g e D i r e c t o r y - P a 0044260 r a m e t e r s c o m m a n d 0044300 \r / / C o p y r i g h t X e 0044320 r o x C o r p o r a t i o n 0044340 1 9 7 9 , 1 9 8 0 , 1 9 8 1 0044360 \r \r / / L a s t m o d i f i 0044400 e d N o v e m b e r 1 5 , 0044420 1 9 8 1 2 : 0 4 P M b y 0044440 T a f t \r \r g e t " I f s . 0044460 d e c l " \r g e t " I f s F i 0044500 l e s . d e c l " \r g e t " I 0044520 f s D i r s . d e c l " \r g e t 0044540 " I f s R S . d e c l " \r g e 0044560 t " C m d S c a n . d e c 376 001 0044600 \0 034 201 l " \r g e t " P u p 0 . 0044620 d e c l " \r \r e x t e r n a l \r 0044640 [ \r / / o u t g o i n g p r 0044660 o c e d u r e s \r C h a n g e D 0044700 i r S u b c o m m a n d \r \r / / 0044720 i n c o m i n g p r o c e d 0044740 u r e s \r G e t S t r i n g ; 0044760 G e t N u m b e r ; S e l e c 0045000 t K e y w o r d ; G e t G r o 0045020 u p M a s k ; D e f a u l t P 0045040 h r a s e \r D e f a u l t T e m 0045060 p l a t e \r E n u m e r a t e P 0045100 u p A d d r e s s e s ; P a s 0045120 s w o r d \r S y s F r e e ; F 0045140 r e e P o i n t e r ; Z e r o 0045160 ; S e t B l o c k ; M o v e 0045200 B l o 376 001 \0 006 277 c k ; C o p y 0045220 S t r i n g \r W s s ; P u t s 0045240 ; E r r o r s \r \r / / i n c 0045260 o m i n g s t a t i c s \r d s 0045300 p ; C t x R u n n i n g \r ] \r 0045320 \f \r / / - - - - - - - - - - - - 0045340 - - - - - - - - - - - - - - - - * 0045420 - - - - - - - - - - - - - - - \r 0045440 l e t C h a n g e D i r S u b 0045460 c o m m a n d ( c s , e n t r 0045500 y , l v N a m e ) b e \r / / 0045520 - - - - - - - - - - - - - - - - * 0045600 - - - - - - - - 376 001 \0 j 2 - - - 0045620 - - - - - - - - - - - - - - - - 0045640 \r [ \r l e t d i f = l v N 0045660 a m e ! 1 \r l e t n e w = 0045700 l v N a m e ! 2 \r l e t y e s 0045720 = t r u e \r l e t w h i c 0045740 h P r o t = n i l \r s w i t 0045760 c h o n e n t r y ! 0 i n t 0046000 o \r [ \r c a s e 1 0046020 : / / R e a d \r 0046040 w h i c h P r o t = o f f 0046060 s e t D I F . r e a d P r o t 0046100 / 1 6 ; e n d c a s e \r 0046120 c a s e 2 : / / W r i t 0046140 e \r w h i c h P r o 0046160 t = o f f s e t D I F . w 0046200 r i t e P r o t / 1 6 ; 376 001 \0 0046220 253 237 e n d c a s e \r c a s 0046240 e 3 : / / A p p e n d \r 0046260 w h i c h P r o t 0046300 = o f f s e t D I F . a p p 0046320 e n d P r o t / 1 6 ; e n d c 0046340 a s e \r c a s e 4 : 0046360 / / C r e a t e \r 0046400 w h i c h P r o t = o f f s 0046420 e t D I F . c r e a t e P r o 0046440 t / 1 6 ; e n d c a s e \r 0046460 c a s e 5 : / / C o n 0046500 n e c t \r w h i c h 0046520 P r o t = o f f s e t D I 0046540 F . c o n n e c t P r o t / 1 6 0046560 ; e n d c a s e \r \r c a 0046600 s e 6 : / / N o \r 0046620 376 001 \0 ] ) y e s = f a 0046640 l s e \r d o c a s e 0046660 S e l e c t K e y w o r d ( c 0046700 s , " R e a d " , " W r i t 0046720 e " , " A p p e n d " , " C 0046740 r e a t e " , " C o n n e c t 0046760 " , \r 0 , 0 , 0047000 " P r i n t i n g - S e r v e r 0047020 " , 0 , \r ( C t 0047040 x R u n n i n g > > R S C t x . 0047060 u s e r I n f o > > U s e r I n 0047100 f o . c a p a b i l i t i e s . 0047120 w h e e l ? " G r o u p " , 0047140 0 ) ) \r \r c a s e 7 : 0047160 / / R e s e t \r 0047200 w h i c h P r o t = s e l e 0047220 c t o n S e 376 001 \0 036 240 l e c t 0047240 K e y w o r d ( c s , " D e f 0047260 a u l t - F i l e - P r o t e c 0047300 t i o n " , \r " C 0047320 r e a t e - P r o t e c t i o n 0047340 " , " C o n n e c t - P r o t 0047360 e c t i o n " , \r 0047400 ( C t x R u n n i n g > > R S 0047420 C t x . u s e r I n f o > > U s 0047440 e r I n f o . c a p a b i l i t 0047460 i e s . w h e e l ? " G r o u 0047500 p " , 0 ) ) \r i 0047520 n t o \r [ \r 0047540 c a s e 1 : 0047560 o f f s e t D I F . f i l e P 0047600 r o t / 1 6 \r 0047620 c a s e 2 : o f f s 376 001 \0 / 0047640 ; e t D I F . c r e a t e P r 0047660 o t / 1 6 \r c 0047700 a s e 3 : o f f s e t D I 0047720 F . c o n n e c t P r o t / 1 6 0047740 \r c a s e 4 0047760 : S e l e c t K e y w o r d ( 0050000 c s , " M e m b e r s h i p " 0050020 , " O w n e r s h i p " ) e 0050040 q 1 ? \r 0050060 o f f s e t D I F . u s e 0050100 r G r o u p s / 1 6 , o f f s 0050120 e t D I F . o w n e d G r o u 0050140 p s / 1 6 \r ] 0050160 \r Z e r o ( d i f + 0050200 w h i c h P r o t , \r 0050220 ( w h i c h P r o t e q 0050240 o 376 001 \0 252 250 f f s e t D I F . 0050260 f i l e P r o t / 1 6 ? l e n 0050300 F i l e P r o t , l e n P r o 0050320 t e c t i o n ) ) \r 0050340 r e t u r n \r \r c a s e 0050360 8 : / / P r i n t i n g - 0050400 S e r v e r \r [ \r 0050420 u n l e s s y e s 0050440 d o [ d i f > > D I F . d e 0050460 f a u l t P r i n t e r . l e n 0050500 g t h = 0 ; r e t u r n 0050520 ] \r P u t s ( d s p 0050540 , $ * s ) \r i f 0050560 d i f > > D I F . d e f a u l t 0050600 P r i n t e r . l e n g t h n 0050620 e 0 t h e n \r 0050640 D e f a 376 001 \0 031 O u l t P h 0050660 r a s e ( c s , l v d i f > 0050700 > D I F . d e f a u l t P r i n 0050720 t e r ) \r l e t h 0050740 o s t = G e t S t r i n g ( 0050760 c s , 0 , W s s , " h o s 0051000 t n a m e o r n e t # h o 0051020 s t # " ) \r l e t 0051040 p o r t = v e c l e n P o 0051060 r t \r i f h o s t 0051100 > > S t r i n g . l e n g t h 0051120 n e 0 & \r ( E 0051140 n u m e r a t e P u p A d d r e 0051160 s s e s ( h o s t , 0 , p o 0051200 r t , t r u e ) n e 0 % 0051220 \r p o r t > > P 0051240 o r t . h o s t e q 376 001 \0 E s 0051260 0 ) t h e n \r 0051300 [ S y s F r e e ( h o s t 0051320 ) ; E r r o r s ( c s , 0 ) 0051340 ] \r M o v e B l o 0051360 c k ( l v d i f > > D I F . d 0051400 e f a u l t P r i n t e r , h 0051420 o s t , l e n D i r N a m e ) 0051440 \r S y s F r e e ( h 0051460 o s t ) \r r e t u r 0051500 n \r ] \r \f \r / / C 0051520 h a n g e D i r S u b c o m m a 0051540 n d ( c o n t ' d ) \r \r 0051560 c a s e 9 : / / N o t \r 0051600 y e s = f a l s 0051620 e \r d o c a s e 1 0051640 2 + S e l e c t K e y w o r d ( 0051660 376 001 \0 210 W c s , " F i l e s - 0051700 o n l y " , " W h e e l " , 0051720 " M a i l " ) \r \r c a s e 0051740 1 0 : / / G r o u p \r 0051760 w h i c h P r o t = 0052000 S e l e c t K e y w o r d ( c 0052020 s , " M e m b e r s h i p " , 0052040 " O w n e r s h i p " ) e q 0052060 1 ? \r o f f s e 0052100 t D I F . u s e r G r o u p s 0052120 / 1 6 , o f f s e t D I F . 0052140 o w n e d G r o u p s / 1 6 \r 0052160 e n d c a s e \r \r 0052200 c a s e 1 1 : / / P a 0052220 s s w o r d \r [ \r 0052240 P u t s ( c s , $ * 0052260 s ) \r 376 001 \0 377 S l e 0052300 t p a s s w o r d = G e t 0052320 S t r i n g ( c s , 0 , W s 0052340 s , " p a s s w o r d " ) \r 0052360 t e s t p a s s w o 0052400 r d > > S t r i n g . l e n g t 0052420 h e q 0 \r 0052440 i f s o S e t B l o c k ( l v 0052460 d i f > > D I F . p a s s w o 0052500 r d , - 1 , s i z e D I F 0052520 . p a s s w o r d / 1 6 ) \r 0052540 i f n o t P a s 0052560 s w o r d ( p a s s w o r d , 0052600 l v d i f > > D I F . p a s s 0052620 w o r d , t r u e ) \r 0052640 S y s F r e e ( p a s s w o 0052660 r d ) \r 376 001 \0 4 320 r 0052700 e t u r n \r ] \r \r 0052720 c a s e 1 2 : / / D 0052740 i s k - l i m i t \r 0052760 [ \r P u t s ( c s , 0053000 $ * s ) \r D e f a 0053020 u l t T e m p l a t e ( c s , 0053040 " $ U E D " , l v d i f > > 0053060 D I F . d i s k P a g e L i m i 0053100 t ) \r l e t l i m 0053120 i t = v e c 1 \r 0053140 G e t N u m b e r ( c s , 1 0053160 0 , l i m i t ) \r 0053200 M o v e B l o c k ( l v d i f 0053220 > > D I F . d i s k P a g e L i 0053240 m i t , l i m i t , 2 ) \r 0053260 r e t u r n \r 376 0053300 001 \0 \t 245 ] \r \r c a s 0053320 e 1 3 : / / F i l e s - 0053340 o n l y \r i f y e 0053360 s t h e n \r 0053400 [ \r W s s ( c 0053420 s , " ( o w n e r ) " ) \r 0053440 l e t o w n 0053460 e r = G e t S t r i n g ( c 0053500 s , 0 , W s s , " d i r e 0053520 c t o r y o w n e r " ) \r 0053540 C o p y S t r i n 0053560 g ( l v d i f > > D I F . o w 0053600 n e r , o w n e r ) \r 0053620 S y s F r e e ( o w n 0053640 e r ) \r / / 0053660 N e w f i l e s - o n l y d 0053700 i r e c 376 001 \0 336 032 t o r i e s 0053720 s h o u l d n o t b e g i 0053740 v e n m a i l b o x e s \r 0053760 / / n o m a t 0054000 t e r w h a t < D e f a u l 0054020 t - U s e r > s a y s . \r 0054040 i f n e w t h 0054060 e n d i f > > D I F . c a p a 0054100 b i l i t i e s . m a i l = 0054120 f a l s e \r \t ] \r 0054140 d i f > > D I F . f i l e s O n 0054160 l y = y e s \r r 0054200 e t u r n \r \r c a s e 1 0054220 4 : / / W h e e l \r 0054240 d i f > > D I F . c a p a 0054260 b i l i t i e s . w h e e l = 0054300 y e s \r 376 001 \0 c 004 0054320 r e t u r n \r \r c a s e 0054340 1 5 : / / M a i l \r 0054360 d i f > > D I F . c a p a 0054400 b i l i t i e s . m a i l = 0054420 y e s \r r e t u r n 0054440 \r ] \r \r / / H e r e o 0054460 n l y f o r [ N o ] R e a 0054500 d | W r i t e | A p p e n d | C 0054520 r e a t e | C o n n e c t | G r 0054540 o u p \r l e t p r o t e c t i 0054560 o n = v e c l e n P r o t 0054600 e c t i o n ; Z e r o ( p r o 0054620 t e c t i o n , l e n P r o t 0054640 e c t i o n ) \r W s s ( c s , 0054660 ( w h i c h P r o t e q o f 0054700 f s e t D I F . u s e r G 376 001 0054720 \0 220 261 r o u p s / 1 6 ? " ( 0054740 i n g r o u p s ) " , \r w 0054760 h i c h P r o t e q o f f s 0055000 e t D I F . o w n e d G r o u 0055020 p s / 1 6 ? " ( o f g r o 0055040 u p s ) " , \r " ( a c c e 0055060 s s t o g r o u p s ) " ) 0055100 ) \r l e t v a l u e = d i 0055120 f + w h i c h P r o t \r i f G 0055140 e t G r o u p M a s k ( c s , 0055160 p r o t e c t i o n , y e s ) 0055200 t h e n \r Z e r o ( v a 0055220 l u e , l e n P r o t e c t i 0055240 o n ) \r f o r i = 0 t o 0055260 l e n P r o t e c t i o n - 1 0055300 d o \r v a l u e ! i = 0055320 y e 376 \0 8 ( 332 s ? v a l u e 0055340 ! i % p r o t e c t i o n ! 0055360 i , v a l u e ! i & n o t 0055400 p r o t e c t i o n ! i \r ] \r 0055420 377 \0 \0 I f s T e l n e t D e l . 0055440 b c p l \0 373 233 236 004 366 \0 \0 376 001 \0 001 0055460 003 / / I f s T e l n e t D e l 0055500 . b c p l - - I F S s e r 0055520 v e r t e l n e t D e l e t 0055540 e a n d R e n a m e c o m 0055560 m a n d s \r / / C o p y r i g 0055600 h t X e r o x C o r p o r a 0055620 t i o n 1 9 7 9 , 1 9 8 0 , 0055640 1 9 8 1 , 1 9 8 3 \r \r / / 0055660 L a s t m o d i f i e d S e 0055700 p t e m b e r 2 5 , 1 9 8 3 0055720 2 : 0 0 P M b y T a f 0055740 t \r \r g e t " I f s . d e c l 0055760 " \r g e t " I f s F i l e s . 0056000 d e c l " \r g e t " I f s D i 0056020 r s . d e c l " \r g e t " I f 0056040 s R s . d e c l " \r \r e x t e r 0056060 n 376 001 \0 330 ! a l \r [ \r / / o u 0056100 t g o i n g p r o c e d u r e 0056120 s \r E x e c D e l e t e ; E x 0056140 e c R e n a m e \r \r / / i n c 0056160 o m i n g p r o c e d u r e s 0056200 \r C o l l e c t F i l e n a m e 0056220 s ; N e x t F i l e ; D e s 0056240 t r o y F G D ; S u b c o m m 0056260 a n d s ; S e t F G D L C \r W 0056300 h a t C h a n g e d ; C o p y 0056320 F D ; P r i n t S u b F i l e 0056340 n a m e \r I n i t C m d ; C o 0056360 n f i r m ; G e t N u m b e r 0056400 ; G e t S t r i n g ; E n a 0056420 b l e C a t c h ; E n d C a t 0056440 c h ; T e r m i n a t i n g C 0056460 h a r \r C r 376 001 \0 k 224 e a t e K 0056500 e y w o r d T a b l e ; I n s 0056520 e r t K e y w o r d ; D e s t 0056540 r o y K e y w o r d T a b l e \r 0056560 T e l n e t C o m m a n d L o o 0056600 p ; T e l n e t S u b c o m m 0056620 a n d P r o m p t ; T e l n e 0056640 t A b o r t i n g ; T e l n e 0056660 t C o n f i r m \r L o o k u p F 0056700 D ; N e x t F D ; D e s t r 0056720 o y F D ; D e l e t e F i l e 0056740 F r o m F D \r L o o k u p I F S 0056760 F i l e ; I F S R e n a m e F 0057000 i l e \r S t r i n g C o m p a r 0057020 e ; E x t r a c t S u b s t r 0057040 i n g ; C o n c a t e n a t e 0057060 S t r i n g s \r S y s 376 001 \0 j 220 0057100 A l l o c a t e Z e r o ; F r 0057120 e e P o i n t e r ; I F S P r 0057140 i n t E r r o r ; B l o c k ; 0057160 D i s m i s s \r W s ; W s s 0057200 ; P u t s ; E r r o r s ; 0057220 C l o s e s ; R e s e t s \r S 0057240 y s F r e e ; Z e r o ; M o 0057260 v e B l o c k \r \r / / i n c o 0057300 m i n g s t a t i c s \r d s p 0057320 ; k e y s ; C t x R u n n i 0057340 n g \r ] \r \r s t r u c t u r e 0057360 O p t i o n s : \r [ \r a u t o C 0057400 o n f i r m w o r d \t / / a u 0057420 t o m a t i c a l l y c o n f 0057440 i r m e a c h d e l e t i o 0057460 n \r k e e p w o r d \t \t / / n 0057500 376 001 \0 034 210 u m b e r o f v e 0057520 r s i o n s t o k e e p \r \t 0057540 \t \t / / - 1 = > d e l e t 0057560 e o n e v e r s i o n o n 0057600 l y ( u s u a l l y l o w e 0057620 s t ) \r ] \r m a n i f e s t l 0057640 e n O p t i o n s = s i z e 0057660 O p t i o n s / 1 6 \r \f \r / / 0057700 - - - - - - - - - - - - - - - - * 0060000 - - - - - - - - - - - \r l e t 0060020 E x e c D e l e t e ( c s ) b 0060040 e \r / / - - - - - - - - - - - - 0060060 - - - - - - - - - - - - - - - - 0060100 - - - - - 376 001 \0 255 i - - - - - - 0060120 - - - - - - - - - - - - - - - - * 0060160 - - - - \r / / D e l e t e < 0060200 f i l e - d e s i g n a t o r s 0060220 > [ , < s u b c o m m a n d 0060240 s > ] \r [ \r W s s ( c s , " 0060260 ( f i l e s ) " ) \r l e t 0060300 f g d = C o l l e c t F i l 0060320 e n a m e s ( c s , l c V L o 0060340 w e s t + l c M u l t i p l e ) 0060360 \r \r l e t o p t i o n s = 0060400 v e c l e n O p t i o n s \r Z 0060420 e r o ( o p t i o n s , l e n 0060440 O p t i o n s ) \r o p t i o n s 0060460 > > O p t i o n s . k e e p = 0060500 - 1 \r i f S u b 376 001 \0 215 301 c 0060520 o m m a n d s ( f g d ) t h e 0060540 n \r [ \r l e t k t 0060560 = C r e a t e K e y w o r d 0060600 T a b l e ( 5 ) \r I n s e 0060620 r t K e y w o r d ( k t , " C 0060640 o n f i r m " ) ! 0 = 1 \r 0060660 I n s e r t K e y w o r d ( 0060700 k t , " K e e p " ) ! 0 = 0060720 2 \r T e l n e t C o m m a 0060740 n d L o o p ( k t , T e l n e 0060760 t S u b c o m m a n d P r o m p 0061000 t ( ) , t r u e , o p t i o 0061020 n s , 0 , 0 , \r D e 0061040 l e t e S u b c o m m a n d ) \r 0061060 D e s t r o y K e y w o r 0061100 d T a b l e ( k t ) \r ] 376 0061120 001 \0 301 017 \r \r i f o p t i o n s 0061140 > > O p t i o n s . k e e p n 0061160 e - 1 t h e n \r S e t 0061200 F G D L C ( f g d , l c V A l 0061220 l + l c M u l t i p l e ) / 0061240 / c h a n g e d e f a u l t 0061260 v e r s i o n t o " * " \r 0061300 \r l e t l a s t F D , b f d 0061320 = S y s A l l o c a t e Z e 0061340 r o ( l e n F D ) , S y s A l 0061360 l o c a t e Z e r o ( l e n F D 0061400 ) \r l e t n u m V e r = 0 0061420 \r \r u n t i l T e l n e t A b 0061440 o r t i n g ( ) d o \r [ 0061460 \r l e t f d = N e x 0061500 t F i l e ( f g d ) \r i f 0061520 f d 376 001 \0 270 261 e q 0 b r 0061540 e a k \r t e s t o p t i 0061560 o n s > > O p t i o n s . k e e 0061600 p l e 0 \r i f s 0061620 o \r D e l e t 0061640 e O n e F i l e ( f d , l a s 0061660 t F D , o p t i o n s ) \r 0061700 i f n o t \r 0061720 [ \r i f 0061740 S t r i n g C o m p a r e ( l 0061760 v f d > > F D . d r > > D R . 0062000 p a t h N a m e , \r 0062020 l v b f d > > F D . d 0062040 r > > D R . p a t h N a m e , 0062060 1 , f d > > F D . l e n B o d 0062100 y S t r i n g , \r 0062120 1 , b f d 376 001 \0 226 n > > 0062140 F D . l e n B o d y S t r i n g 0062160 ) n e 0 t h e n \r 0062200 [ C o p y F D 0062220 ( b f d , f d ) ; n u m V e 0062240 r = 0 ] \r 0062260 n u m V e r = n u m V e r 0062300 + 1 \r i f n 0062320 u m V e r g r o p t i o n s 0062340 > > O p t i o n s . k e e p t 0062360 h e n \r 0062400 [ \r i f 0062420 L o o k u p F D ( b f d ) e 0062440 q 0 t h e n D e l e t e O 0062460 n e F i l e ( b f d , l a s t 0062500 F D , o p t i o n s ) \r 0062520 b f d > > 376 001 0062540 \0 254 313 F D . t e m p l a t e = 0062560 f d > > F D . t e m p l a t e 0062600 / / s o N e x t F D w 0062620 i l l w o r k \r 0062640 N e x t F D ( b f d ) 0062660 \r f d > 0062700 > F D . t e m p l a t e = b 0062720 f d > > F D . t e m p l a t e 0062740 / / j u s t i n c a s e 0062760 N e x t F D d e l e t e d 0063000 i t \r b 0063020 f d > > F D . t e m p l a t e 0063040 = 0 \r 0063060 ] \r ] \r 0063100 B l o c k ( ) \r ] \r \r D e 0063120 s t r o y F D ( l a s t F D ) ; 0063140 D e 376 001 \0 337 255 s t r o y F D ( 0063160 b f d ) \r D e s t r o y F G D ( 0063200 f g d ) \r ] \r \f \r / / - - - - - 0063220 - - - - - - - - - - - - - - - - * 0063320 - - - - - - \r a n d D e l e t 0063340 e O n e F i l e ( f d , l a s 0063360 t F D , o p t i o n s ) b e 0063400 \r / / - - - - - - - - - - - - - 0063420 - - - - - - - - - - - - - - - - * 0063500 - - - - - - - - - - - - - - \r / 0063520 / A s s u m e s d i r e c t 0063540 o r y i s n 376 001 \0 7 003 o t 0063560 l o c k e d \r [ \r i f W h a t 0063600 C h a n g e d ( f d , l a s t 0063620 F D ) e q 0 t h e n \r 0063640 [ P u t s ( d s p , $ * n 0063660 ) ; P r i n t S u b F i l e n 0063700 a m e ( d s p , f d , 1 , 0063720 f d > > F D . l e n S u b D i r 0063740 S t r i n g ) ] \r l e t c s 0063760 = o p t i o n s > > O p t i 0064000 o n s . a u t o C o n f i r m ? 0064020 d s p , I n i t C m d ( 1 5 0064040 0 , 1 ) \r i f c s e q 0 0064060 r e t u r n \r W s s ( c s , 0064100 " * n " ) \r P r i n t S u b 0064120 F i l e n a m e ( c s , f d , 0064140 f d > > F D . l e n S u 376 001 \0 0064160 374 256 b D i r S t r i n g + 1 ) \r 0064200 u n l e s s o p t i o n s > > 0064220 O p t i o n s . a u t o C o n f 0064240 i r m d o \r [ \r l 0064260 e t o k = C o n f i r m ( 0064300 c s ) \r C l o s e s ( c s 0064320 ) \r u n l e s s o k r 0064340 e t u r n \r ] \r \r l e t 0064360 d e l e t e U n d e l e t a b l 0064400 e = f a l s e \r \r [ 0064420 / / r e p e a t \r l e t 0064440 e c = D e l e t e F i l e 0064460 F r o m F D ( f d , d e l e t 0064500 e U n d e l e t a b l e ) \r 0064520 i f e c n e 0 t h e n 0064540 \r [ W s ( " - - 0064560 n 376 001 \0 204 340 o t d e l e t e 0064600 d : * n " ) ; I F S P r 0064620 i n t E r r o r ( d s p , e c 0064640 ) ] \r u n l e s s e c 0064660 e q e c F i l e U n d e l e 0064700 t a b l e & \r C t x R 0064720 u n n i n g > > R S C t x . u s 0064740 e r I n f o > > U s e r I n f o 0064760 . c a p a b i l i t i e s . w h 0065000 e e l r e t u r n \r \r W 0065020 s ( " * n B u t b e c a 0065040 u s e y o u a r e e n a b 0065060 l e d , y o u m a y d e l 0065100 e t e i t a n y w a y . " ) 0065120 \r W s ( " * n A r e 0065140 y o u r e a l l y s u r e 0065160 y o u w a 376 001 \0 < 376 n t t 0065200 o d o t h i s ? " ) \r 0065220 D i s m i s s ( 5 0 ) / / 0065240 0 . 5 s e c o n d \r R e 0065260 s e t s ( k e y s ) \r u n 0065300 l e s s T e l n e t C o n f i 0065320 r m ( ) r e t u r n \r d 0065340 e l e t e U n d e l e t a b l e 0065360 = t r u e \r ] r e p 0065400 e a t \r ] \r \r / / - - - - - - - 0065420 - - - - - - - - - - - - - - - - * 0065520 - - - - \r a n d D e l e t e S 0065540 u b c o m m a n d ( c s , e n 0065560 t r y , o p t i o n s 376 001 \0 \v 0065600 _ ) b e \r / / - - - - - - - - 0065620 - - - - - - - - - - - - - - - - * 0065720 - - - \r [ \r s w i t c h o n e 0065740 n t r y ! 0 i n t o \r [ 0065760 \r c a s e 1 : \r 0066000 W s s ( c s , " ( a l l 0066020 d e l e t e s a u t o m a t 0066040 i c a l l y ) " ) \r 0066060 o p t i o n s > > O p t i o n s 0066100 . a u t o C o n f i r m = t 0066120 r u e \r e n d c a s 0066140 e \r c a s e 2 : \r 0066160 W s s ( c s , " ( # 0066200 o 376 001 \0 024 302 f v e r s i o n s 0066220 ) " ) \r o p t i o 0066240 n s > > O p t i o n s . k e e p 0066260 = G e t N u m b e r ( c s ) 0066300 \r e n d c a s e \r 0066320 ] \r ] \r \f \r / / - - - - - - 0066340 - - - - - - - - - - - - - - - - * 0066440 - - - - - \r a n d E x e c R e 0066460 n a m e ( c s ) b e \r / / - - 0066500 - - - - - - - - - - - - - - - - * 0066600 - - - - - - 376 001 \0 ? 212 - - - \r / 0066620 / R e n a m e < e x i s t i 0066640 n g - f i l e > < n e w - f i 0066660 l e > \r [ \r W s s ( c s , " 0066700 ( e x i s t i n g f i l e ) 0066720 " ) \r l e t o l d N a m e , 0066740 o l d N a m e B o d y , n e w 0066760 N a m e = 0 , 0 , 0 \r i 0067000 f E n a b l e C a t c h ( c s 0067020 ) t h e n \r [ F r e e 0067040 P o i n t e r ( l v o l d N a 0067060 m e , l v o l d N a m e B o 0067100 d y , l v n e w N a m e ) ; 0067120 E n d C a t c h ( c s ) ] \r 0067140 o l d N a m e = G e t S t r 0067160 i n g ( c s , 0 , W s s , 0067200 " f i l e n a m e " ) 376 001 \0 226 326 0067220 \r l e t f d = L o o k u p 0067240 I F S F i l e ( o l d N a m e , 0067260 l c V H i g h e s t ) \r i f 0067300 f d e q 0 t h e n E r r 0067320 o r s ( c s , 0 ) \r o l d N a 0067340 m e B o d y = E x t r a c t 0067360 S u b s t r i n g ( l v f d > 0067400 > F D . d r > > D R . p a t h N 0067420 a m e , \r f d > > F D . l e n 0067440 S u b D i r S t r i n g + 1 , 0067460 f d > > F D . l e n B o d y S t 0067500 r i n g - 1 ) \r D e s t r o y F 0067520 D ( f d ) \r \r W s s ( c s , " 0067540 ( t o b e ) " ) \r n e w N 0067560 a m e = G e t S t r i n g ( 0067600 c s , 0 , W s s , " f i l 0067620 376 001 \0 256 357 e n a m e " ) \r i f 0067640 T e r m i n a t i n g C h a r ( 0067660 c s ) e q 3 3 B t h e n 0067700 / / E S C - - a p p e n 0067720 d b o d y o f o l d n a 0067740 m e \r [ \r W s ( o l 0067760 d N a m e B o d y ) \r n e 0070000 w N a m e = C o n c a t e n 0070020 a t e S t r i n g s ( n e w N a 0070040 m e , o l d N a m e B o d y , 0070060 t r u e ) \r ] \r l e t 0070100 e c = n i l \r u n l e s s 0070120 I F S R e n a m e F i l e ( o l 0070140 d N a m e , n e w N a m e , 0070160 l v e c ) d o \r [ W 0070200 s ( " * n F a i l e d : " ) ; 0070220 I F S P 376 \0 K N 233 r i n t E r 0070240 r o r ( d s p , e c ) ] \r F 0070260 r e e P o i n t e r ( l v o l 0070300 d N a m e , l v o l d N a m 0070320 e B o d y , l v n e w N a m 0070340 e ) \r ] \r 377 \0 \0 I f s T e l n e 0070360 t D i r S t a t . b c p l \0 373 224 0070400 355 > : \0 \0 376 001 \0 5 241 / / I f s 0070420 T e l n e t D i r S t a t . b c 0070440 p l - - I F S s y s t e m 0070460 s t a t i s t i c s c o m m 0070500 a n d s \r / / C o p y r i g h 0070520 t X e r o x C o r p o r a t 0070540 i o n 1 9 7 9 , 1 9 8 0 \r \r 0070560 / / L a s t m o d i f i e d 0070600 M a r c h 5 , 1 9 8 0 0070620 8 : 5 2 A M b y T a f t \r 0070640 \r g e t " I f s . d e c l " \r 0070660 g e t " I f s V M e m . d e c 0070700 l " \r g e t " B T r e e . d e 0070720 c l " \r g e t " I f s I s f . 0070740 d " \r \r e x t e r n a l \r [ \r / 0070760 / o u t g o i n g p r o c e 0071000 d u r e s \r D i r S 376 001 \0 236 271 t 0071020 a t i s t i c s \r \r / / i n c 0071040 o m i n g p r o c e d u r e s 0071060 \r P u t T e m p l a t e ; W r 0071100 i t e P a c k e d D T ; R e a 0071120 d B T r e e P a g e ; L o c k 0071140 ; U n l o c k ; P l u r a l 0071160 \r \r / / i n c o m i n g s t 0071200 a t i c s \r d s p ; p r i m a 0071220 r y I F S \r ] \r \r / / - - - - - 0071240 - - - - - - - - - - - - - - - - * 0071340 - - - - - - \r l e t D i r S t 0071360 a t i s t i c s ( ) b e \r / / 0071400 - - - - - - - - - - - - - - - 376 0071420 001 \0 V 223 - - - - - - - - - - - - 0071440 - - - - - - - - - - - - - - - - * 0071520 \r [ \r P u t T e m p l a t e ( d 0071540 s p , " * n * n P r i m a r y 0071560 f i l e s y s t e m c r e 0071600 a t e d a t $ P " , \r W r 0071620 i t e P a c k e d D T , l v 0071640 p r i m a r y I F S > > I F S . 0071660 c r e a t e d ) \r l e t t r e 0071700 e = p r i m a r y I F S > > 0071720 I F S . d i r B T r e e \r l e t 0071740 f m a p = t r e e > > T R 0071760 E E . v m d > > F V M D . f i l 0072000 e M a p \r l e t r u n s = 0072020 ( f m a 376 001 \0 237 H p > > F M . l 0072040 a s t - m a p o f f s e t ) r 0072060 s h i f t 1 \r P u t T e m p l 0072100 a t e ( d s p , " * n $ U D 0072120 d i r e c t o r y p a g e s 0072140 a s s i g n e d i n $ D r 0072160 u n $ S " , \r f m a p > > F M 0072200 . o n e r n , r u n s , P l 0072220 u r a l ( r u n s ) ) \r L o c k 0072240 ( l v p r i m a r y I F S > > 0072260 I F S . d i r L o c k ) \r l e t 0072300 l e v e l s = 0 \r l e t 0072320 p a g e = t r e e > > T R E 0072340 E . R o o t P a g e \r w h i l e 0072360 p a g e n e E m p t y d 0072400 o \r [ p a g e = R e 0072420 a d B T r e e P a 376 \0 366 . 0 g e 0072440 ( t r e e , p a g e ) > > B T 0072460 P . M i n P t r ; l e v e l s 0072500 = l e v e l s + 1 ] \r U n 0072520 l o c k ( l v p r i m a r y I 0072540 F S > > I F S . d i r L o c k ) 0072560 \r P u t T e m p l a t e ( d s p 0072600 , " * n B - T r e e u s e s 0072620 $ U D p a g e s i n $ D 0072640 l e v e l s " , \r t r e e > 0072660 > T R E E . G r e a t e s t P a 0072700 g e , l e v e l s ) \r P u t T 0072720 e m p l a t e ( d s p , " * n 0072740 $ U D f i l e s i n t h e 0072760 s y s t e m " , t r e e > > 0073000 T R E E . R e c o r d C o u n t 0073020 ) \r ] \r 377 \0 \0 I f s T e l n e t 0073040 D i s k s . b c p l \0 373 230 336 004 016 0073060 \0 \0 376 001 \0 # / / / I f s T e l 0073100 n e t D i s k s . b c p l - - 0073120 s e r v e r t e l n e t c 0073140 o m m a n d s d e a l i n g 0073160 w i t h d i s k p a c k s \r 0073200 / / C o p y r i g h t X e r 0073220 o x C o r p o r a t i o n 1 0073240 9 7 9 , 1 9 8 2 \r \r / / L a 0073260 s t m o d i f i e d A p r i 0073300 l 9 , 1 9 8 2 1 2 : 5 9 0073320 P M b y T a f t \r \r g e t 0073340 " I f s . d e c l " \r g e t 0073360 " I f s F i l e s . d e c l " \r 0073400 g e t " S t r e a m s . d " \r 0073420 \r e x t e r n a l \r [ \r / / o 0073440 u t g o i n g p r o c e d u r 0073460 e s \r E x e c 376 001 \0 O i I n i t 0073500 i a l i z e ; E x e c E x t e 0073520 n d ; E x e c W h a t \r \r / / 0073540 i n c o m i n g p r o c e d 0073560 u r e s \r C r e a t e K e y w o 0073600 r d T a b l e ; D e s t r o y 0073620 K e y w o r d T a b l e ; I n 0073640 s e r t K e y w o r d \r G e t K 0073660 e y w o r d ; G e t N u m b e 0073700 r ; G e t S t r i n g ; C o 0073720 n f i r m \r E n a b l e C a t c 0073740 h ; E n d C a t c h ; R e t 0073760 r y P h r a s e ; A b o r t C 0074000 m d \r G e t C r e a t e P a r a 0074020 m s ; D e s t r o y C r e a t 0074040 e P a r a m s ; C r e a t e I 0074060 F S ; C l o s e I F S 376 001 \0 373 0074100 213 ; E x t e n d I F S \r O p e 0074120 n T F S D i s k ; C l o s e T 0074140 F S D i s k \r E x t e n d S t a 0074160 c k C a l l ; L o c k ; U n 0074200 l o c k \r O p e n F i l e ; R 0074220 e a d B l o c k ; C l o s e s 0074240 \r W s ; W s s ; I F S P r i 0074260 n t E r r o r ; E r r o r s ; 0074300 S t r i n g C o m p a r e ; 0074320 P u t T e m p l a t e ; W r i 0074340 t e P a c k e d D T \r \r / / i 0074360 n c o m i n g s t a t i c s \r 0074400 d s p ; d r i v e T a b ; f 0074420 s Q ; o p e n L o c k \r ] \r \r 0074440 / / - - - - - - - - - - - - - - 0074460 - - - - - - - - - - - - - - - - 0074500 - 376 001 \0 222 005 - - - - - - - - - - 0074520 - - - - - - - - - - - - - - - - * 0074560 - - - \r l e t E x e c I n i t 0074600 i a l i z e ( c s ) b e \r / / 0074620 - - - - - - - - - - - - - - - - * 0074720 - - - - - - - - - - - - \r / / 0074740 C o m m a n d t o i n i t i 0074760 a l i z e a n e w f i l e 0075000 s y s t e m \r [ \r W s s ( c s 0075020 , " ( f i l e s y s t e m 0075040 t y p e ) " ) \r l e t k t 0075060 = n i l \r i f E n a b l e 0075100 C a t c h ( 376 001 \0 260 212 c s ) t 0075120 h e n [ D e s t r o y K e y 0075140 w o r d T a b l e ( k t ) ; E 0075160 n d C a t c h ( c s ) ] \r k t 0075200 = C r e a t e K e y w o r d 0075220 T a b l e ( 5 ) \r I n s e r t K 0075240 e y w o r d ( k t , " P r i m 0075260 a r y " ) ! 0 = i f s T y p 0075300 e P r i m a r y \r I n s e r t K 0075320 e y w o r d ( k t , " B a c k 0075340 u p " ) ! 0 = i f s T y p e 0075360 B a c k u p \r I n s e r t K e y 0075400 w o r d ( k t , " A u x i l i 0075420 a r y " ) ! 0 = i f s T y p 0075440 e A u x i l i a r y \r l e t c 0075460 P a r = G e t C r e a t e P 0075500 a r a m s ( G e t K e 376 001 \0 034 0075520 y w o r d ( c s , k t ) ! 0 ) 0075540 \r D e s t r o y K e y w o r d T 0075560 a b l e ( k t ) \r i f c P a r 0075600 n e 0 t h e n \r [ \r 0075620 W s ( " * n I n i t i a l 0075640 i z a t i o n i n p r o g r 0075660 e s s . . . " ) \r l e t 0075700 e c = n i l \r l e t 0075720 f s = C r e a t e I F S ( c 0075740 P a r , l v e c ) \r D 0075760 e s t r o y C r e a t e P a r a 0076000 m s ( c P a r ) \r t e s t 0076020 f s n e 0 \r i 0076040 f s o [ C l o s e I F S ( f 0076060 s ) ; W s ( " D o n e . " ) 0076100 ] \r i f n o t [ 0076120 376 001 \0 313 340 W s ( " F a i l e d : 0076140 * n " ) ; I F S P r i n t E r 0076160 r o r ( d s p , e c ) ] \r 0076200 ] \r ] \r \f \r / / - - - - - - 0076220 - - - - - - - - - - - - - - - - * 0076320 - - - - - - \r a n d E x e c E 0076340 x t e n d ( c s ) b e \r / / - 0076360 - - - - - - - - - - - - - - - - * 0076460 - - - - - - - - - - - \r / / C 0076500 o m m a n d t o e x t e n d 0076520 a f i 376 001 \0 036 ~ l e s y s 0076540 t e m b y a d d i n g a n 0076560 o t h e r p a c k \r [ \r W s s 0076600 ( c s , " ( f i l e s y s 0076620 t e m ) " ) \r l e t i f s 0076640 = G e t F i l e S y s t e m ( 0076660 c s ) \r W s s ( c s , " ( b 0076700 y a d d i n g d r i v e ) 0076720 " ) \r l e t d r i v e = G 0076740 e t N u m b e r ( c s , 8 ) \r 0076760 i f d r i v e l s 0 % 0077000 d r i v e g e n D r i v e s 0077020 t h e n R e t r y P h r a s 0077040 e ( c s ) \r i f d r i v e T a 0077060 b > > D r i v e T a b ^ d r i v 0077100 e . i f s n e 0 t h e n 0077120 R e t r y P h r a s 376 001 \0 \n 205 e 0077140 ( c s , " a l r e a d y i 0077160 n u s e " ) \r i f C o n f i 0077200 r m ( c s ) t h e n \r [ 0077220 \r W s ( " * n I n i t i a 0077240 l i z a t i o n i n p r o g 0077260 r e s s . . . " ) \r l e t 0077300 e c = E x t e n d I F S ( 0077320 i f s , d r i v e ) \r t 0077340 e s t e c e q 0 \r 0077360 i f s o W s ( " D o n e . 0077400 " ) \r i f n o t [ 0077420 W s ( " F a i l e d : * n " ) 0077440 ; I F S P r i n t E r r o r ( 0077460 d s p , e c ) ] \r ] \r 0077500 ] \r \r / / - - - - - - - - - - - 0077520 - - - - - - - - - - - - - - - 376 0077540 001 \0 201 326 - - - - - - - - - - - - 0077560 - - - - - - - - - - - - - - - - * 0077620 - - - - - - \r a n d G e t F i 0077640 l e S y s t e m ( c s ) = v 0077660 a l o f \r / / - - - - - - - - - 0077700 - - - - - - - - - - - - - - - - * 0100000 - - - \r [ \r l e t n a m e = 0100020 G e t S t r i n g ( c s , 0 0100040 , W s s , " f i l e s y s 0100060 t e m I D " ) \r l e t i f s 0100100 = f s Q ! 0 \r w h i l e i 0100120 f s n e 0 d o \r [ \r 0100140 i 376 001 \0 363 = f S t r i n 0100160 g C o m p a r e ( n a m e , i 0100200 f s > > I F S . i d ) e q 0 0100220 r e s u l t i s i f s \r 0100240 i f s = i f s ! 0 \r 0100260 ] \r E r r o r s ( c s , 0 ) \r 0100300 ] \r \f \r / / - - - - - - - - - - 0100320 - - - - - - - - - - - - - - - - * 0100420 - - \r a n d E x e c W h a t ( 0100440 c s ) b e \r / / - - - - - - - 0100460 - - - - - - - - - - - - - - - - * 0100540 - - - - - - - - - 376 001 \0 360 & - - 0100560 - - - - - - - - - - \r / / W h 0100600 a t ( i s t h e p a c k 0100620 o n d r i v e ) < d r i v e 0100640 > \r [ \r W s s ( c s , " ( i 0100660 s t h e p a c k o n d r 0100700 i v e ) " ) \r l e t d r i v 0100720 e = G e t N u m b e r ( c s 0100740 , 8 ) \r i f d r i v e l s 0100760 0 % d r i v e g e n D 0101000 r i v e s t h e n E r r o r 0101020 s ( c s , 0 ) \r i f d r i v 0101040 e T a b > > D r i v e T a b ^ d 0101060 r i v e . i f s n e 0 t h 0101100 e n \r A b o r t C m d ( c 0101120 s , " * n D r i v e a l r e 0101140 a d y i n u s e . " ) \r 376 001 0101160 \0 252 270 E x t e n d S t a c k C a 0101200 l l ( 2 0 4 8 , D o W h a t , 0101220 d r i v e ) \r ] \r \r / / - - - 0101240 - - - - - - - - - - - - - - - - * 0101340 - - - - - - - - - \r a n d D o 0101360 W h a t ( d r i v e ) b e \r / 0101400 / - - - - - - - - - - - - - - - 0101420 - - - - - - - - - - - - - - - - * 0101500 - - - - - - - - - - - - - \r [ \r 0101520 L o c k ( o p e n L o c k , t 0101540 r u e ) \r l e t d i s k = 0101560 O p e 376 001 \0 222 261 n T F S D i s k 0101600 ( d r i v e , 0 ) \r U n l o c 0101620 k ( o p e n L o c k ) \r i f d 0101640 i s k e q 0 t h e n [ 0101660 W s ( " * n C a n n o t m o u 0101700 n t . " ) ; r e t u r n ] \r 0101720 l e t s = O p e n F i l e 0101740 ( " I F S . h o m e " , k s T 0101760 y p e R e a d O n l y , 0 , 0102000 0 , 0 , 0 , 0 , 0 , d 0102020 i s k ) \r t e s t s e q 0 0102040 \r i f s o \r W 0102060 s ( " * n N o t a n I F S 0102100 p a c k . " ) \r i f n o t 0102120 \r [ \r l 0102140 e t h o m e = v e c l e 0102160 n H o m e \r 376 001 \0 341 021 0102200 R e a d B l o c k ( s , h o 0102220 m e , l e n H o m e ) \r 0102240 C l o s e s ( s ) \r 0102260 P u t T e m p l a t e ( d 0102300 s p , " * n I D : $ S , N 0102320 a m e : $ S , L o g i c a l 0102340 u n i t $ O , " , \r 0102360 l v h o m e > > H o m e 0102400 . i d , l v h o m e > > H o 0102420 m e . n a m e , h o m e > > H 0102440 o m e . t h i s U n i t ) \r 0102460 P u t T e m p l a t e ( 0102500 d s p , " * n T y p e : $ S 0102520 , I n i t i a l i z e d a t 0102540 $ P . " , \r ( s 0102560 e l e c t o n h o m e > 376 001 \0 0102600 @ 375 > H o m e . t y p e i n t 0102620 o \r [ \r 0102640 c a s e i f s T y 0102660 p e P r i m a r y : " P r i m 0102700 a r y " \r c a 0102720 s e i f s T y p e B a c k u p 0102740 : " B a c k u p " \r 0102760 c a s e i f s T y p e 0103000 A u x i l i a r y : " A u x i 0103020 l i a r y " \r 0103040 d e f a u l t : " ? ? " \r 0103060 ] ) , \r 0103100 W r i t e P a c k e d D T , 0103120 l v h o m e > > H o m e . c 0103140 r e a t e d ) \r ] \r 0103160 L o c k ( o p e n L o c k , t 0103200 r u 376 \0 ) 343 300 e ) \r C l o s e T 0103220 F S D i s k ( d i s k ) \r U n l 0103240 o c k ( o p e n L o c k ) \r ] \r 0103260 377 \0 \0 I f s T e l n e t D i s k 0103300 S t a t . b c p l \0 373 230 ' 361 342 \0 0103320 \0 376 001 \0 242 313 / / I f s T e l n 0103340 e t D i s k S t a t . b c p l 0103360 - - I F S s y s t e m s t 0103400 a t i s t i c s c o m m a n d 0103420 s \r / / C o p y r i g h t X 0103440 e r o x C o r p o r a t i o n 0103460 1 9 7 9 , 1 9 8 0 , 1 9 8 0103500 1 \r \r / / L a s t m o d i f 0103520 i e d N o v e m b e r 2 2 , 0103540 1 9 8 1 1 0 : 2 7 A M 0103560 b y T a f t \r \r g e t " I f 0103600 s D D M g r . d e c l " \r \r e x 0103620 t e r n a l \r [ \r / / o u t g 0103640 o i n g p r o c e d u r e s \r 0103660 D i s k S t a t i s t i c s \r \r 0103700 / / i n c o m i n g p r o c 0103720 e d u r e s 376 001 \0 % C \r P u t s 0103740 ; W s ; P u t T e m p l a t 0103760 e ; D o u b l e A d d ; D o 0104000 u b l e S u b t r a c t ; Z e 0104020 r o ; D i v 3 2 x 1 6 \r L o c 0104040 k D D ; U n l o c k D D ; R 0104060 e a d D D P a g e ; L o c k ; 0104100 U n l o c k \r \r / / i n c o 0104120 m i n g s t a t i c s \r d s p 0104140 ; d r i v e T a b ; o p e n 0104160 L o c k \r ] \r \r / / - - - - - - 0104200 - - - - - - - - - - - - - - - - * 0104300 - - - - - \r l e t D i s k S t 0104320 a t i s t i c s ( ) 376 001 \0 e C 0104340 b e \r / / - - - - - - - - - - - 0104360 - - - - - - - - - - - - - - - - * 0104460 \r [ \r W s ( " * n * n D i s k 0104500 s t a t i s t i c s ( c u m u 0104520 l a t i v e ) : " ) \r W s ( " * 0104540 n U n F i l e s y s t e m 0104560 T r a n s f e r s 0104600 E r r E C C F i x 0104620 R e s t U n r e c B T e r 0104640 r F r e e " ) \r f o r d 0104660 r i v e = 0 t o n D r i 0104700 v e s - 1 d o f o r f s 0104720 = 0 t o 1 d o \r [ 0104740 376 001 \0 ' D \r / / D o n ' 0104760 t b o t h e r l o c k i n g 0105000 o p e n L o c k h e r e , 0105020 b e c a u s e t h e w o r s 0105040 t p o s s i b l e e f f e c 0105060 t \r / / o f h a v i n 0105100 g t h e d i s k d i s a p 0105120 p e a r o u t f r o m u n 0105140 d e r u s i s t h a t w 0105160 e p r i n t s o m e \r 0105200 / / g a r b a g e n u m b e 0105220 r s . \r l e t d t e = 0105240 l v d r i v e T a b > > D r 0105260 i v e T a b ^ d r i v e \r 0105300 l e t d i s k = d t e > > 0105320 D T E . d i s k ^ f s \r i 0105340 f d i s 376 001 \0 o 237 k n e 0 0105360 t h e n \r [ \r 0105400 P u t T e m p l a t e ( 0105420 d s p , ( d t e > > D T E . d 0105440 i s k ^ 1 e q 0 ? " * n $ 0105460 O " , " * n $ O / $ O 0105500 " ) , \r d r i v e 0105520 , f s ) \r l e t 0105540 i f s = d t e > > D T E . i 0105560 f s \r t e s t i f 0105600 s n e 0 \r 0105620 i f s o \r 0105640 [ \r W 0105660 s ( i f s > > I F S . i d ) \r 0105700 f o r i 0105720 = 1 t o 1 0 - i f s > > 0105740 I F S . i d > > S t 376 001 \0 : & r 0105760 i n g . l e n g t h d o P u 0106000 t s ( d s p , $ * s ) \r 0106020 f o r u = 0106040 0 t o n D i s k s - 1 d 0106060 o \r 0106100 i f d i s k e q i f s > 0106120 > I F S . l p d t ^ u t h e n 0106140 P u t T e m p l a t e ( d s p 0106160 , " ( $ 2 O ) " , u ) \r 0106200 ] \r 0106220 i f n o t \r 0106240 W s ( " N o t I 0106260 F S " ) \r 0106300 P u t T e m p l a t e ( d s p 0106320 , " $ 1 0 E D $ 6 E D $ 6 E D 0106340 $ 6 E D $ 6 E D $ 6 E D $ 6 E 376 0106360 001 \0 242 \b D $ 7 U D " , \r 0106400 l v d i s k > > T F S D 0106420 S K . n T r a n s f e r s , l 0106440 v d i s k > > T F S D S K . n 0106460 E r r o r s , \r l 0106500 v d i s k > > T F S D S K . n 0106520 E C C E r r o r s , l v d i 0106540 s k > > T F S D S K . n E C C F 0106560 i x e s , \r l v 0106600 d i s k > > T F S D S K . n R e 0106620 s t o r e s , l v d i s k > 0106640 > T F S D S K . n U n R e c o v 0106660 , \r l v d i s k 0106700 > > T F S D S K . n B T E r r o 0106720 r s , d i s k > > T F S D S K 0106740 . f r e e P a g e s ) \r 0106760 ] \r 376 001 \0 214 5 ] \r \f \r 0107000 / / D i s k S t a t i s t i c 0107020 s ( c o n t ' d ) \r \r W s ( " 0107040 * n * n D i s k d r i v e s 0107060 t a t i s t i c s ( s i n c e 0107100 l a s t r e s t a r t ) : " 0107120 ) \r W s ( " * n U n T r a n s 0107140 f e r s E r r E C C 0107160 / 1 0 ^ 1 0 b i t s " ) \r f 0107200 o r d r i v e = 0 t o 0107220 n D r i v e s - 1 d o \r 0107240 [ \r l e t d t e = l 0107260 v d r i v e T a b > > D r i v 0107300 e T a b ^ d r i v e \r / / 0107320 L o c k o u t c h a n g e 0107340 s t o d i s k c o n f i g 0107360 u r a t i o n - 376 001 \0 203 353 - 0107400 n e e d e d b e c a u s e c 0107420 a l l i n g \r / / R e a 0107440 d D D P a g e o n a n o n 0107460 e x i s t e n t d i s k w o 0107500 u l d b e d i s a s t e r o 0107520 u s . \r L o c k ( o p e n 0107540 L o c k ) \r t e s t d t 0107560 e > > D T E . i f s n e 0 \r 0107600 i f s o \r [ \r 0107620 l e t n T r a n s 0107640 f e r s = v e c 6 ; Z e 0107660 r o ( n T r a n s f e r s , 6 0107700 ) \r l e t n E r r 0107720 o r s , n E C C E r r o r s 0107740 = n T r a n s f e r s + 2 , 0107760 n T r a n s f e r s + 4 \r 376 001 0110000 \0 021 372 f o r f s = 0110020 0 t o 1 d o \r 0110040 [ \r l 0110060 e t d i s k = d t e > > D 0110100 T E . d i s k ^ f s \r 0110120 i f d i s k n e 0 0110140 t h e n \r 0110160 [ \r 0110200 l e t d d M g r = d i s k 0110220 > > T F S D S K . d d M g r \r 0110240 D o u b l 0110260 e A d d ( n T r a n s f e r s , 0110300 l v d i s k > > T F S D S K 0110320 . n T r a n s f e r s ) \r 0110340 D o u b l e A 0110360 d d ( n E r r o r s , l v d 0110400 i s k 376 001 \0 311 215 > > T F S D S K 0110420 . n E r r o r s ) \r 0110440 D o u b l e A d d ( 0110460 n E C C E r r o r s , l v d 0110500 i s k > > T F S D S K . n E C C 0110520 E r r o r s ) \r 0110540 L o c k D D ( d d M g r 0110560 , d i s k ) \r 0110600 l e t i n i t i a l K 0110620 D = l v ( R e a d D D P a 0110640 g e ( d d M g r , d i s k , 0110660 1 ) ) > > I F S K D . i n i t i 0110700 a l K D \r 0110720 D o u b l e S u b t r a c t ( 0110740 n T r a n s f e r s , l v i 0110760 n i t i a l K D > > T F S K D . 0111000 n T r a n s f e 376 001 \0 274 341 r s ) 0111020 \r D o u 0111040 b l e S u b t r a c t ( n E r r 0111060 o r s , l v i n i t i a l K 0111100 D > > T F S K D . n E r r o r s 0111120 ) \r D o 0111140 u b l e S u b t r a c t ( n E C 0111160 C E r r o r s , l v i n i t 0111200 i a l K D > > T F S K D . n E C 0111220 C E r r o r s ) \r 0111240 U n l o c k D D ( d d 0111260 M g r , d i s k ) \r 0111300 ] \r 0111320 ] \r U n l o c k 0111340 ( o p e n L o c k ) \r 0111360 P u t T e m p l a t e ( d s p 0111400 , " * n $ O $ 1 1 E D $ 376 001 \0 0111420 226 \b 6 E D $ 6 E D " , d r i v 0111440 e , n T r a n s f e r s , \r 0111460 n E r r o r s , n 0111500 E C C E r r o r s ) \r \r 0111520 / / T o c o m p u t e 0111540 E C C e r r o r s p e r 1 0111560 0 ^ 1 0 b i t s ( T - 3 0 0 0111600 s p e c ) : \r / / 0111620 r a t e = ( n E C C E r r 0111640 o r s * 1 0 ^ 1 0 ) / ( n T 0111660 r a n s f e r s * 2 ^ 1 4 ) 0111700 \r / / w h e r e 0111720 2 ^ 1 4 i s t h e n u m b 0111740 e r o f b i t s t r a n s 0111760 f e r r e d p e r p a g e . 0112000 \r / / 1 0 ^ 1 0 0112020 i s 376 001 \0 225 201 a p p r o x i m 0112040 a t e l y e q u a l t o 2 0112060 ^ 3 3 , s o w e h a v e : 0112100 \r / / r a t e = 0112120 n E C C E r r o r s / ( n T r 0112140 a n s f e r s * 2 ^ - ( 3 3 0112160 - 1 4 ) ) = \r / / 0112200 n E C C E r r o r s / ( 0112220 n T r a n s f e r s / 2 ^ 1 9 ) 0112240 = ( n E C C E r r o r s * 2 0112260 ^ 1 9 ) / n T r a n s f e r s \r 0112300 l e t r a t e = 0112320 v e c 1 \r r a t 0112340 e ! 0 , r a t e ! 1 = n E 0112360 C C E r r o r s ! 1 , 0 / 0112400 / G o d h e l p u s i f 0112420 m o r e t 376 001 \0 n e h a n 0112440 2 ^ 1 6 e r r o r s \r 0112460 D i v 3 2 x 1 6 ( n T r a n 0112500 s f e r s , 8 ) / / t o 0112520 c o m p u t e ( n E C C E r 0112540 r o r s * 2 ^ 1 6 ) / ( n T r a 0112560 n s f e r s * 2 ^ - 3 ) \r 0112600 w h i l e n T r a n s f 0112620 e r s ! 0 n e 0 d o / 0112640 / d o u b l e r i g h t s 0112660 h i f t t h e h a r d w a 0112700 y \r [ D i v 0112720 3 2 x 1 6 ( r a t e , 2 ) ; 0112740 D i v 3 2 x 1 6 ( n T r a n s f 0112760 e r s , 2 ) ] \r 0113000 D i v 3 2 x 1 6 ( r a t e , n 0113020 T r a n s f e r s ! 1 ) 376 \0 k 003 0113040 023 / / n o w d e n o m i 0113060 n a t o r < 2 ^ 1 6 \r 0113100 P u t T e m p l a t e ( d 0113120 s p , " $ 7 E D " , r a t e 0113140 ) \r ] \r \r i f 0113160 n o t U n l o c k ( o p e n L 0113200 o c k ) \r ] \r ] \r 377 \0 \0 I 0113220 f s T e l n e t F i l e U t i l 0113240 . b c p l \0 373 231 \r O 215 \0 \0 376 001 \0 0113260 264 023 / / I f s T e l n e t F i 0113300 l e U t i l . b c p l - - U 0113320 t i l i t i e s f o r c o l 0113340 l e c t i n g a n d e n u m 0113360 e r a t i n g f i l e s \r / / 0113400 C o p y r i g h t X e r o x 0113420 C o r p o r a t i o n 1 9 7 0113440 9 , 1 9 8 1 , 1 9 8 2 \r \r / 0113460 / L a s t m o d i f i e d 0113500 M a y 1 5 , 1 9 8 2 1 0 0113520 : 3 1 A M b y T a f t \r \r 0113540 g e t " I f s . d e c l " \r g 0113560 e t " I f s F i l e s . d e c 0113600 l " \r g e t " I f s D i r s . 0113620 d e c l " \r g e t " C m d S c 0113640 a n . d e c l " \r \r e x t e r n 0113660 a l 376 001 \0 352 310 \r [ \r / / o u t 0113700 g o i n g p r o c e d u r e s 0113720 \r C o l l e c t F i l e n a m e 0113740 s ; N e x t F i l e ; D e s 0113760 t r o y F G D ; S u b c o m m 0114000 a n d s ; S e t F G D L C \r W 0114020 h a t C h a n g e d ; C o p y 0114040 F D ; P r i n t S u b F i l e 0114060 n a m e \r \r / / i n c o m i n 0114100 g p r o c e d u r e s \r L o o 0114120 k u p I F S F i l e ; D e s t 0114140 r o y F D ; L o o k u p F D ; 0114160 N e x t F D \r G e t S t r i n 0114200 g ; T e r m i n a t i n g C h 0114220 a r ; C m d E r r o r \r E n a 0114240 b l e C a t c h ; E n d C a t 0114260 c h \r E x t r 376 001 \0 + L a c t S 0114300 u b s t r i n g \r D e f a u l t 0114320 A r g s ; S y s A l l o c a t 0114340 e ; S y s A l l o c a t e Z e 0114360 r o ; S y s F r e e ; F r e 0114400 e P o i n t e r \r Z e r o ; M 0114420 o v e B l o c k \r P u t s ; E 0114440 r r o r s ; W s s \r \r / / i 0114460 n c o m i n g s t a t i c s \r 0114500 p r i m a r y I F S \r ] \r \r m a 0114520 n i f e s t m a x N a m e s 0114540 = 1 0 \r \r / / - - - - - - - - 0114560 - - - - - - - - - - - - - - - - * 0114660 - - - \r s t r u c t u r 376 001 \0 311 0114700 275 e F G D : / / F i l e 0114720 G r o u p D e s i g n a t o 0114740 r \r / / - - - - - - - - - - - - 0114760 - - - - - - - - - - - - - - - - * 0115040 - - - - - - - - - - - - - - - \r 0115060 [ \r n N a m e s w o r d \t \t / 0115100 / n u m b e r o f n a m e 0115120 s \r n a m e ^ 1 , m a x N a m e 0115140 s + 1 w o r d \t / / - > n 0115160 a m e s t r i n g s \r \t \t \t / 0115200 / ( o n e e x t r a t o 0115220 s i m p l i f y C o l l e c t 0115240 F i l e n a m e s l o o p ) \r 0115260 s u b c o m m a n d s w o r d 0115300 \t 376 001 \0 027 } / / t r u e i f 0115320 f s u b c o m m a n d m o d 0115340 e r e q u e s t e d \r l c w 0115360 o r d \t \t \t / / l o o k u p 0115400 c o n t r o l \r i N a m e w o 0115420 r d \t \t / / i n d e x o f 0115440 c u r r e n t n a m e \r f d 0115460 w o r d \t \t \t / / - > F D 0115500 f o r e n u m e r a t i o n \r 0115520 f s w o r d \t \t \t / / - > 0115540 I F S \r ] \r m a n i f e s t l 0115560 e n F G D = s i z e F G D 0115600 / 1 6 \r \f \r / / - - - - - - - - 0115620 - - - - - - - - - - - - - - - - * 0115700 - - - - - - 376 001 \0 203 ' - - - - - 0115720 - - - - - - - - \r l e t C o l 0115740 l e c t F i l e n a m e s ( c s 0115760 , l c , p r o m p t , d e 0116000 f S t a r , f s ; n u m a r 0116020 g s n a ) = v a l o f \r / 0116040 / - - - - - - - - - - - - - - - 0116060 - - - - - - - - - - - - - - - - * 0116140 - - - - - - - - - - - - \r / / 0116160 C o l l e c t s a g r o u p 0116200 o f f i l e n a m e s a n 0116220 d r e t u r n s a f i l e 0116240 g r o u p d e s i g n a t o 0116260 r ( f g d ) . \r / / l c i 0116300 s t h e l o o k u 376 001 \0 g 243 0116320 p c o n t r o l f o r e a 0116340 c h n a m e . I f t h e 0116360 l a s t n a m e e n d s 0116400 w i t h \r / / c o m m a r e 0116420 t u r n , t h e c o m m a 0116440 i s s t r i p p e d o f f 0116460 a n d t h e s u b c o m m a 0116500 n d w o r d i n f g d \r / 0116520 / i s s e t t o t r u e 0116540 . I f d e f S t a r i s 0116560 f a l s e , a n e m p t y 0116600 i n p u t l i n e c a u s 0116620 e s a n \r / / e r r o r ; 0116640 i f t r u e , a n e m p 0116660 t y l i n e s i l e n t l y 0116700 d e f a u l t s t o " * " 0116720 376 001 \0 263 8 . \r / / f s d e s 0116740 i g n a t e s t h e f i l e 0116760 s y s t e m ; i t d e f a 0117000 u l t s t o p r i m a r y I 0117020 F S . \r [ \r D e f a u l t A r g 0117040 s ( l v n a , - 1 , l c V 0117060 H i g h e s t + l c M u l t i p 0117100 l e , " f i l e n a m e ( s 0117120 ) " , f a l s e , \r p r i m 0117140 a r y I F S ) \r l e t f g d 0117160 = n i l \r i f E n a b l e C 0117200 a t c h ( c s ) t h e n [ 0117220 D e s t r o y F G D ( f g d ) ; 0117240 E n d C a t c h ( c s ) ] \r 0117260 f g d = S y s A l l o c a t 0117300 e Z e r o ( l e n F G D ) \r f g 0117320 d > > F G 376 001 \0 344 m D . l c = 0117340 l c \r f g d > > F G D . f s 0117360 = f s \r \r [ / / l 0117400 o o p t o c o l l e c t n 0117420 a m e s \r l e t i N a m 0117440 e = f g d > > F G D . n N a 0117460 m e s + 1 \r l e t w a r 0117500 n = c s > > C S . i P h O u 0117520 t e q c s > > C S . m a x P 0117540 h r a s e s - 1 % i N a m e 0117560 g r m a x N a m e s \r 0117600 i f w a r n t h e n C m d 0117620 E r r o r ( c s , " [ f i l e 0117640 l i s t f u l l ] " ) / 0117660 / w a r n i n g , n o a b 0117700 o r t y e t \r l e t n 0117720 a m e = G e t S 376 001 \0 036 > t 0117740 r i n g ( c s , 0 , W s s , 0117760 p r o m p t ) \r \r i f 0120000 T e r m i n a t i n g C h a r ( 0120020 c s ) e q $ * n t h e n \r 0120040 [ \r l e 0120060 t l e n g t h = n a m e > 0120100 > S t r i n g . l e n g t h \r 0120120 i f n a m e > > S t 0120140 r i n g . c h a r ^ l e n g t h 0120160 e q $ , t h e n \r 0120200 [ \r 0120220 l e n g t h = l e n g t h - 0120240 1 \r n a m e > 0120260 > S t r i n g . l e n g t h = 0120300 l e n g t h \r 0120320 f g d > > F G D . s u b c o 376 0120340 001 \0 s M m m a n d s = t r u 0120360 e \r ] \r 0120400 i f l e n g t h e q 0120420 0 t h e n [ S y s F r e e 0120440 ( n a m e ) ; b r e a k ] \r 0120460 ] \r \r f g d > 0120500 > F G D . n a m e ^ i N a m e 0120520 = n a m e / / i f e r 0120540 r o r , w i l l n o w b e 0120560 f r e e d b y D e s t r o 0120600 y F G D \r i f w a r n 0120620 t h e n E r r o r s ( c s , 0120640 0 ) / / t o o m a n y 0120660 n a m e s \r l e t f d 0120700 = L o o k u p I F S F i l e ( 0120720 n a m e , l c , 0 , f s ) 0120740 \r 376 001 \0 \r 267 i f f d e 0120760 q 0 t h e n E r r o r s ( 0121000 c s , 0 ) \r t e s t i 0121020 N a m e e q 1 \r 0121040 i f s o f g d > > F G D . f d 0121060 = f d / / r e t a i n 0121100 t h e f i r s t F D \r 0121120 i f n o t D e s t r o 0121140 y F D ( f d ) \r f g d > > 0121160 F G D . n N a m e s = i N a 0121200 m e \r P u t s ( c s , $ 0121220 * s ) \r ] r e p e a t u 0121240 n t i l T e r m i n a t i n g 0121260 C h a r ( c s ) e q $ * n \r 0121300 \r i f f g d > > F G D . n N a 0121320 m e s e q 0 t h e n \r 0121340 t e s t d e f 376 001 \0 F ; S t 0121360 a r \r i f n o t E 0121400 r r o r s ( c s , 0 ) \r 0121420 i f s o \r 0121440 [ \r f g d > 0121460 > F G D . n N a m e s = 1 \r 0121500 f g d > > F G 0121520 D . n a m e ^ 1 = E x t r a 0121540 c t S u b s t r i n g ( " * * " 0121560 ) \r ] \r r e s 0121600 u l t i s f g d \r ] \r \f \r / / 0121620 - - - - - - - - - - - - - - - - * 0121720 - - - - - - - - - - - \r a n d 0121740 N e x t F i l e ( f g d ) 376 001 0121760 \0 A 275 = v a l o f \r / / - - - 0122000 - - - - - - - - - - - - - - - - * 0122100 - - - - - - - - \r / / R e t u 0122120 r n s a n F D f o r t h 0122140 e n e x t f i l e d e s i 0122160 g n a t e d b y t h e f i 0122200 l e g r o u p d e s i g n a 0122220 t o r \r / / f g d , o r z 0122240 e r o i f f g d i s e x 0122260 h a u s t e d . E x p e c t 0122300 s t o b e c a l l e d w 0122320 i t h t h e d i r e c t o r 0122340 y \r / / u n l o c k e d , a 0122360 n d 376 001 \0 274 273 r e t u r n s 0122400 w i t h i t u n l o c k e d 0122420 . \r [ \r l e t f d = f g d 0122440 > > F G D . f d \r i f f d n 0122460 e 0 t h e n \r [ \r 0122500 i f f g d > > F G D . i N a 0122520 m e e q 0 t h e n \r 0122540 [ / / f i r s t u s 0122560 e o f F D r e t a i n e d 0122600 b y C o l l e c t F i l e n 0122620 a m e s \r f g d > > 0122640 F G D . i N a m e = 1 \r 0122660 i f L o o k u p F D ( 0122700 f d ) e q 0 r e s u l t i 0122720 s f d \r / / s p 0122740 e c i f i c f i l e n o l 0122760 o n g e r e x 376 001 \0 m # i s t 0123000 s , b u t o t h e r s m a 0123020 y \r ] \r i f 0123040 N e x t F D ( f d ) r e s u l 0123060 t i s f d \r f g d > > F 0123100 G D . f d = D e s t r o y F 0123120 D ( f d ) \r ] \r f g d > > 0123140 F G D . i N a m e = f g d > 0123160 > F G D . i N a m e + 1 \r i f 0123200 f g d > > F G D . i N a m e g 0123220 r f g d > > F G D . n N a m e 0123240 s r e s u l t i s 0 \r f d 0123260 = L o o k u p I F S F i l e ( 0123300 f g d > > F G D . n a m e ^ ( f 0123320 g d > > F G D . i N a m e ) , 0123340 f g d > > F G D . l c , 0 , \r 0123360 f g d > > F G D . f s ) 376 001 \0 0123400 356 D \r f g d > > F G D . f d = 0123420 f d \r i f f d n e 0 r 0123440 e s u l t i s f d \r ] r e p 0123460 e a t \r \r / / - - - - - - - - - 0123500 - - - - - - - - - - - - - - - - * 0123600 - - \r a n d D e s t r o y F G 0123620 D ( f g d ) b e \r / / - - - - 0123640 - - - - - - - - - - - - - - - - * 0123740 - - - - - - - \r [ \r i f f g d 0123760 > > F G D . f d n e 0 t h 0124000 e n 376 001 \0 320 212 D e s t r o y F 0124020 D ( f g d > > F G D . f d ) \r f 0124040 o r i = 1 t o m a x N 0124060 a m e s + 1 d o F r e e P o 0124100 i n t e r ( l v f g d > > F G 0124120 D . n a m e ^ i ) \r S y s F r e 0124140 e ( f g d ) \r ] \r \r / / - - - - 0124160 - - - - - - - - - - - - - - - - * 0124260 - - - - - - - \r a n d S u b c 0124300 o m m a n d s ( f g d ) = f 0124320 g d > > F G D . s u b c o m m a 0124340 n d s \r / / - - - - - - - - - - 0124360 - - - - - - - - - - - - - - - - 0124400 - - - - - - - 376 001 \0 I \a - - - - 0124420 - - - - - - - - - - - - - - - - * 0124460 - - - - - - \r \r / / - - - - - - 0124500 - - - - - - - - - - - - - - - - * 0124600 - - - - - \r a n d S e t F G D 0124620 L C ( f g d , l c ) b e \r / 0124640 / - - - - - - - - - - - - - - - 0124660 - - - - - - - - - - - - - - - - * 0124740 - - - - - - - - - - - - \r [ \r f 0124760 g d > > F G D . l c = l c \r 0125000 / / d i s c a r d a 376 001 \0 [ 0125020 t n y r e t a i n e d F D , 0125040 s i n c e i t s L C m a 0125060 y n o l o n g e r b e v 0125100 a l i d . \r i f f g d > > F G 0125120 D . f d n e 0 t h e n f 0125140 g d > > F G D . f d = D e s 0125160 t r o y F D ( f g d > > F G D . 0125200 f d ) \r ] \r \f \r / / - - - - - - 0125220 - - - - - - - - - - - - - - - - * 0125320 - - - - - \r a n d W h a t C h 0125340 a n g e d ( f d , l a s t F D 0125360 ) = v a l o f \r / / - - - - 0125400 - - - - - - - - - - - - - - - - 0125420 - 376 001 \0 , 303 - - - - - - - - - - 0125440 - - - - - - - - - - - - - - - - * 0125500 - - - - - - - - - - - - \r / / 0125520 C o m p a r e s t h e f i l 0125540 e n a m e d e s i g n a t e d 0125560 b y f d a g a i n s t l 0125600 a s t F D \r / / a n d u p d 0125620 a t e s l a s t F D . R e 0125640 t u r n s a c o d e d e s 0125660 c r i b i n g h o w m u c h 0125700 o f t h e \r / / f i l e n 0125720 a m e c h a n g e d : \r / / 0125740 0 d i r e c t o r y ( o r 0125760 s u b d i r e c t o r y ) c 0126000 h a n g e d \r / / 1 n a m 0126020 e b o d y 376 001 \0 323 344 c h a n 0126040 g e d \r / / 2 v e r s i o 0126060 n c h a n g e d \r / / I n t 0126100 e n d e d u s e : c a l l e 0126120 r s h o u l d s t a r t b 0126140 y a l l o c a t i n g a n d 0126160 z e r o i n g a b l o c k 0126200 o f \r / / s i z e l e n F 0126220 D . D u r i n g a n e n 0126240 u m e r a t i o n o f t h e 0126260 ( r e a l ) f d , t h i s 0126300 b l o c k s h o u l d \r / / 0126320 b e p a s s e d a s t h 0126340 e l a s t F D a r g u m e n 0126360 t t o W h a t C h a n g e d 0126400 . A t t h e e n d o f 0126420 t h e \r / / e n u 376 001 \0 ( 265 0126440 m e r a t i o n , c a l l e r 0126460 m u s t D e s t r o y F D ( 0126500 l a s t F D ) . \r [ \r l e t i 0126520 = 1 \r w h i l e i l e 0126540 f d > > F D . l e n B o d y S t 0126560 r i n g d o \r [ \r 0126600 l e t c 1 = f d > > F D . 0126620 d r > > D R . p a t h N a m e . 0126640 c h a r ^ i \r l e t c 2 0126660 = l a s t F D > > F D . d r 0126700 > > D R . p a t h N a m e . c h 0126720 a r ^ i \r i f c 1 n e 0126740 c 2 t h e n \r [ 0126760 \r c 1 = c 1 & 0127000 # 1 3 7 ; c 2 = c 2 & 0127020 # 1 3 7 \r u n l e 0127040 376 001 \0 ^ , s s c 1 e q c 2 0127060 & c 1 g e $ A & c 1 0127100 l e $ Z b r e a k \r 0127120 ] \r i = i + 1 \r 0127140 ] \r l e t r e s = f 0127160 d > > F D . l e n S u b D i r S 0127200 t r i n g n e l a s t F D > 0127220 > F D . l e n S u b D i r S t r 0127240 i n g % \r i l e f d > > 0127260 F D . l e n S u b D i r S t r i 0127300 n g ? 0 , \r f d > > F D . l 0127320 e n B o d y S t r i n g n e 0127340 l a s t F D > > F D . l e n B o 0127360 d y S t r i n g % \r i l e 0127400 f d > > F D . l e n B o d y S 0127420 t r i n g ? 1 , 2 \r C o p y 0127440 F D ( l a 376 001 \0 * \n s t F D , 0127460 f d ) \r r e s u l t i s r e s 0127500 \r ] \r \r / / - - - - - - - - - - 0127520 - - - - - - - - - - - - - - - - * 0127620 - \r a n d C o p y F D ( d F D 0127640 , s F D ) b e \r / / - - - - 0127660 - - - - - - - - - - - - - - - - * 0127760 - - - - - - - \r / / R e p l a 0130000 c e s d F D w i t h a c 0130020 o p y o f s F D . P r e 0130040 c i s e l y : \r / / 376 001 \0 S 237 0130060 1 . C o p i e s a l l o f 0130100 t h e s F D s t r u c t u 0130120 r e i t s e l f , w i t h 0130140 t h e e x c e p t i o n o f 0130160 p o i n t e r s \r / / 0130200 t o o t h e r o b j e c t s 0130220 ( d r , p a t h S t k , a 0130240 n d t e m p l a t e ) . \r / / 0130260 2 . D e a l l o c a t e s 0130300 d F D ' s D R i f t h e r 0130320 e i s o n e , a n d t h 0130340 e n m a k e s a c o p y 0130360 o f s F D ' s D R \r / / 0130400 a n d i n s t a l l s i 0130420 t i n d F D . \r / / 3 . 0130440 U n c o n d i t i o n a l l y 376 0130460 001 \0 343 244 d e a l l o c a t e s 0130500 d F D ' s p a t h S t k a 0130520 n d t e m p l a t e . \r / / 0130540 T h i s i s a r a t h e r 0130560 s p e c i a l i z e d o p e 0130600 r a t i o n u s e d p r i n 0130620 c i p a l l y b y W h a t C 0130640 h a n g e d . \r [ \r F r e e P o 0130660 i n t e r ( l v d F D > > F D 0130700 . d r , l v d F D > > F D . 0130720 p a t h S t k , l v d F D > 0130740 > F D . t e m p l a t e ) \r M o 0130760 v e B l o c k ( d F D , s F D 0131000 , l e n F D ) \r d F D > > F D 0131020 . p a t h S t k = 0 \r d F D 0131040 > > F D . t e m p l a t e = 0131060 0 \r d F 376 001 \0 , 2 D > > F D . d 0131100 r = S y s A l l o c a t e ( 0131120 s F D > > F D . d r > > D R . l 0131140 e n g t h ) \r M o v e B l o c k 0131160 ( d F D > > F D . d r , s F D 0131200 > > F D . d r , s F D > > F D 0131220 . d r > > D R . l e n g t h ) \r 0131240 ] \r \r / / - - - - - - - - - - - 0131260 - - - - - - - - - - - - - - - - * 0131360 \r a n d P r i n t S u b F i l 0131400 e n a m e ( s t r , f d , f 0131420 i r s t , l a s t ; n u m a 0131440 r g s n a ) b e \r / / - - - 0131460 - - - - - - - - - 376 001 \0 x 214 - - 0131500 - - - - - - - - - - - - - - - - * 0131560 - - - - - - - - - - - - - \r / / 0131600 P r i n t s t h e ' f i r 0131620 s t ' t h r o u g h ' l a s 0131640 t ' c h a r a c t e r s o f 0131660 t h e f i l e n a m e \r / / 0131700 d e s i g n a t e d b y F 0131720 D . \r [ \r D e f a u l t A r g s 0131740 ( l v n a , - 2 , 1 , f 0131760 d > > F D . d r > > D R . p a t 0132000 h N a m e . l e n g t h ) \r f o 0132020 r i = f i r s t t o l 0132040 a s t d o P u t s ( s t r , 0132060 f d > > F D . d r > > D R 376 \0 0132100 024 h > . p a t h N a m e . c h a 0132120 r ^ i ) \r ] \r 377 \0 \0 I f s T e l 0132140 n e t G r o u p . b c p l \0 373 230 0132160 " 301 355 \0 \0 376 001 \0 > 257 / / I f s 0132200 T e l n e t G r o u p . b c p l 0132220 - - C o m m a n d s d e a 0132240 l i n g w i t h g r o u p 0132260 m e m b e r s h i p \r / / C o 0132300 p y r i g h t X e r o x C o 0132320 r p o r a t i o n 1 9 7 9 , 0132340 1 9 8 1 \r \r / / L a s t m o 0132360 d i f i e d N o v e m b e r 0132400 1 8 , 1 9 8 1 1 2 : 0 2 0132420 P M b y T a f t \r \r g e t 0132440 " I f s F i l e s . d e c l " \r 0132460 g e t " I f s D i r s . d e c 0132500 l " \r g e t " S t r e a m s . 0132520 d " \r g e t " I f s R S . d e 0132540 c l " \r g e t " C m d S c a n 0132560 . d e c l " \r \r e x 376 001 \0 i 366 t 0132600 e r n a l \r [ \r / / o u t g o 0132620 i n g p r o c e d u r e s \r E 0132640 x e c C h a n g e G r o u p ; 0132660 E x e c S h o w G r o u p \r \r / 0132700 / i n c o m i n g p r o c e 0132720 d u r e s \r C r e a t e K e y w 0132740 o r d T a b l e ; I n s e r t 0132760 K e y w o r d ; D e s t r o y 0133000 K e y w o r d T a b l e \r G e t 0133020 S t r i n g ; G e t G r o u p 0133040 ; A b o r t C m d ; P r i n 0133060 t S u b F i l e n a m e \r T e l 0133100 n e t C o m m a n d L o o p ; 0133120 T e l n e t S u b c o m m a n d 0133140 P r o m p t ; T e l n e t A b 0133160 o r t i n g ; P l u r a l \r 376 0133200 001 \0 313 201 L o o k u p I F S F i l 0133220 e ; N e x t F D ; D e s t r 0133240 o y F D \r O p e n I F S S t r e 0133260 a m ; K s B u f f e r A d d r 0133300 e s s ; C l o s e I F S S t r 0133320 e a m \r G e t D I F ; U p d a 0133340 t e C a c h e d D I F ; W h e 0133360 e l C a l l \r S y s F r e e ; 0133400 F r e e P o i n t e r ; G e t 0133420 B i t ; S e t B i t \r G e t s 0133440 ; E r r o r s ; W s s ; W 0133460 s ; P u t T e m p l a t e ; 0133500 I F S P r i n t E r r o r \r \r / 0133520 / i n c o m i n g s t a t i 0133540 c s \r C t x R u n n i n g ; d 0133560 s p ; e n a b l e G r a p e v 0133600 i n e G 376 001 \0 273 { r o u p \r ] \r 0133620 \f \r / / - - - - - - - - - - - - 0133640 - - - - - - - - - - - - - - - - * 0133740 \r l e t E x e c C h a n g e G 0133760 r o u p ( c s ) b e \r / / - - 0134000 - - - - - - - - - - - - - - - - * 0134100 - - - - - - - - - - \r / / C h 0134120 a n g e G r o u p - m e m b e 0134140 r s h i p < g r o u p > < s 0134160 u b c o m m a n d s > \r / / S 0134200 u b c o m m a n d 376 001 \0 307 036 s 0134220 a r e : \r / / A d d < u s e 0134240 r > \r / / R e m o v e < u s 0134260 e r > \r [ \r W s s ( c s , " 0134300 ( o f g r o u p ) " ) \r l e 0134320 t g r o u p = G e t G r o 0134340 u p ( c s ) \r i f C t x R u n 0134360 n i n g > > R S C t x . u s e r 0134400 I n f o > > U s e r I n f o . c 0134420 a p a b i l i t i e s . w h e e 0134440 l e q 0 t h e n \r [ 0134460 \r l e t d i f = G e 0134500 t D I F ( 0 , t r u e ) / 0134520 / r e a d m y D I F f r 0134540 o m f i l e s y s t e m \r 0134560 i f d i f e q 0 t h 0134600 e n E r r o r s ( c s , 376 001 0134620 \0 020 / 0 ) \r l e t o w n 0134640 = G e t B i t ( l v d i f 0134660 > > D I F . o w n e d G r o u p 0134700 s , g r o u p ) \r S y s 0134720 F r e e ( d i f ) \r u n l 0134740 e s s o w n d o \r 0134760 A b o r t C m d ( c s , " * 0135000 n Y o u d o n o t h a v e 0135020 a c c e s s t o m a n i p 0135040 u l a t e t h a t g r o u p 0135060 . " ) \r ] \r \r i f e n a 0135100 b l e G r a p e v i n e G r o u 0135120 p t h e n \r [ \r W 0135140 s ( " * n [ C a u t i o n : G 0135160 r a p e v i n e g r o u p - m 0135200 e m b e r s h i p c h e c k i 0135220 n g 376 001 \0 3 035 i s e n a b l 0135240 e d . " ) \r W s ( " * n 0135260 C h a n g e s i n v o l v i n 0135300 g G r a p e v i n e R - N a 0135320 m e s w i l l n o t b e 0135340 p e r m a n e n t . ] " ) \r 0135360 ] \r \r l e t k t = C r e 0135400 a t e K e y w o r d T a b l e ( 0135420 2 ) \r I n s e r t K e y w o r d 0135440 ( k t , " A d d " ) ! 0 = 0135460 t r u e \r I n s e r t K e y w o 0135500 r d ( k t , " R e m o v e " ) 0135520 ! 0 = f a l s e \r T e l n e 0135540 t C o m m a n d L o o p ( k t , 0135560 T e l n e t S u b c o m m a n 0135600 d P r o m p t ( ) , t r u e , 0135620 g r o u p , 376 001 \0 207 l 0 , 0135640 0 , S e t G r o u p ) \r D e s 0135660 t r o y K e y w o r d T a b l e 0135700 ( k t ) \r ] \r \r / / - - - - - - 0135720 - - - - - - - - - - - - - - - - * 0136020 - - - - - - \r a n d S e t G r 0136040 o u p ( c s , e n t r y , g 0136060 r o u p ) b e \r / / - - - - - 0136100 - - - - - - - - - - - - - - - - * 0136200 - - - - - - - \r / / A d d | R 0136220 e m o v e < u s e r > \r 376 001 \0 0136240 265 266 [ \r W s s ( c s , " ( u 0136260 s e r ) " ) \r l e t n a m e 0136300 = G e t S t r i n g ( c s , 0136320 0 , W s s , " d i r e c t 0136340 o r y n a m e " ) \r \r l e t 0136360 d i f = G e t D I F ( n a m 0136400 e , t r u e ) / / a c c 0136420 e p t o n l y r e a l D I 0136440 F s \r i f d i f e q 0 t 0136460 h e n [ S y s F r e e ( n a 0136500 m e ) ; E r r o r s ( c s , 0136520 0 ) ] \r \r S e t B i t ( l v 0136540 d i f > > D I F . u s e r G r o 0136560 u p s , g r o u p , e n t r 0136600 y ! 0 ) \r \r U p d a t e C a c h 0136620 e d D I F ( n a m e , d i f ) 0136640 \r F 376 001 \0 270 201 r e e P o i n t e 0136660 r ( l v n a m e , l v d i 0136700 f ) \r ] \r \f \r / / - - - - - - 0136720 - - - - - - - - - - - - - - - - * 0137020 - - - - - - \r a n d E x e c S 0137040 h o w G r o u p ( c s ) b e \r 0137060 / / - - - - - - - - - - - - - - 0137100 - - - - - - - - - - - - - - - - * 0137160 - - - - - - - - - - - - - - \r / 0137200 / S h o w G r o u p - m e m 0137220 b e r s h i p < g r o u p > \r 0137240 [ \r W s s ( c 376 001 \0 327 006 s , " 0137260 ( o f g r o u p ) " ) \r l 0137300 e t g r o u p = G e t G r 0137320 o u p ( c s ) \r \r i f e n a b 0137340 l e G r a p e v i n e G r o u p 0137360 t h e n \r [ \r W s 0137400 ( " * n [ C a u t i o n : G r 0137420 a p e v i n e g r o u p - m e 0137440 m b e r s h i p c h e c k i n 0137460 g i s e n a b l e d . " ) \r 0137500 W s ( " * n I n f o r m 0137520 a t i o n a b o u t G r a p 0137540 e v i n e R - N a m e s m a 0137560 y n o t b e u p - t o - d 0137600 a t e . ] " ) \r ] \r \r l e 0137620 t n u m U s e r s = 0 \r \r 0137640 l e t f d = L o o 376 001 \0 035 0137660 l k u p I F S F i l e ( " < * * 0137700 > ! 1 " , l c V E x p l i c i 0137720 t + l c M u l t i p l e ) \r i f 0137740 f d n e 0 t h e n \r 0137760 [ \r [ / / r e 0140000 p e a t \r i f T e 0140020 l n e t A b o r t i n g ( ) b 0140040 r e a k \r i f f d 0140060 > > F D . d r > > D R . t y p e 0140100 n e d r T y p e D I F t h 0140120 e n l o o p \r l e 0140140 t s t r e a m = W h e e l 0140160 C a l l ( O p e n I F S S t r e 0140200 a m , f d , 0 , m o d e R 0140220 e a d , w o r d I t e m ) \r 0140240 i f s t r e a m n 0140260 e 376 001 \0 C S 0 t h e n \r 0140300 [ / / D I F 0140320 i s i n t h e s t r e a 0140340 m b u f f e r n o w \r 0140360 i f G e t B i t ( 0140400 l v K s B u f f e r A d d r e 0140420 s s ( s t r e a m ) > > D I F . 0140440 u s e r G r o u p s , g r o u 0140460 p ) t h e n \r 0140500 [ \r 0140520 W s ( ( n u m U s e r s r 0140540 e m 5 e q 0 ? " * n " , 0140560 " , " ) ) \r 0140600 P r i n t S u b F i l e 0140620 n a m e ( d s p , f d , 2 , 0140640 f d > > F D . l e n D i r S t 0140660 r i n g - 1 376 \0 347 033 1 ) \r 0140700 n u m U s e r 0140720 s = n u m U s e r s + 1 \r 0140740 ] \r 0140760 C l o s e I F S S t 0141000 r e a m ( s t r e a m ) \r 0141020 ] \r ] 0141040 r e p e a t w h i l e N e x t 0141060 F D ( f d ) \r \r D e s t r 0141100 o y F D ( f d ) \r ] \r \r P 0141120 u t T e m p l a t e ( d s p , 0141140 " * n $ D u s e r $ S i n 0141160 g r o u p $ D . " , \r n u m 0141200 U s e r s , P l u r a l ( n u 0141220 m U s e r s ) , g r o u p ) \r 0141240 ] \r 377 \0 \0 I f s T e l n e t I n 0141260 i t 1 . b c p l \0 373 225 ) 030 250 \0 \0 0141300 376 001 \0 245 < / / I f s T e l n e 0141320 t I n i t 1 . b c p l - - o 0141340 n c e - o n l y i n i t i a l 0141360 i z a t i o n f o r I F S 0141400 s e r v e r t e l n e t \r / / 0141420 C o p y r i g h t X e r o x 0141440 C o r p o r a t i o n 1 9 7 0141460 9 , 1 9 8 0 \r / / L a s t 0141500 m o d i f i e d A p r i l 1 0141520