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