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