$ od -c -N 50000 [Erinyes]<LispManual>FILENAMES.IM!3 0000000 \r { B e g i n S u b S e c F 0000020 i l e N a m e s } \r { T i t l 0000040 e F i l e N a m e s } \r { T 0000060 e x t \r \r \r { i n d e x * P R 0000100 I M A R Y * F i l e n a m e 0000120 s } \r { i n d e x * P R I M A 0000140 R Y * M a n i p u l a t i n g 0000160 f i l e n a m e s } \r \r { n 0000200 o t e S h o u l d h a v e 0000220 a m o r e c o m p l e t e 0000240 e x p l a n a t i o n o f f 0000260 i l e n a m e f o r m a t , 0000300 w i t h e x a m p l e s ! ! 0000320 } \r \r A f i l e n a m e i 0000340 n I n t e r l i s p - D i s 0000360 a s t r i n g o r l i t 0000400 a t o m w h o s e c h a r a 0000420 c t e r s s p e c i f y a 0000440 " p a t h " t o t h e a c 0000460 t u a l f i l e : o n w h 0000500 a t h o s t o r d e v i c 0000520 e t h e f i l e r e s i d 0000540 e s , i n w h i c h d i r 0000560 e c t o r y , a n d s o f 0000600 o r t h . B e c a u s e I 0000620 n t e r l i s p - D s u p p o 0000640 r t s a v a r i e t y o f 0000660 n o n - l o c a l f i l e 0000700 d e v i c e s , p a r t s o 0000720 f t h e p a t h c o u l d 0000740 b e v e r y d e v i c e - 0000760 d e p e n d e n t . H o w e 0001000 v e r , i t i s d e s i r 0001020 a b l e f o r p r o g r a m 0001040 s t o b e a b l e t o 0001060 m a n i p u l a t e f i l e 0001100 n a m e s i n a d e v i c 0001120 e - i n d e p e n d e n t m a 0001140 n n e r . T o t h i s e 0001160 n d , I n t e r l i s p - D 0001200 s p e c i f i e s a u n i f 0001220 o r m f i l e n a m e s y 0001240 n t a x o v e r a l l d e 0001260 v i c e s ; t h e f u n c t 0001300 i o n s t h a t p e r f o r 0001320 m t h e a c t u a l f i l 0001340 e m a n i p u l a t i o n f 0001360 o r a p a r t i c u l a r 0001400 d e v i c e a r e r e s p o 0001420 n s i b l e f o r a n y t 0001440 r a n s l a t i o n t o t h 0001460 a t d e v i c e ' s n a m i 0001500 n g c o n v e n t i o n s . \r 0001520 \r A f i l e n a m e i s 0001540 c o m p o s e d o f a c o 0001560 l l e c t i o n o f { i t 0001600 f i e l d s } , s o m e o f 0001620 w h i c h h a v e s p e c 0001640 i f i c s e m a n t i c i n 0001660 t e r p r e t a t i o n s . 0001700 T h e f u n c t i o n s d e 0001720 s c r i b e d b e l o w r e 0001740 f e r t o e a c h f i e l 0001760 d b y a { i t f i e l d 0002000 n a m e } , a l i t e r a 0002020 l a t o m f r o m a m o n 0002040 g t h e f o l l o w i n g : 0002060 { l i s p H O S T } , { l 0002100 i s p D E V I C E } , { l i 0002120 s p D I R E C T O R Y } , { 0002140 l i s p N A M E } , { l i s 0002160 p E X T E N S I O N } , a n 0002200 d { l i s p V E R S I O N } 0002220 . T h e s t a n d a r d 0002240 s y n t a x f o r a f i l 0002260 e n a m e t h a t c o n t 0002300 a i n s a l l o f t h o s 0002320 e f i e l d s i s { L i s 0002340 p { b r a c k e t H O S T } 0002360 D E V I C E : < D I R E C T O R 0002400 Y > N A M E . E X T E N S I O N 0002420 ; V E R S I O N } . S o m e 0002440 h o s t ' s f i l e s y s 0002460 t e m s d o n o t u s e 0002500 a l l o f t h o s e f i e 0002520 l d s i n t h e i r f i l 0002540 e n a m e s . \r \r { B e g i n 0002560 L a b e l e d L i s t F i l 0002600 e N a m e F i e l d s } \r \r 0002620 { L a b e l { i n d e x H O 0002640 S T ( F i l e n a m e f i 0002660 e l d ) } { l i s p H O S T } 0002700 } \r { T e x t \r S p e c i f i e 0002720 s t h e h o s t w h o s e 0002740 f i l e s y s t e m c o n 0002760 t a i n s t h e f i l e . 0003000 I n t h e c a s e o f 0003020 l o c a l f i l e d e v i c 0003040 e s , t h e " h o s t " i 0003060 s t h e n a m e o f t h 0003100 e d e v i c e , e . g . , 0003120 { l i s p D S K } o r { l 0003140 i s p F L O P P Y } . \r } \r \r 0003160 { L a b e l { i n d e x D E 0003200 V I C E ( F i l e n a m e 0003220 f i e l d ) } { l i s p D E V 0003240 I C E } } \r { T e x t \r S p e c 0003260 i f i e s , f o r t h o s e 0003300 h o s t s t h a t d i v i 0003320 d e t h e i r f i l e s y 0003340 s t e m ' s n a m e s p a c 0003360 e a m o n g m u t i p l e 0003400 p h y s i c a l d e v i c e s 0003420 , t h e d e v i c e o r 0003440 l o g i c a l s t r u c t u r 0003460 e o n w h i c h t h e f 0003500 i l e r e s i d e s . T h 0003520 i s s h o u l d n o t b e 0003540 c o n f u s e d w i t h I 0003560 n t e r l i s p - D ' s a b s 0003600 t r a c t " f i l e d e v i 0003620 c e " , w h i c h d e n o t 0003640 e s e i t h e r a h o s t 0003660 o r a l o c a l p h y s 0003700 i c a l d e v i c e a n d 0003720 i s s p e c i f i e d b y 0003740 t h e { l i s p H O S T } 0003760 f i e l d . \r } \r \r { L a b e l 0004000 { i n d e x D I R E C T O R 0004020 Y ( F i l e n a m e f i e 0004040 l d ) } { l i s p D I R E C T 0004060 O R Y } } \r { T e x t \r S p e c 0004100 i f i e s t h e " d i r e c 0004120 t o r y " c o n t a i n i n g 0004140 t h e f i l e . A d i 0004160 r e c t o r y u s u a l l y 0004200 i s a g r o u p i n g o f 0004220 a p o s s i b l y l a r g 0004240 e s e t o f l o o s e l y 0004260 r e l a t e d f i l e s , 0004300 e . g . , t h e p e r s o n 0004320 a l f i l e s o f a p a 0004340 r t i c u l a r u s e r , o 0004360 r t h e f i l e s b e l o 0004400 n g i n g t o s o m e p r 0004420 o j e c t . T h e { l i s 0004440 p D I R E C T O R Y } f i e 0004460 l d u s u a l l y c o n s i 0004500 s t s o f a p r i n c i p 0004520 a l d i r e c t o r y a n d 0004540 z e r o o r m o r e s u 0004560 b d i r e c t o r i e s t h a 0004600 t t o g e t h e r d e s c r 0004620 i b e a p a t h t h r o u 0004640 g h a f i l e s y s t e m 0004660 ' s h i e r a r c h y . E 0004700 a c h s u b d i r e c t o r y 0004720 n a m e i s s e t o f f 0004740 f r o m t h e p r e v i o 0004760 u s d i r e c t o r y o r 0005000 s u b d i r e c t o r y b y 0005020 t h e c h a r a c t e r " { 0005040 l i s p > } " ; e . g . , 0005060 " { l i s p L I S P > L I B R 0005100 A R Y > N E W } " . \r } \r \r { L 0005120 a b e l { i n d e x N A M E 0005140 ( F i l e n a m e f i e l 0005160 d ) } { l i s p N A M E } } \r 0005200 { T e x t \r T h i s f i e l d 0005220 c a r r i e s n o s p e c 0005240 i f i c m e a n i n g , b u 0005260 t g e n e r a l l y n a m e 0005300 s a s e t o f f i l e s 0005320 t h o u g h t o f a s b 0005340 e i n g d i f f e r e n t r 0005360 e n d i t i o n s o f t h e 0005400 " s a m e " a b s t r a c t 0005420 f i l e . \r } \r \r { L a b e l 0005440 { i n d e x E X T E N S I O 0005460 N ( F i l e n a m e f i e 0005500 l d ) } { l i s p E X T E N S 0005520 I O N } } \r { T e x t \r T h i s 0005540 f i e l d a l s o c a r r 0005560 i e s n o s p e c i f i c 0005600 m e a n i n g , b u t g e n 0005620 e r a l l y d i s t i n g u i 0005640 s h e s t h e f o r m o f 0005660 f i l e s h a v i n g t h 0005700 e s a m e n a m e . M o 0005720 s t f i l e s s y s t e m s 0005740 h a v e s o m e " c o n v 0005760 e n t i o n a l " e x t e n s 0006000 i o n s t h a t d e n o t e 0006020 s o m e t h i n g a b o u t 0006040 t h e c o n t e n t o f 0006060 t h e f i l e . E . g . , 0006100 i n I n t e r l i s p - D , 0006120 t h e e x t e n s i o n { 0006140 l i s p D C O M } s t a n d 0006160 a r d l y d e n o t e s a 0006200 f i l e c o n t a i n i n g 0006220 c o m p i l e d f u n c t i o 0006240 n d e f i n i t i o n s . \r } 0006260 \r \r { L a b e l { i n d e x 0006300 V E R S I O N ( F i l e n a 0006320 m e f i e l d ) } { l i s p 0006340 V E R S I O N } } \r { T e x t \r 0006360 A n u m b e r u s e d t o 0006400 d i s t i n g u i s h t h e 0006420 v e r s i o n s o r " g e 0006440 n e r a t i o n s " o f t h 0006460 e f i l e s h a v i n g a 0006500 c o m m o n n a m e a n d 0006520 e x t e n s i o n . T h e 0006540 v e r s i o n n u m b e r 0006560 i s i n c r e m e n t e d e 0006600 a c h t i m e a n e w f 0006620 i l e b y t h e s a m e 0006640 n a m e i s c r e a t e d . 0006660 \r } \r \r { E n d L a b e l e d 0006700 L i s t F i l e N a m e F 0006720 i e l d s } \r \r \r M o s t f u 0006740 n c t i o n s t h a t t a k 0006760 e a s i n p u t " a d i 0007000 r e c t o r y " a c c e p t 0007020 e i t h e r a d i r e c t o 0007040 r y n a m e ( t h e c o n 0007060 t e n t s o f t h e { l i 0007100 s p D I R E C T O R Y } f i 0007120 e l d o f a f i l e n a 0007140 m e ) o r a " f u l l " 0007160 d i r e c t o r y s p e c i f 0007200 i c a t i o n { e m d a s h } a 0007220 f i l e n a m e f r a g m 0007240 e n t c o n s i s t i n g o 0007260 f o n l y t h e f i e l d 0007300 s { l i s p H O S T } , { 0007320 l i s p D E V I C E } , a n 0007340 d { l i s p D I R E C T O R 0007360 Y } . I n p a r t i c u l 0007400 a r , t h e " c o n n e c t 0007420 e d d i r e c t o r y " ( { 0007440 p a g e R e f F N C N D I R 0007460 } ) c o n s i s t s , i n 0007500 g e n e r a l , o f a l l 0007520 t h r e e f i e l d s . \r \r { 0007540 i n d e x U N I X f i l e 0007560 n a m e s } \r \r F o r c o n v 0007600 e n i e n c e i n d e a l i 0007620 n g w i t h c e r t a i n 0007640 o p e r a t i n g s y s t e m 0007660 s , I n t e r l i s p - D a 0007700 l s o r e c o g n i z e s { 0007720 l i s p [ ] } a n d { l i 0007740 s p ( ) } a s h o s t d 0007760 e l i m i t e r s ( s y n o n 0010000 y m o u s w i t h { l i s p 0010020 { b r a c k e t } } ) , a n 0010040 d { l i s p / } a s a 0010060 d i r e c t o r y d e l i m i 0010100 t e r ( s y n o n y m o u s 0010120 w i t h { l i s p < } a t 0010140 t h e b e g i n n i n g o 0010160 f a d i r e c t o r y s p 0010200 e c i f i c a t i o n a n d 0010220 { l i s p > } t o t e r m 0010240 i n a t e d i r e c t o r y 0010260 o r s u b d i r e c t o r y 0010300 s p e c i f i c a t i o n ) . 0010320 F o r e x a m p l e , a 0010340 f i l e o n a U n i x f 0010360 i l e s e r v e r { l i s p 0010400 U N X } w i t h t h e n 0010420 a m e { l i s p / u s r / f 0010440 o o / b a r / s t u f f . t e d 0010460 i t } , w h o s e { l i s p 0010500 D I R E C T O R Y } f i e l 0010520 d i s t h u s { l i s p 0010540 u s r / f o o / b a r } , c o 0010560 u l d b e s p e c i f i e d 0010600 a s { l i s p { b r a c k 0010620 e t U N X } / u s r / f o o / 0010640 b a r / s t u f f . t e d i t } 0010660 , o r { l i s p ( U N X ) 0010700 < u s r / f o o / b a r > s t u 0010720 f f . t e d i t } , o r s e 0010740 v e r a l o t h e r v a r i 0010760 a t i o n s . N o t e t h 0011000 a t w h e n u s i n g { l 0011020 i s p [ ] } o r { l i s p 0011040 ( ) } a s h o s t d e l 0011060 i m i t e r s , t h e y u s 0011100 u a l l y m u s t b e e s 0011120 c a p e d w i t h t h e r 0011140 e a d e r ' s { l i s p % } 0011160 e s c a p e c h a r a c t e 0011200 r i f t h e f i l e n a 0011220 m e i s e x p r e s s e d 0011240 a s a l i t a t o m r a t 0011260 h e r t h a n a s t r i n 0011300 g . \r \r { i n d e x Q u o t i 0011320 n g f i l e n a m e s } \r { 0011340 T a g Q u o t i n g F i l e N 0011360 a m e s } \r \r D i f f e r e n t 0011400 h o s t s h a v e d i f f 0011420 e r e n t r e q u i r e m e n 0011440 t s r e g a r d i n g w h i 0011460 c h c h a r a c t e r s a r 0011500 e v a l i d i n f i l e 0011520 n a m e s . F r o m I n t 0011540 e r l i s p - D ' s p o i n t 0011560 o f v i e w , a n y c h 0011600 a r a c t e r s a r e v a l 0011620 i d . H o w e v e r , i n 0011640 o r d e r t o b e a b l 0011660 e t o p a r s e a f i l 0011700 e n a m e i n t o i t s 0011720 c o m p o n e n t f i e l d s 0011740 , i t i s n e c e s s a r 0011760 y t h a t t h o s e c h a 0012000 r a c t e r s t h a t a r e 0012020 c o n v e n t i o n a l l y 0012040 u s e d a s f i l e n a m 0012060 e d e l i m i t e r s b e 0012100 q u o t e d w h e n t h e y 0012120 a p p e a r i n s i d e o 0012140 f f i e l d s w h e r e t 0012160 h e r e c o u l d b e a m 0012200 b i g u i t y . T h e f i 0012220 l e n a m e q u o t i n g 0012240 c h a r a c t e r i s " { l 0012260 i s p ' } " ( s i n g l e 0012300 q u o t e ) . T h u s , t 0012320 h e f o l l o w i n g c h a 0012340 r a c t e r s m u s t b e 0012360 q u o t e d w h e n n o t 0012400 u s e d a s d e l i m e t e 0012420 r s : { l i s p : } , { l 0012440 i s p > } , { l i s p ; } 0012460 , { l i s p / } , a n d 0012500 { l i s p ' } i t s e l f . 0012520 T h e c h a r a c t e r 0012540 { l i s p . } ( p e r i o d 0012560 ) n e e d o n l y b e q 0012600 u o t e d i f i t i s t 0012620 o b e c o n s i d e r e d 0012640 a p a r t o f t h e { l 0012660 i s p E X T E N S I O N } f 0012700 i e l d . T h e c h a r a 0012720 c t e r s { l i s p { r b r 0012740 a c k e t } } , { l i s p ] 0012760 } , a n d { l i s p ) } 0013000 n e e d o n l y b e q u o 0013020 t e d i n a f i l e n a 0013040 m e w h e n t h e h o s t 0013060 f i e l d o f t h e n a 0013100 m e i s i n t r o d u c e d 0013120 b y { l i s p { l b r a c 0013140 k e t } } , { l i s p [ } , 0013160 a n d { l i s p ( } , r 0013200 e s p e c t i v e l y . T h 0013220 e c h a r a c t e r s { l i 0013240 s p { l b r a c k e t } } , 0013260 { l i s p [ } , { l i s p 0013300 ( } , a n d { l i s p < } 0013320 n e e d o n l y b e q u 0013340 o t e d i f t h e y a p p 0013360 e a r a s t h e f i r s t 0013400 c h a r a c t e r o f a 0013420 f i l e n a m e f r a g m e 0013440 n t , w h e r e t h e y w 0013460 o u l d o t h e r w i s e b 0013500 e a s s u m e d t o i n t 0013520 r o d u c e t h e { l i s p 0013540 H O S T } o r { l i s p 0013560 D I R E C T O R Y } f i e l d 0013600 s . \r \r T h e f o l l o w i n 0013620 g f u n c t i o n s a r e 0013640 t h e s t a n d a r d w a y 0013660 t o m a n i p u l a t e f 0013700 i l e n a m e s i n I n t 0013720 e r l i s p . T h e i r o 0013740 p e r a t i o n i s p u r e 0013760 l y s y n t a c t i c { e m d 0014000 a s h } t h e y p e r f o r m 0014020 n o f i l e s y s t e m 0014040 o p e r a t i o n s t h e m s 0014060 e l v e s . \r \r { F n D e f { 0014100 F n N a m e U N P A C K F I L 0014120 E N A M E . S T R I N G } { F 0014140 n A r g s F I L E N A M E { 0014160 a n o n a r g } { a n o n a r 0014200 g } { a n o n a r g } } \r { T 0014220 e x t \r P a r s e s { a r g 0014240 F I L E N A M E } , r e t u r 0014260 n i n g a l i s t i n p 0014300 r o p e r t y l i s t f o r 0014320 m a t o f a l t e r n a t i 0014340 n g f i e l d n a m e s a 0014360 n d f i e l d c o n t e n t 0014400 s . T h e f i e l d c o 0014420 n t e n t s a r e r e t u r 0014440 n e d a s s t r i n g s . 0014460 I f { a r g F I L E N A M 0014500 E } i s a s t r e a m , 0014520 i t s f u l l n a m e i s 0014540 u s e d . \r \r O n l y t h o 0014560 s e f i e l d s a c t u a l 0014600 l y p r e s e n t i n { a 0014620 r g F I L E N A M E } a r e 0014640 r e t u r n e d . A f i 0014660 e l d i s c o n s i d e r e 0014700 d p r e s e n t i f i t s 0014720 d e l i m i t i n g p u n c 0014740 t u a t i o n ( i n t h e 0014760 c a s e o f { l i s p E X 0015000 T E N S I O N } a n d { l i 0015020 s p V E R S I O N } , t h e 0015040 p r e c e d i n g p e r i o 0015060 d o r s e m i c o l o n , 0015100 r e s p e c t i v e l y ) i s 0015120 p r e s e n t , e v e n i 0015140 f t h e f i e l d i t s e 0015160 l f i s e m p t y . E m 0015200 p t y f i e l d s a r e d 0015220 e n o t e d b y { l i s p 0015240 " " } ( t h e e m p t y s 0015260 t r i n g ) . \r \r E x a m p l e 0015300 s : \r \r { l i s p c o d e \r ( U 0015320 N P A C K F I L E N A M E . S T 0015340 R I N G " F O O . B A R " ) 0015360 = > \r ( N A M E " F O O 0015400 " E X T E N S I O N " B A R 0015420 " ) } \r \r { l i s p c o d e \r ( 0015440 U N P A C K F I L E N A M E . S 0015460 T R I N G " F O O . ; 2 " ) 0015500 = > \r ( N A M E " F O O 0015520 " E X T E N S I O N " " V 0015540 E R S I O N " 2 " ) } \r \r { l 0015560 i s p c o d e \r ( U N P A C K F 0015600 I L E N A M E . S T R I N G " 0015620 F O O ; " ) = > \r ( N A 0015640 M E " F O O " V E R S I O N 0015660 " " ) } \r \r { l i s p c o d e 0015700 \r ( U N P A C K F I L E N A M E 0015720 . S T R I N G \r " { b r a 0015740 c k e t E R I S } < L I S P > 0015760 C U R R E N T > I M T R A N . D 0016000 C O M ; 2 1 " ) \r = > ( H O 0016020 S T " E R I S " D I R E C T 0016040 O R Y " L I S P > C U R R E N 0016060 T " \r N A M E " I 0016100 M T R A N " E X T E N S I O N 0016120 " D C O M " \r V E 0016140 R S I O N " 2 1 " ) } \r \r } } 0016160 \r \r { F n D e f { F n N a m e 0016200 U N P A C K F I L E N A M E } 0016220 { F n A r g s F I L E { a 0016240 n o n a r g } } \r { T e x t \r O 0016260 l d v e r s i o n o f { f 0016300 n U N P A C K F I L E N A M E 0016320 . S T R I N G } t h a t r e 0016340 t u r n s t h e f i e l d 0016360 v a l u e s a s a t o m s , 0016400 r a t h e r t h a n a s 0016420 s t r i n g s . { f n U N 0016440 P A C K F I L E N A M E . S T R 0016460 I N G } i s n o w c o n s 0016500 i d e r e d t h e " c o r r 0016520 e c t " w a y o f u n p a 0016540 c k i n g f i l e n a m e s 0016560 , b e c a u s e i t d o e 0016600 s n o t l o s e i n f o r 0016620 m a t i o n w h e n t h e 0016640 c o n t e n t s o f a f i 0016660 e l d a r e n u m e r i c . 0016700 F o r e x a m p l e , \r 0016720 \r { l i s p c o d e \r ( U N P A 0016740 C K F I L E N A M E ' S T U F 0016760 F . T X T ) = > \r ( N A 0017000 M E S T U F F E X T E N S I 0017020 O N T X T ) } \r \r b u t \r \r { 0017040 l i s p c o d e \r ( U N P A C K 0017060 F I L E N A M E ' S T U F F . 0017100 0 2 9 ) = > \r ( N A M E 0017120 S T U F F E X T E N S I O N 0017140 2 9 ) } \r \r E x p l i c i t l 0017160 y o m i t t e d f i e l d s 0017200 a r e d e n o t e d b y 0017220 t h e a t o m { l i s p N 0017240 I L } , r a t h e r t h a n 0017260 t h e e m p t y s t r i n 0017300 g . \r } } \r \r \r N o t e : B 0017320 o t h { f n U N P A C K F I 0017340 L E N A M E } a n d { f n 0017360 U N P A C K F I L E N A M E . S 0017400 T R I N G } l e a v e t h e 0017420 t r a i l i n g c o l o n 0017440 o n t h e d e v i c e f i 0017460 e l d , s o t h a t t h e 0017500 T e n e x d e v i c e { l 0017520 i s p N I L : } c a n b e 0017540 d i s t i n g u i s h e d f 0017560 r o m t h e a b s e n c e 0017600 o f a d e v i c e . A l 0017620 t h o u g h { f n U N P A C 0017640 K F I L E N A M E . S T R I N G 0017660 } i s c a p a b l e o f 0017700 m a k i n g t h e d i s t i 0017720 n c t i o n , i t r e t a i 0017740 n s t h i s b e h a v i o r 0017760 f o r b a c k w a r d c o 0020000 m p a t i b i l i t y . T h 0020020 u s , \r \r { l i s p c o d e \r ( 0020040 U N P A C K F I L E N A M E . S 0020060 T R I N G ' { b r a c k e t 0020100 T O A S T } D S K : F O O ) = 0020120 > \r ( H O S T " T O A S 0020140 T " D E V I C E " D S K : " 0020160 N A M E " F O O " ) } \r \r { 0020200 n o t e c u r r e n t l y , 0020220 U N P A C K F I L E N A M E i 0020240 s t h e s a m e o n I n 0020260 t e r l i s p - D a n d - 1 0020300 0 , s o i t w i l l u n 0020320 p a c k ; T , e t c , w i 0020340 t h o u t g i v i n g a n 0020360 e r r o r , e v e n i n s 0020400 y s t e m s w h e r e s u c 0020420 h f i l e s c a n n o t e 0020440 x i s t . b u g o r f e 0020460 a t u r e ? } \r \r \r { F n D e f 0020500 { F n N a m e F I L E N A M 0020520 E F I E L D } { F n A r g s 0020540 F I L E N A M E F I E L D N A 0020560 M E } \r { T e x t \r R e t u r n 0020600 s , a s a n a t o m , t 0020620 h e c o n t e n t s o f t 0020640 h e { a r g F I E L D N A M 0020660 E } f i e l d o f { a r g 0020700 F I L E N A M E } . I f 0020720 { a r g F I L E N A M E } i 0020740 s a s t r e a m , i t s 0020760 f u l l n a m e i s u s e 0021000 d . \r } } \r \r \r { F n D e f { 0021020 F n N a m e P A C K F I L E N 0021040 A M E . S T R I N G } { F n A 0021060 r g s F I E L D { S U B 1 } 0021100 C O N T E N T S { S U B 1 } 0021120 { e l l i p s i s } F I E L 0021140 D { S U B N } C O N T E N T 0021160 S { S U B N } } \r { T y p e 0021200 N O S P R E A D } \r { T e x t \r 0021220 T a k e s a s e q u e n c e 0021240 o f a l t e r n a t i n g 0021260 f i e l d n a m e s a n d 0021300 f i e l d c o n t e n t s ( 0021320 a t o m s o r s t r i n g s 0021340 ) , a n d r e t u r n s t 0021360 h e c o r r e s p o n d i n g 0021400 f i l e n a m e , a s a 0021420 s t r i n g . \r \r I f { f n 0021440 P A C K F I L E N A M E . S T 0021460 R I N G } i s g i v e n a 0021500 s i n g l e a r g u m e n t 0021520 , i t i s i n t e r p r e 0021540 t e d a s a l i s t o f 0021560 a l t e r n a t i n g f i e 0021600 l d n a m e s a n d f i e 0021620 l d c o n t e n t s . T h 0021640 u s { f n P A C K F I L E N 0021660 A M E . S T R I N G } a n d 0021700 { f n U N P A C K F I L E N A 0021720 M E . S T R I N G } o p e r a 0021740 t e a s i n v e r s e s . \r 0021760 \r I f t h e s a m e f i e 0022000 l d n a m e i s g i v e n 0022020 t w i c e , t h e { i t 0022040 f i r s t } o c c u r r e n c 0022060 e i s u s e d . \r \r T h e 0022100 c o n t e n t s o f t h e 0022120 f i e l d n a m e { l i s p 0022140 D I R E C T O R Y } m a y 0022160 b e e i t h e r a d i r e 0022200 c t o r y n a m e o r a 0022220 f u l l d i r e c t o r y s 0022240 p e c i f i c a t i o n a s 0022260 d e s c r i b e d a b o v e . 0022300 \r \r { f n P A C K F I L E N A 0022320 M E . S T R I N G } a l s o 0022340 a c c e p t s t h e " f i e 0022360 l d n a m e " { l i s p B 0022400 O D Y } t o m e a n t h a 0022420 t i t s c o n t e n t s s 0022440 h o u l d i t s e l f b e 0022460 u n p a c k e d a n d s p l 0022500 i c e d i n t o t h e a r 0022520 g u m e n t l i s t a t t 0022540 h a t p o i n t . T h i s 0022560 f e a t u r e , i n c o n 0022600 j u n c t i o n w i t h t h 0022620 e r u l e t h a t f i e l 0022640 d s e a r l y i n t h e 0022660 a r g u m e n t l i s t o v 0022700 e r r i d e l a t e r d u p 0022720 l i c a t e s , i s u s e f 0022740 u l f o r a l t e r i n g 0022760 e x i s t i n g f i l e n a 0023000 m e s . F o r e x a m p l 0023020 e , t o p r o v i d e a 0023040 d e f a u l t f i e l d , p 0023060 l a c e { l i s p B O D Y } 0023100 f i r s t i n t h e a r 0023120 g u m e n t l i s t , t h e 0023140 n t h e d e f a u l t f i 0023160 e l d s . T o o v e r r i 0023200 d e a f i e l d , p l a c 0023220 e t h e n e w f i e l d s 0023240 f i r s t a n d { l i s p 0023260 B O D Y } l a s t . \r \r I f 0023300 t h e v a l u e o f t h 0023320 e { l i s p B O D Y } f i 0023340 e l d i s a s t r e a m , 0023360 i t s f u l l n a m e i 0023400 s u s e d . \r \r E x a m p l e 0023420 s : \r \r { l i s p c o d e \r ( P 0023440 A C K F I L E N A M E . S T R I 0023460 N G ' D I R E C T O R Y " L 0023500 I S P " \r ' N A M E " N 0023520 E T " ) \r = > " 0023540 < L I S P > N E T " } \r \r { l i 0023560 s p c o d e \r ( P A C K F I L E 0023600 N A M E . S T R I N G ' N A M 0023620 E " N E T " \r ' D I R E 0023640 C T O R Y " { b r a c k e t 0023660 D S K } < L I S P F I L E S > " 0023700 ) \r = > " { b r a 0023720 c k e t D S K } < L I S P F I 0023740 L E S > N E T " } \r \r { l i s p 0023760 c o d e \r ( P A C K F I L E N A 0024000 M E . S T R I N G ' D I R E C 0024020 T O R Y " { b r a c k e t D 0024040 S K } " \r ' B O D Y " { 0024060 b r a c k e t T O A S T } < F 0024100 O O > B A R " ) \r = 0024120 > " { b r a c k e t D S K } 0024140 B A R " } \r \r { l i s p c o d e 0024160 \r ( P A C K F I L E N A M E . S 0024200 T R I N G ' D I R E C T O R Y 0024220 " F R E D " \r ' B O D Y 0024240 " { b r a c k e t T O A S T 0024260 } < F O O > B A R " ) \r 0024300 = > " { b r a c k e t T 0024320 O A S T } < F R E D > B A R " } 0024340 \r \r { l i s p c o d e \r ( P A C 0024360 K F I L E N A M E . S T R I N G 0024400 ' B O D Y " { b r a c k e t 0024420 T O A S T } < F O O > B A R " 0024440 \r ' D I R E C T O R Y " 0024460 F R E D " ) \r = > 0024500 " { b r a c k e t T O A S T } 0024520 < F O O > B A R " } \r \r { l i s 0024540 p c o d e \r ( P A C K F I L E N 0024560 A M E . S T R I N G ' V E R S 0024600 I O N N I L \r ' B O D Y 0024620 " { b r a c k e t T O A S T 0024640 } < F O O > B A R . D C O M ; 2 0024660 " ) \r = > " { b r 0024700 a c k e t T O A S T } < F O O 0024720 > B A R . D C O M " } \r \r { l i 0024740 s p c o d e \r ( P A C K F I L E 0024760 N A M E . S T R I N G ' B O D 0025000 Y " { b r a c k e t T O A S 0025020 T } < F O O > B A R . D C O M " 0025040 \r ' V E R S I O N 1 ) \r 0025060 = > " { b r a c k 0025100 e t T O A S T } < F O O > B A 0025120 R . D C O M ; 1 " } \r \r { l i s 0025140 p c o d e \r ( P A C K F I L E N 0025160 A M E . S T R I N G ' B O D Y 0025200 " { b r a c k e t T O A S T 0025220 } < F O O > B A R . D C O M ; " 0025240 \r ' V E R S I O N 1 ) \r 0025260 = > " { b r a c k 0025300 e t T O A S T } < F O O > B A 0025320 R . D C O M ; " } \r \r { l i s p 0025340 c o d e \r ( P A C K F I L E N A 0025360 M E . S T R I N G ' B O D Y 0025400 " B A R . ; 1 " \r ' E X T 0025420 E N S I O N " D C O M " ) \r 0025440 = > " B A R . ; 1 " 0025460 } \r \r { l i s p c o d e \r ( P A 0025500 C K F I L E N A M E . S T R I N 0025520 G ' B O D Y " B A R ; 1 " \r 0025540 ' E X T E N S I O N " D 0025560 C O M " ) \r = > " 0025600 B A R . D C O M ; 1 " } \r \r I n 0025620 t h e l a s t t w o e x 0025640 a m p l e s , n o t e t h a 0025660 t i n o n e c a s e t h 0025700 e e x t e n s i o n i s e 0025720 x p l i c i t l y p r e s e n 0025740 t i n t h e b o d y ( a 0025760 s i n d i c a t e d b y t 0026000 h e p r e c e d i n g p e r 0026020 i o d ) , w h i l e i n t 0026040 h e o t h e r t h e r e i 0026060 s n o i n d i c a t i o n 0026100 o f a n e x t e n s i o n , 0026120 s o t h e d e f a u l t 0026140 i s u s e d . \r } } \r \r \r { F 0026160 n D e f { F n N a m e P A C 0026200 K F I L E N A M E } { F n A r 0026220 g s F I E L D { S U B 1 } 0026240 C O N T E N T S { S U B 1 } 0026260 { e l l i p s i s } F I E L D 0026300 { S U B N } C O N T E N T S 0026320 { S U B N } } \r { T y p e N 0026340 O S P R E A D } \r { T e x t \r T 0026360 h e s a m e a s { f n P 0026400 A C K F I L E N A M E . S T R I 0026420 N G } , e x c e p t t h a t 0026440 i t r e t u r n s t h e 0026460 f i l e n a m e a s a l 0026500 i t a t o m , i n s t e a d 0026520 o f a s t r i n g . \r } } \r 0026540 \r { n o t e d o c u m e n t 0026560 U N I X - s t y l e f i l e 0026600 n a m e s \r \r F r o m I n t e 0026620 r m e z z o r e l e a s e n 0026640 o t e s : \r T h e f o l l o w 0026660 i n g d i r e c t o r y c o 0026700 m m a n d s t o t h e U N 0026720 I X f i l e s e r v e r { 0026740 b r a c k e t U N } a r e 0026760 e q u i v a l e n t : \r \r D I R 0027000 { b r a c k e t U N } < / u 0027020 s e r / j o n e s / > * \r \r D I 0027040 R { b r a c k e t U N } < u 0027060 s e r / j o n e s > * \r \r D I R 0027100 { b r a c k e t U N } / u s 0027120 e r / j o n e s / * \r \r T h e 0027140 f i l e n a m e s p r i n t 0027160 e d w i l l a l l h a v e 0027200 t h e s a m e s t r u c t 0027220 u r e : { b r a c k e t U N 0027240 } < u s e r / j o n e s > x x x 0027260 . \r \r - - - - - \r \r U N P A C K 0027300 F I L E N A M E t r e a t s 0027320 a U N I X f i l e p a t h 0027340 n a m e b e t w e e n s l a 0027360 s h e s a s a d i r e c t 0027400 o r y s p e c i f i c a t i o 0027420 n . F o r e x a m p l e , 0027440 \r \r _ ( U N P A C K F I L E N A 0027460 M E ' / a / r o s i e / r o s 0027500 i e 2 . 4 / E L L I E . M A Y ; 0027520 3 ) \r ( D I R E C T O R Y a / 0027540 r o s i e / r o s i e 2 . 4 N 0027560 A M E E L L I E E X T E N S 0027600 I O N M A Y V E R S I O N 0027620 3 ) . } \r \r \r \r } { E n d S u 0027640 b S e c F i l e N a m e s } 0027660 \r \r \r \r { B e g i n S u b S e 0027700 c I n c o m p l e t e F i l 0027720 e N a m e s } \r { T i t l e 0027740 I n c o m p l e t e F i l e 0027760 N a m e s } \r { T e x t \r \r { i 0030000 n d e x * P R I M A R Y * I 0030020 n c o m p l e t e f i l e n 0030040 a m e s } \r { i n d e x * P R 0030060 I M A R Y * C o n n e c t e d 0030100 d i r e c t o r y } \r { i n d 0030120 e x F i l e n a m e s } \r \r 0030140 I n g e n e r a l , i t i 0030160 s n o t n e c e s s a r y 0030200 t o p a s s a c o m p l e 0030220 t e f i l e n a m e ( o n 0030240 e c o n t a i n i n g a l l 0030260 t h e f i e l d s l i s t 0030300 e d a b o v e ) t o f u n 0030320 c t i o n s t h a t t a k e 0030340 a f i l e n a m e a s 0030360 a r g u m e n t . I n t e r 0030400 l i s p s u p p l i e s s u 0030420 i t a b l e d e f a u l t s 0030440 f o r c e r t a i n f i e l 0030460 d s , a s d e s c r i b e d 0030500 b e l o w . F u n c t i o 0030520 n s t h a t r e t u r n n 0030540 a m e s o f a c t u a l f 0030560 i l e s , h o w e v e r , a 0030600 l w a y s r e t u r n t h e 0030620 f u l l y s p e c i f i e d 0030640 n a m e . \r \r I f t h e v 0030660 e r s i o n f i e l d i s 0030700 o m i t t e d f r o m a f 0030720 i l e n a m e , I n t e r l 0030740 i s p p e r f o r m s v e r 0030760 s i o n r e c o g n i t i o n 0031000 , a s d e s c r i b e d o 0031020 n { P a g e R e f T e r m 0031040 V e r s i o n R e c o g n i t 0031060 i o n o f f i l e s } . \r \r 0031100 I f t h e h o s t , d e v 0031120 i c e a n d / o r d i r e c 0031140 t o r y f i e l d a r e o 0031160 m i t t e d f r o m a f i 0031200 l e n a m e , I n t e r l i 0031220 s p d e f a u l t s t h e m 0031240 w i t h r e s p e c t t o 0031260 t h e c u r r e n t l y c 0031300 o n n e c t e d d i r e c t o 0031320 r y . T h e c o n n e c t 0031340 e d d i r e c t o r y i s 0031360 c h a n g e d b y c a l l i 0031400 n g t h e f u n c t i o n 0031420 { l i s p C N D I R } o r 0031440 u s i n g t h e p r o g r a 0031460 m m e r ' s a s s i s t a n t 0031500 c o m m a n d { l i s p C 0031520 O N N } . \r \r D e f a u l t s 0031540 a r e a d d e d t o t h e 0031560 p a r t i a l l y s p e c i 0031600 f i e d n a m e " l e f t 0031620 t o r i g h t " u n t i l 0031640 a h o s t , d e v i c e o 0031660 r d i r e c t o r y f i e l 0031700 d i s e n c o u n t e r e d 0031720 . T h u s , i f t h e 0031740 c o n n e c t e d d i r e c t 0031760 o r y i s { l i s p { b r 0032000 a c k e t T W E N T Y } P S : 0032020 < F R E D > } , t h e n \r \r { 0032040 l i s p c o d e \r B A R . D C O 0032060 M { r m m e a n s } \r 0032100 { b r a c k e t T W E N T Y } 0032120 P S : < F R E D > B A R . D C O 0032140 M } \r \r { l i s p c o d e \r < G 0032160 R A N O L A > B A R . D C O M 0032200 { r m m e a n s } \r { b 0032220 r a c k e t T W E N T Y } P S 0032240 : < G R A N O L A > B A R . D C 0032260 O M } \r \r { l i s p c o d e \r M 0032300 T A 0 : < G R A N O L A > B A R 0032320 . D C O M { r m m e a n s } 0032340 \r { b r a c k e t T W E 0032360 N T Y } M T A 0 : < G R A N O L 0032400 A > B A R . D C O M } \r \r { l i 0032420 s p c o d e \r { b r a c k e t 0032440 T H I R T Y } < G R A N O L A > 0032460 B A R . D C O M { r m m e a 0032500 n s } \r { b r a c k e t 0032520 T H I R T Y } < G R A N O L A > 0032540 B A R . D C O M } \r \r I n a d 0032560 d i t i o n , i f t h e p 0032600 a r t i a l l y s p e c i f i 0032620 e d n a m e c o n t a i n s 0032640 a s u b d i r e c t o r y , 0032660 b u t n o p r i n c i p a 0032700 l d i r e c t o r y , t h e 0032720 n t h e s u b d i r e c t o 0032740 r y i s a p p e n d e d t 0032760 o t h e c o n n e c t e d 0033000 d i r e c t o r y . F o r 0033020 e x a m p l e , \r \r { l i s p c 0033040 o d e \r I S O > B A R . D C O M 0033060 { r m m e a n s } \r { 0033100 b r a c k e t T W E N T Y } P 0033120 S : < F R E D > I S O > B A R . 0033140 D C O M } \r \r O r , i f t h 0033160 e c o n n e c t e d d i r e 0033200 c t o r y i s t h e U n i 0033220 x d i r e c t o r y { l i s 0033240 p { b r a c k e t U N X } / 0033260 u s r / f r e d / } , t h e n 0033300 { l i s p i s o / b a r . d 0033320 c o m } m e a n s { l i s p 0033340 { b r a c k e t U N X } / u 0033360 s r / f r e d / i s o / b a r . 0033400 d c o m } , b u t { l i s p 0033420 / o t h e r / b a r . d c o m 0033440 } m e a n s { l i s p { b 0033460 r a c k e t U N X } / o t h e 0033500 r / b a r . d c o m } . \r \r \r { 0033520 F n D e f { N a m e C N D I 0033540 R } { A r g s H O S T / D I 0033560 R } \r { T e x t \r C o n n e c t 0033600 s t o t h e d i r e c t o 0033620 r y { a r g H O S T / D I R 0033640 } , w h i c h c a n e i t 0033660 h e r b e a d i r e c t o 0033700 r y n a m e o r a f u l 0033720 l d i r e c t o r y s p e c 0033740 i f i c a t i o n i n c l u d 0033760 i n g h o s t a n d / o r 0034000 d e v i c e . I f t h e 0034020 s p e c i f i c a t i o n i n 0034040 c l u d e s j u s t a h o 0034060 s t , a n d t h e h o s t 0034100 s u p p o r t s d i r e c t 0034120 o r i e s , t h e d i r e c 0034140 t o r y i s d e f a u l t e 0034160 d t o t h e v a l u e o 0034200 f { l i s p ( U S E R N A M 0034220 E ) } ; i f t h e h o s t 0034240 i s o m i t t e d , c o n 0034260 n e c t i o n i s m a d e 0034300 t o a n o t h e r d i r e c 0034320 t o r y o n t h e s a m e 0034340 h o s t a s b e f o r e . 0034360 I f { a r g H O S T / D 0034400 I R } i s { l i s p N I L 0034420 } , c o n n e c t s t o t 0034440 h e v a l u e o f { v a r 0034460 L O G I N H O S T / D I R } . 0034500 \r \r { f n C N D I R } r e t 0034520 u r n s t h e f u l l n a 0034540 m e o f t h e n o w - c o 0034560 n n e c t e d d i r e c t o r 0034600 y . C a u s e s a n e r 0034620 r o r , { i n d e x N o n - 0034640 e x i s t e n t d i r e c t o 0034660 r y E r r o r } { l i s p N 0034700 o n - e x i s t e n t d i r e 0034720 c t o r y } , i f { a r g 0034740 H O S T / D I R } i s n o t 0034760 r e c o g n i z e d a s a 0035000 v a l i d d i r e c t o r y 0035020 . \r \r N o t e t h a t { f n 0035040 C N D I R } d o e s n o t 0035060 n e c e s s a r i l y r e q 0035100 u i r e o r p r o v i d e 0035120 a n y d i r e c t o r y a c 0035140 c e s s p r i v i l e g e s . 0035160 A c c e s s p r i v i l e 0035200 g e s a r e c h e c k e d 0035220 w h e n a f i l e i s o 0035240 p e n e d . \r } } \r \r { D e f 0035260 { T y p e P A C o m } \r { N a 0035300 m e C O N N } \r { A r g s H 0035320 O S T / D I R } \r { N o P a r e 0035340 n s } \r { T e x t \r C o n v e n 0035360 i e n t c o m m a n d f o r 0035400 m o f { f n C N D I R } 0035420 f o r u s e a t t h e e 0035440 x e c u t i v e . C o n n e 0035460 c t s t o { a r g H O S T 0035500 / D I R } , o r t o t h e 0035520 v a l u e o f { v a r L 0035540 O G I N H O S T / D I R } i f 0035560 { a r g H O S T / D I R } 0035600 i s o m i t t e d . T h i 0035620 s c o m m a n d i s u n d 0035640 o a b l e { e m d a s h } u n d 0035660 o i n g i t c a u s e s t 0035700 h e s y s t e m t o c o n 0035720 n e c t t o t h e p r e v 0035740 i o u s l y c o n n e c t e d 0035760 d i r e c t o r y . \r } } \r \r 0036000 \r { V a r D e f { N a m e L 0036020 O G I N H O S T / D I R } \r { T 0036040 e x t \r { l i s p C O N N } 0036060 w i t h n o a r g u m e n t 0036100 c o n n e c t s t o t h e 0036120 v a l u e o f t h e v a 0036140 r i a b l e { v a r L O G I 0036160 N H O S T / D I R } , i n i t 0036200 i a l l y { l i s p { b r a 0036220 c k e t D S K } } , b u t 0036240 u s u a l l y r e s e t i n 0036260 t h e u s e r ' s g r e e 0036300 t i n g f i l e ( { P a g e 0036320 R e f T e r m G r e e t i n 0036340 g } ) . \r } } \r \r \r { F n D e f 0036360 { N a m e D I R E C T O R Y 0036400 N A M E } { A r g s D I R N 0036420 A M E S T R P T R { a n o n 0036440 a r g } } \r { T e x t \r I f { 0036460 a r g D I R N A M E } i s 0036500 { l i s p T } , r e t u r n 0036520 s t h e f u l l s p e c i 0036540 f i c a t i o n o f t h e 0036560 c u r r e n t l y c o n n e c 0036600 t e d d i r e c t o r y . 0036620 I f { a r g D I R N A M E 0036640 } i s { l i s p N I L } , 0036660 r e t u r n s t h e " l o 0036700 g i n " d i r e c t o r y s 0036720 p e c i f i c a t i o n ( t h 0036740 e v a l u e o f { v a r 0036760 L O G I N H O S T / D I R } ) . 0037000 F o r a n y o t h e r 0037020 v a l u e o f { a r g D I 0037040 R N A M E } , r e t u r n s 0037060 a f u l l d i r e c t o r y 0037100 s p e c i f i c a t i o n i 0037120 f { a r g D I R N A M E } 0037140 d e s i g n a t e s a n e x 0037160 i s t i n g d i r e c t o r y 0037200 ( s a t i s f i e s { f n 0037220 D I R E C T O R Y N A M E P } ) 0037240 , o t h e r w i s e { l i s 0037260 p N I L } . \r \r I f { a r g 0037300 S T R P T R } i s { l i s 0037320 p T } , t h e v a l u e 0037340 i s r e t u r n e d a s a 0037360 n a t o m , o t h e r w i s 0037400 e i t i s r e t u r n e d 0037420 a s a s t r i n g . \r \r { 0037440 N o t e S T R P T R o u g h 0037460 t t o b e r e n a m e d , 0037500 s i n c e i t s o n l y 0037520 m e a n i n g n o w a d a y s 0037540 i s " m a k e a t o m " ! 0037560 - - b v m } \r } } \r \r \r { F n 0037600 D e f { N a m e D I R E C T 0037620 O R Y N A M E P } { A r g s 0037640 D I R N A M E H O S T N A M E 0037660 } \r { T e x t \r R e t u r n s 0037700 { l i s p T } i f { a r g 0037720 D I R N A M E } i s r e c 0037740 o g n i z e d a s a v a l 0037760 i d d i r e c t o r y o n 0040000 h o s t { a r g H O S T N A 0040020 M E } , o r o n t h e h 0040040 o s t o f t h e c u r r e 0040060 n t l y c o n n e c t e d d 0040100 i r e c t o r y i f { a r g 0040120 H O S T N A M E } i s { l 0040140 i s p N I L } . { a r g 0040160 D I R N A M E } m a y b e 0040200 e i t h e r a d i r e c t o 0040220 r y n a m e o r a f u l 0040240 l d i r e c t o r y s p e c 0040260 i f i c a t i o n c o n t a i 0040300 n i n g h o s t a n d / o r 0040320 d e v i c e a s w e l l . 0040340 \r \r I f { a r g D I R N A M 0040360 E } i n c l u d e s s u b d 0040400 i r e c t o r i e s , t h i s 0040420 f u n c t i o n m a y o r 0040440 m a y n o t p a s s j u 0040460 d g m e n t o n t h e i r 0040500 v a l i d i t y . S o m e 0040520 h o s t s s u p p o r t " t 0040540 r u e " s u b d i r e c t o r 0040560 i e s , d i s t i n c t e n 0040600 t i t i e s m a n i p u l a b 0040620 l e b y t h e f i l e s 0040640 y s t e m , w h i l e o t h 0040660 e r s o n l y p r o v i d e 0040700 t h e m a s a s y n t a 0040720 c t i c c o n v e n i e n c e 0040740 . \r } } \r \r \r { F n D e f { N 0040760 a m e H O S T N A M E P } { 0041000 A r g s N A M E } \r { T e x t 0041020 \r R e t u r n s { l i s p T 0041040 } i f { a r g N A M E } 0041060 i s r e c o g n i z e d a s 0041100 a v a l i d h o s t o r 0041120 f i l e d e v i c e n a m 0041140 e a t t h e m o m e n t 0041160 { f n H O S T N A M E P } i 0041200 s c a l l e d . \r } } \r \r } { 0041220 E n d S u b S e c I n c o m 0041240 p l e t e F i l e N a m e s 0041260 } \r \r \r \r \r \r { B e g i n S u 0041300 b S e c V e r s i o n R e c 0041320 o g n i t i o n } \r { T i t l e 0041340 V e r s i o n R e c o g n i 0041360 t i o n } \r { T e x t \r \r { i n 0041400 d e x * P R I M A R Y * V e 0041420 r s i o n r e c o g n i t i o 0041440 n o f f i l e s } \r { I n d 0041460 e x * P R I M A R Y * R e c 0041500 o g n i t i o n o f f i l e 0041520 v e r s i o n s } \r \r M o s t 0041540 o f t h e f i l e d e v 0041560 i c e s i n I n t e r l i s 0041600 p s u p p o r t f i l e v 0041620 e r s i o n n u m b e r s . 0041640 T h a t i s , i t i s 0041660 p o s s i b l e t o h a v e 0041700 s e v e r a l f i l e s o 0041720 f t h e e x a c t s a m e 0041740 n a m e , d i f f e r i n g 0041760 o n l y i n t h e i r { 0042000 l i s p V E R S I O N } f i 0042020 e l d , w h i c h i s i n 0042040 c r e m e n t e d f o r e a 0042060 c h n e w " v e r s i o n " 0042100 o f t h e f i l e t h a 0042120 t i s c r e a t e d . W 0042140 h e n a f i l e n a m e 0042160 l a c k i n g a v e r s i o 0042200 n n u m b e r i s p r e s 0042220 e n t e d t o t h e f i l 0042240 e s y s t e m , i t i s 0042260 n e c e s s a r y t o d e t 0042300 e r m i n e w h i c h v e r 0042320 s i o n n u m b e r i s i 0042340 n t e n d e d . T h i s p 0042360 r o c e s s i s k n o w n 0042400 a s { i t v e r s i o n r 0042420 e c o g n i t i o n } . \r \r W h 0042440 e n { f n O P E N S T R E A 0042460 M } o p e n s a f i l e 0042500 f o r i n p u t a n d n o 0042520 v e r s i o n n u m b e r 0042540 i s g i v e n , t h e h i 0042560 g h e s t e x i s t i n g v 0042600 e r s i o n n u m b e r i s 0042620 u s e d . S i m i l a r l 0042640 y , w h e n a f i l e i 0042660 s o p e n e d f o r o u t 0042700 p u t a n d n o v e r s i 0042720 o n n u m b e r i s g i v 0042740 e n , a n e w f i l e i 0042760 s c r e a t e d w i t h a 0043000 v e r s i o n n u m b e r 0043020 o n e h i g h e r t h a n 0043040 t h e h i g h e s t o n e 0043060 c u r r e n t l y i n u s e 0043100 w i t h t h a t f i l e 0043120 n a m e . T h e v e r s i 0043140 o n n u m b e r d e f a u l 0043160 t i n g f o r { f n O P E 0043200 N S T R E A M } c a n b e 0043220 c h a n g e d b y s p e c i 0043240 f y i n g a d i f f e r e n 0043260 t v a l u e f o r i t s 0043300 { a r g R E C O G } a r g u 0043320 m e n t , a s d e s c r i b 0043340 e d u n d e r { f n F U L 0043360 L N A M E } , b e l o w . \r \r 0043400 O t h e r f u n c t i o n s 0043420 t h a t a c c e p t f i l e 0043440 n a m e s a s a r g u m e 0043460 n t s g e n e r a l l y p e 0043500 r f o r m t h e d e f a u l 0043520 t v e r s i o n r e c o g n 0043540 i t i o n , w h i c h i s 0043560 n e w e s t v e r s i o n f 0043600 o r e x i s t i n g f i l e 0043620 s , o r a n e w v e r s 0043640 i o n i f u s i n g t h e 0043660 f i l e n a m e t o c r 0043700 e a t e a n e w f i l e . 0043720 T h e o n e e x c e p t 0043740 i o n i s { f n D E L F I 0043760 L E } , w h i c h d e f a u 0044000 l t s t o t h e o l d e s 0044020 t e x i s t i n g v e r s i 0044040 o n o f t h e f i l e . \r 0044060 \r T h e f u n c t i o n s b 0044100 e l o w c a n b e u s e d 0044120 t o p e r f o r m v e r s 0044140 i o n r e c o g n i t i o n 0044160 w i t h o u t a c t u a l l y 0044200 c a l l i n g { f n O P E 0044220 N S T R E A M } t o o p e n 0044240 t h e f i l e . N o t e 0044260 t h a t t h e s e f u n c 0044300 t i o n s o n l y t e l l 0044320 t h e t r u t h a b o u t 0044340 t h e m o m e n t a t w h 0044360 i c h t h e y a r e c a l 0044400 l e d , a n d t h u s c a 0044420 n n o t i n g e n e r a l 0044440 b e u s e d t o a n t i c 0044460 i p a t e t h e n a m e o 0044500 f t h e f i l e o p e n e 0044520 d b y a c o m p a r a b l 0044540 e { f n O P E N S T R E A M 0044560 } . T h e y a r e s o m 0044600 e t i m e s , h o w e v e r , 0044620 h e l p f u l h i n t s . \r 0044640 \r \r { i n d e x F i l e n a 0044660 m e s } \r { i n d e x F u l l 0044700 f i l e n a m e s } \r \r { F 0044720 n D e f { F n N a m e F U L 0044740 L N A M E } { F n A r g s X 0044760 R E C O G } \r { T e x t \r I f 0045000 { a r g X } i s a n o 0045020 p e n s t r e a m , s i m p 0045040 l y r e t u r n s t h e f 0045060 u l l f i l e n a m e o f 0045100 t h e s t r e a m . O t 0045120 h e r w i s e , i f { a r g 0045140 X } i s a f i l e n a 0045160 m e g i v e n a s a s t 0045200 r i n g o r l i t a t o m , 0045220 p e r f o r m s v e r s i o 0045240 n r e c o g n i t i o n , a 0045260 s f o l l o w s : \r \r I f { 0045300 a r g X } i s r e c o g n 0045320 i z e d i n t h e r e c o 0045340 g n i t i o n m o d e s p e 0045360 c i f i e d b y { a r g R 0045400 E C O G } a s a n a b b r 0045420 e v i a t i o n f o r s o m 0045440 e f i l e , r e t u r n s 0045460 t h e f i l e ' s f u l l 0045500 n a m e , o t h e r w i s e 0045520 { l i s p N I L } . { a r 0045540 g R E C O G } i s o n e 0045560 o f t h e f o l l o w i n g 0045600 : \r \r { B e g i n L a b e l e 0045620 d L i s t R e c o g n i t i o 0045640 n m o d e s } \r \r { L a b e l 0045660 { l i s p O L D } } \r { T e 0045700 x t \r C h o o s e t h e n e 0045720 w e s t e x i s t i n g v e 0045740 r s i o n o f t h e f i l 0045760 e . R e t u r n { L i s p 0046000 N I L } i f n o f i l e 0046020 n a m e d { a r g X } e 0046040 x i s t s . \r } \r \r { L a b e l 0046060 { l i s p O L D E S T } } \r 0046100 { T e x t \r C h o o s e t h e 0046120 o l d e s t e x i s t i n g 0046140 v e r s i o n o f t h e 0046160 f i l e . R e t u r n { L 0046200 i s p N I L } i f n o f 0046220 i l e n a m e d { a r g X 0046240 } e x i s t s . \r } \r \r { L a 0046260 b e l { l i s p N E W } } \r 0046300 { T e x t \r C h o o s e a n 0046320 e w ( n o t y e t e x i s 0046340 t i n g ) v e r s i o n o f 0046360 t h e f i l e . T h a t 0046400 i s , i f v e r s i o n s 0046420 o f { a r g X } a l r e 0046440 a d y e x i s t , t h e n 0046460 c h o o s e a v e r s i o n 0046500 n u m b e r o n e h i g h 0046520 e r t h a n h i g h e s t 0046540 e x i s t i n g v e r s i o n 0046560 ; e l s e c h o o s e v e 0046600 r s i o n 1 . F o r s o 0046620 m e f i l e s y s t e m s , 0046640 { f n F U L L N A M E } r 0046660 e t u r n s { l i s p N I L 0046700 } i f t h e u s e r d o 0046720 e s n o t h a v e t h e 0046740 a c c e s s r i g h t s n e 0046760 c e s s a r y f o r c r e a 0047000 t i n g a n e w f i l e 0047020 n a m e d { a r g X } . \r } 0047040 \r \r { L a b e l { l i s p O 0047060 L D / N E W } } \r { T e x t \r T 0047100 r y { l i s p O L D } , t 0047120 h e n { l i s p N E W } . 0047140 T h a t i s , c h o o s e 0047160 t h e n e w e s t e x i s 0047200 t i n g v e r s i o n o f 0047220 t h e f i l e , i f a n y 0047240 ; e l s e c h o o s e v e 0047260 r s i o n 1 . T h i s u 0047300 s u a l l y o n l y m a k e 0047320 s s e n s e i f y o u a 0047340 r e i n t e n d i n g t o 0047360 o p e n { a r g X } f o r 0047400 a c c e s s { l i s p B O 0047420 T H } . \r } \r \r { E n d L a b 0047440 e l e d L i s t R e c o g n i 0047460 t i o n m o d e s } \r \r \r { a 0047500 r g R E C O G } = { l i s p 0047520 N I L } d e f a u l t s t o 0047540 { l i s p O L D } . F o 0047560 r a l l o t h e r v a l u 0047600 e s o f { a r g R E C O G 0047620 } , g e n e r a t e s a n 0047640 e r r o r { l i s p I L L E 0047660 G A L A R G } . { i n d e x 0047700 I L L E G A L A R G E r r o 0047720 r } \r \r I f { a r g X } 0047740 a l r e a d y c o n t a i n s 0047760 a v e r s i o n n u m b e 0050000 r , t h e { a r g R E C O 0050020 G } a r g u m e n t w i l l 0050040 n e v e r c h a n g e i t 0050060 . I n p a r t i c u l a r 0050100 , { a r g R E C O G } = { l 0050120 i s p N E W } d o e s n o 0050140 t r e q u i r e t h a t t 0050160 h e f i l e a c t u a l l y 0050200 b e n e w . F o r e x 0050220 a m p l e , { l i s p ( F U 0050240 L L N A M E ' F O O . ; 2 ' 0050260 N E W ) } m a y r e t u r n 0050300 { l i s p { b r a c k e t 0050320 E R I S } < L I S P > F O O . ; 0050340 2 } i f t h a t f i l e 0050360 a l r e a d y e x i s t s , 0050400 e v e n t h o u g h { l i s 0050420 p ( F U L L N A M E ' F O O 0050440 ' N E W ) } w o u l d d e 0050460 f a u l t t h e v e r s i o 0050500 n t o a n e w n u m b e 0050520 r , p e r h a p s r e t u r 0050540 n i n g { l i s p { b r a c 0050560 k e t E R I S } < L I S P > F 0050600 O O . ; 5 } . \r } } \r \r \r \r { 0050620 F n D e f { F n N a m e I N 0050640 F I L E P } { F n A r g s F 0050660 I L E } \r { T e x t \r E q u i v 0050700 a l e n t t o { l i s p ( 0050720 F U L L N A M E { a r g F I 0050740 L E } ' O L D ) } . T h a 0050760 t i s , r e t u r n s t h 0051000 e f u l l f i l e n a m e 0051020 o f t h e n e w e s t v 0051040 e r s i o n o f { a r g F 0051060 I L E } i f { a r g F I L 0051100 E } i s r e c o g n i z e d 0051120 a s s p e c i f y i n g t 0051140 h e n a m e o f a n e x 0051160 i s t i n g f i l e t h a t 0051200 c o u l d p o t e n t i a l 0051220 l y b e o p e n e d f o r 0051240 i n p u t , { l i s p N I 0051260 L } o t h e r w i s e . \r } } 0051300 \r \r \r { F n D e f { F n N a m 0051320 e O U T F I L E P } { F n A 0051340 r g s F I L E } \r { T e x t \r 0051360 E q u i v a l e n t t o { l 0051400 i s p ( F U L L N A M E { a 0051420 r g F I L E } ' N E W ) } . 0051440 \r } } \r \r \r \r \r N o t e t h a 0051460 t { f n I N F I L E P } , 0051500 { f n O U T F I L E P } a n 0051520 d { f n F U L L N A M E } 0051540 d o n o t o p e n a n y 0051560 f i l e s ; t h e y a r e 0051600 p u r e p r e d i c a t e s . 0051620 I n g e n e r a l t h e 0051640 y a r e a l s o o n l y 0051660 h i n t s , a s t h e y d 0051700 o n o t n e c e s s a r i l 0051720 y i m p l y t h a t t h e 0051740 c a l l e r h a s a c c e 0051760 s s r i g h t s t o t h e 0052000 f i l e . F o r e x a m 0052020 p l e , { f n I N F I L E P 0052040 } m i g h t r e t u r n n 0052060 o n - { l i s p N I L } , b 0052100 u t { f n O P E N S T R E A 0052120 M } m i g h t f a i l f o 0052140 r t h e s a m e f i l e 0052160 b e c a u s e t h e f i l e 0052200 i s r e a d - p r o t e c t 0052220 e d a g a i n s t t h e u 0052240 s e r , o r t h e f i l e 0052260 h a p p e n s t o b e o 0052300 p e n f o r o u t p u t b 0052320 y a n o t h e r u s e r a 0052340 t t h e t i m e . S i m 0052360 i l a r l y , { f n O U T F 0052400 I L E P } c o u l d r e t u 0052420 r n n o n - { l i s p N I L 0052440 } , b u t { f n O P E N S 0052460 T R E A M } c o u l d f a i 0052500 l w i t h a { i n d e x 0052520 F I L E S Y S T E M R E S O 0052540 U R C E S E X C E E D E D E 0052560 r r o r } { l i s p F I L E 0052600 S Y S T E M R E S O U R C E S 0052620 E X C E E D E D } e r r o r 0052640 . \r \r N o t e a l s o t h a 0052660 t i n a s h a r e d f i 0052700 l e s y s t e m , s u c h 0052720 a s a r e m o t e f i l e 0052740 s e r v e r , i n t e r v e 0052760 n i n g f i l e o p e r a t 0053000 i o n s b y a n o t h e r 0053020 u s e r c o u l d c o n t r 0053040 a d i c t t h e i n f o r m 0053060 a t i o n r e t u r n e d b 0053100 y r e c o g n i t i o n . 0053120 F o r e x a m p l e , a f 0053140 i l e t h a t w a s { f n 0053160 I N F I L E P } m i g h t 0053200 b e d e l e t e d , o r b 0053220 e t w e e n a n { f n O U 0053240 T F I L E P } a n d t h e 0053260 s u b s e q u e n t { f n O 0053300 P E N S T R E A M } , a n o t 0053320 h e r u s e r m i g h t c 0053340 r e a t e a n e w v e r s 0053360 i o n o r d e l e t e t h 0053400 e h i g h e s t v e r s i o 0053420 n , c a u s i n g { f n O 0053440 P E N S T R E A M } t o o p 0053460 e n a d i f f e r e n t v 0053500 e r s i o n o f t h e f i 0053520 l e t h a n t h e o n e 0053540 r e t u r n e d b y { f n 0053560 O U T F I L E P } . I n a 0053600 d d i t i o n , s o m e f i 0053620 l e s e r v e r s d o n o 0053640 t w e l l s u p p o r t r 0053660 e c o g n i t i o n o f f i 0053700 l e s i n o u t p u t c o 0053720 n t e x t . T h u s , i n 0053740 g e n e r a l , t h e " t 0053760 r u t h " a b o u t a f i 0054000 l e c a n o n l y b e o 0054020 b t a i n e d b y a c t u a 0054040 l l y o p e n i n g t h e 0054060 f i l e ; c r e a t o r s o 0054100 f f i l e s s h o u l d r 0054120 e l y o n t h e n a m e 0054140 o f t h e s t r e a m o p 0054160 e n e d b y { f n O P E N 0054200 S T R E A M } , n o t t h e 0054220 v a l u e r e t u r n e d 0054240 f r o m t h e s e r e c o g 0054260 n i t i o n f u n c t i o n s 0054300 . I n p a r t i c u l a r 0054320 , f o r t h e r e a s o n 0054340 s d e s c r i b e d e a r l 0054360 i e r , p r o g r a m m e r s 0054400 a r e d i s c o u r a g e d 0054420 f r o m u s i n g { f n 0054440 O U T F I L E P } o r { l i 0054460 s p ( F U L L N A M E { a r 0054500 g N A M E } ' N E W ) } . 0054520 \r \r \r } { E n d S u b S e c 0054540 V e r s i o n R e c o g n i t 0054560 i o n } \r \r \r { B e g i n S u 0054600 b S e c U s i n g F i l e 0054620 N a m e s I n s t e a d o f 0054640 S t r e a m s } \r { T i t l e 0054660 U s i n g F i l e N a m e 0054700 s I n s t e a d o f S t r 0054720 e a m s } \r { T e x t \r \r { i n 0054740 d e x F i l e n a m e s } \r 0054760 { t a g S t r e a m F i l e N 0055000 a m e s } \r \r I n e a r l i e 0055020 r i m p l e m e n t a t i o n 0055040 s o f I n t e r l i s p , 0055060 f r o m t h e d a y s o f 0055100 I n t e r l i s p - 1 0 o n 0055120 w a r d , t h e " h a n d l 0055140 e " u s e d t o r e f e r 0055160 t o a n o p e n f i l e 0055200 w a s n o t a s t r e a 0055220 m , b u t r a t h e r t h 0055240 e f i l e ' s f u l l n a 0055260 m e , r e p r e s e n t e d 0055300 a s a l i t a t o m . W 0055320 h e n t h e f i l e n a m 0055340 e w a s p a s s e d t o 0055360 a n y I / O f u n c t i o n 0055400 , i t w a s m a p p e d 0055420 t o a s t r e a m b y l 0055440 o o k i n g i t u p i n 0055460 a l i s t o f o p e n f 0055500 i l e s . T h i s s c h e 0055520 m e w a s s o m e t i m e s 0055540 c o n v e n i e n t f o r 0055560 t y p i n g i n f i l e c 0055600 o m m a n d s a t t h e e 0055620 x e c u t i v e , b u t w a 0055640 s v e r y p o o r f o r 0055660 s e r i o u s p r o g r a m m 0055700 i n g i n t w o m a j o r 0055720 w a y s . F i r s t , t 0055740 h e m a p p i n g f r o m 0055760 f i l e n a m e t o s t r 0056000 e a m o n e v e r y i n p 0056020 u t / o u t p u t o p e r a t 0056040 i o n i s i n e f f i c i e 0056060 n t . S e c o n d , a n d 0056100 m o r e i m p o r t a n t l y 0056120 , u s i n g t h e f i l e 0056140 n a m e a s t h e h a n 0056160 d l e o n a n o p e n s 0056200 t r e a m m e a n s t h a t 0056220 i t i s n o t p o s s i 0056240 b l e t o h a v e m o r e 0056260 t h a n o n e s t r e a m 0056300 o p e n o n a g i v e n 0056320 f i l e a t o n c e . \r \r 0056340 A s o f t h i s w r i t i 0056360 n g , I n t e r l i s p - D 0056400 i s i n a t r a n s i t i 0056420 o n p e r i o d , w h e r e 0056440 i t s t i l l s u p p o r 0056460 t s t h e u s e o f l i 0056500 t a t o m f i l e n a m e s 0056520 a s s y n o n y m o u s w 0056540 i t h o p e n s t r e a m s 0056560 , b u t t h i s u s e i 0056600 s n o t r e c o m m e n d e 0056620 d . T h e r e m a i n d e 0056640 r o f t h i s s e c t i o 0056660 n d i s c u s s e s t h i s 0056700 u s a g e o f f i l e n 0056720 a m e s f o r t h e b e n 0056740 e f i t o f t h o s e r e 0056760 a d i n g o l d e r p r o g 0057000 r a m s a n d w i s h i n g 0057020 t o c o n v e r t t h e m 0057040 a s n e c e s s a r y t o 0057060 w o r k p r o p e r l y w 0057100 h e n t h i s c o m p a t i 0057120 b i l i t y f e a t u r e i 0057140 s r e m o v e d . \r \r \r { B e 0057160 g i n S u b S e c F i l e 0057200 N a m e E f f i c i e n c y 0057220 C o n s i d e r a t i o n s } \r 0057240 { T i t l e F i l e N a m e 0057260 E f f i c i e n c y C o n s 0057300 i d e r a t i o n s } \r { T e x 0057320 t \r \r { i n d e x I n c o m p 0057340 l e t e F i l e N a m e s } 0057360 \r \r I t i s p o s s i b l e 0057400 f o r a p r o g r a m t 0057420 o b e s e r i o u s l y i 0057440 n e f f i c i e n t u s i n g 0057460 a f i l e n a m e a s 0057500 a s t r e a m i f t h e 0057520 p r o g r a m i s n o t u 0057540 s i n g t h e f i l e ' s 0057560 f u l l n a m e , t h e n 0057600 a m e r e t u r n e d b y 0057620 { f n O P E N F I L E } ( b 0057640 e l o w ) . A n y t i m e 0057660 t h a t a n i n p u t / o 0057700 u t p u t f u n c t i o n i 0057720 s c a l l e d w i t h a 0057740 f i l e n a m e o t h e r 0057760 t h a n t h e f u l l f i 0060000 l e n a m e , I n t e r l i 0060020 s p m u s t p e r f o r m 0060040 r e c o g n i t i o n o n t 0060060 h e p a r t i a l f i l e 0060100 n a m e i n o r d e r t o 0060120 d e t e r m i n e w h i c h 0060140 o p e n f i l e i s i n 0060160 t e n d e d . T h u s i f 0060200 r e p e a t e d o p e r a t 0060220 i o n s a r e t o b e p 0060240 e r f o r m e d , i t i s 0060260 c o n s i d e r a b l y m o r 0060300 e e f f i c i e n t t o u 0060320 s e t h e f u l l f i l e 0060340 n a m e r e t u r n e d f 0060360 r o m { f n O P E N F I L E 0060400 } t h a n t o r e p e a t 0060420 e d l y u s e t h e p o s 0060440 s i b l y i n c o m p l e t e 0060460 n a m e t h a t w a s u 0060500 s e d t o o p e n t h e 0060520 f i l e . \r \r \r T h e r e i s 0060540 a m o r e s u b t l e p 0060560 r o b l e m w i t h p a r t 0060600 i a l f i l e n a m e s , 0060620 i n t h a t r e c o g n i t 0060640 i o n i s p e r f o r m e d 0060660 o n t h e u s e r ' s e 0060700 n t i r e d i r e c t o r y , 0060720 n o t j u s t t h e o p 0060740 e n f i l e s . I t i s 0060760 p o s s i b l e f o r a 0061000 f i l e n a m e t h a t w 0061020 a s p r e v i o u s l y r e 0061040 c o g n i z e d t o d e n o 0061060 t e o n e f i l e t o s 0061100 u d d e n l y d e n o t e a 0061120 d i f f e r e n t f i l e . 0061140 F o r e x a m p l e , s 0061160 u p p o s e a p r o g r a m 0061200 p e r f o r m s { l i s p 0061220 ( I N F I L E ' F O O ) } , 0061240 o p e n i n g { l i s p F O 0061260 O . ; 1 } , a n d r e a d s 0061300 s e v e r a l e x p r e s s 0061320 i o n s f r o m { l i s p 0061340 F O O } . T h e n t h e 0061360 u s e r i n t e r r u p t s 0061400 t h e p r o g r a m , c r e 0061420 a t e s a { l i s p F O O 0061440 . ; 2 } a n d r e s u m e s 0061460 t h e p r o g r a m ( o r 0061500 a u s e r a t a n o t h 0061520 e r w o r k s t a t i o n c 0061540 r e a t e s a { l i s p F 0061560 O O . ; 2 } ) . N o w a 0061600 c a l l t o { f n R E A D 0061620 } g i v i n g i t { l i s 0061640 p F O O } a s i t s { a 0061660 r g F I L E } a r g u m e n 0061700 t w i l l g e n e r a t e 0061720 a { l i s p F I L E N O T 0061740 O P E N } { i n d e x F I L 0061760 E N O T O P E N E r r o r 0062000 } e r r o r , b e c a u s e 0062020 { l i s p F O O } w i l l 0062040 b e r e c o g n i z e d a 0062060 s { l i s p F O O . ; 2 } . 0062100 \r \r \r } { E n d S u b S e c 0062120 F i l e N a m e E f f i c i 0062140 e n c y C o n s i d e r a t i 0062160 o n s } \r \r \r { B e g i n S u 0062200 b S e c O b s o l e t e F i 0062220 l e O p e n i n g F u n c t 0062240 i o n s } \r { T i t l e O b s 0062260 o l e t e F i l e O p e n i 0062300 n g F u n c t i o n s } \r { T 0062320 e x t \r \r T h e f o l l o w i 0062340 n g f u n c t i o n s a r e 0062360 n o w c o n s i d e r e d 0062400 o b s o l e t e , b u t a r 0062420 e p r o v i d e d f o r b 0062440 a c k w a r d s c o m p a t i 0062460 b i l i t y : \r \r \r { F n D e f 0062500 { F n N a m e O P E N F I L 0062520 E } { F n A r g s F I L E 0062540 A C C E S S R E C O G P A R 0062560 A M E T E R S { a n o n a r g 0062600 } } \r { T e x t \r O p e n s { 0062620 a r g F I L E } w i t h a 0062640 c c e s s r i g h t s a s 0062660 s p e c i f i e d b y { a r 0062700 g A C C E S S } , a n d r 0062720 e c o g n i t i o n m o d e 0062740 { a r g R E C O G } , a n d 0062760 r e t u r n s t h e f u l 0063000 l n a m e o f t h e r e 0063020 s u l t i n g s t r e a m . 0063040 E q u i v a l e n t t o { 0063060 l i s p ( F U L L N A M E ( 0063100 O P E N S T R E A M { a r g 0063120 F I L E } { a r g A C C E S 0063140 S } { a r g R E C O G } { 0063160 a r g P A R A M E T E R S } ) 0063200 ) } . \r \r { n o t e d o w e 0063220 n e e d t o e x p l a i n 0063240 t h e o l d i n t e r p r 0063260 e t a t i o n o f P A R A M 0063300 E T E R S a n d f o l l o w 0063320 i n g a r g ( u s e d t o 0063340 b e B Y T E S I Z E a n d 0063360 P A R A M E T E R S ) ? } \r } 0063400 } \r \r \r { F n D e f { F n N a 0063420 m e I N F I L E } { F n A r 0063440 g s F I L E } \r { T e x t \r O 0063460 p e n s { a r g F I L E } 0063500 f o r i n p u t , a n d s 0063520 e t s i t a s t h e p r 0063540 i m a r y i n p u t s t r e 0063560 a m . E q u i v a l e n t 0063600 t o { l i s p ( I N P U T 0063620 ( O P E N S T R E A M { a r g 0063640 F I L E } ' I N P U T ' O 0063660 L D ) ) } \r } } \r \r \r { F n D e 0063700 f { F n N a m e O U T F I L 0063720 E } { F n A r g s F I L E } 0063740 \r { T e x t \r O p e n s { a r 0063760 g F I L E } f o r o u t p 0064000 u t , a n d s e t s i t 0064020 a s t h e p r i m a r y o 0064040 u t p u t s t r e a m . E 0064060 q u i v a l e n t t o { l i 0064100 s p ( O U T P U T ( O P E N 0064120 S T R E A M { a r g F I L E 0064140 } ' O U T P U T ' N E W ) ) 0064160 } . \r } } \r \r \r { F n D e f { 0064200 F n N a m e I O F I L E } { 0064220 F n A r g s F I L E } \r { T e 0064240 x t \r E q u i v a l e n t t o 0064260 { l i s p ( O P E N F I L E 0064300 { a r g F I L E } ' B O T 0064320 H ' O L D ) } ; o p e n s 0064340 { a r g F I L E } f o r b 0064360 o t h i n p u t a n d o u 0064400 t p u t . D o e s n o t 0064420 a f f e c t t h e p r i m a 0064440 r y i n p u t o r o u t p 0064460 u t s t r e a m . \r } } \r \r \r 0064500 \r } { E n d S u b S e c O b 0064520 s o l e t e F i l e O p e n 0064540 i n g F u n c t i o n s } \r \r 0064560 \r \r { B e g i n S u b S e c 0064600 C o n v e r t i n g O l d P 0064620 r o g r a m s } \r { T i t l e 0064640 C o n v e r t i n g O l d P 0064660 r o g r a m s } \r { T e x t \r \r 0064700 { i n d e x * P R I M A R Y * 0064720 M u l t i p l e s t r e a m 0064740 s t o a f i l e } \r \r A t 0064760 s o m e p o i n t i n t 0065000 h e f u t u r e , t h e I 0065020 n t e r l i s p - D f i l e 0065040 s y s t e m w i l l c h a n 0065060 g e s o t h a t e a c h 0065100 c a l l t o { f n O P E N 0065120 S T R E A M } r e t u r n s 0065140 a d i s t i n c t s t r e a 0065160 m , e v e n i f a s t r 0065200 e a m i s a l r e a d y o 0065220 p e n t o t h e s p e c i 0065240 f i e d f i l e . T h i s 0065260 c h a n g e i s r e q u i 0065300 r e d i n o r d e r t o 0065320 d e a l r a t i o n a l l y 0065340 w i t h f i l e s i n a 0065360 m u l t i p r o c e s s i n g 0065400 e n v i r o n m e n t . \r \r T h 0065420 i s c h a n g e w i l l o 0065440 f n e c e s s i t y p r o d 0065460 u c e t h e f o l l o w i n 0065500 g i n c o m p a t i b i l i t 0065520 i e s : \r \r 1 ) T h e f u 0065540 n c t i o n s { f n O P E N 0065560 F I L E } , { f n I N P U T 0065600 } , a n d { f n O U T P U 0065620 T } w i l l r e t u r n a 0065640 { l i s p S T R E A M } , 0065660 n o t a f u l l f i l e 0065700 n a m e . T o m a k e t 0065720 h i s l e s s c o n f u s i 0065740 n g i n i n t e r a c t i v 0065760 e s i t u a t i o n s , { l 0066000 i s p S T R E A M } s w i l 0066020 l h a v e a p r i n t f 0066040 o r m a t t h a t r e v e a 0066060 l s t h e u n d e r l y i n 0066100 g f i l e ' s a c t u a l 0066120 n a m e , \r \r 2 ) A g r 0066140 e a t e r p e n a l t y w i 0066160 l l e n s u e f o r p a s 0066200 s i n g a s t h e { a r g 0066220 F I L E } a r g u m e n t 0066240 t o i / o o p e r a t i o n 0066260 s a n y t h i n g o t h e r 0066300 t h a n t h e o b j e c t 0066320 r e t u r n e d f r o m { 0066340 f n O P E N F I L E } . P 0066360 a s s i n g t h e f i l e ' 0066400 s n a m e w i l l b e s 0066420 i g n i f i c a n t l y s l o 0066440 w e r t h a n p a s s i n g 0066460 t h e s t r e a m ( e v e 0066500 n w h e n p a s s i n g t 0066520 h e " f u l l " f i l e n 0066540 a m e ) , a n d i n t h e 0066560 c a s e w h e r e t h e r 0066600 e i s m o r e t h a n o 0066620 n e s t r e a m o p e n o 0066640 n t h e f i l e i t m i 0066660 g h t e v e n a c t o n 0066700 t h e w r o n g o n e . \r \r 0066720 3 ) { f n O P E N P } w 0066740 i l l r e t u r n { l i s p 0066760 N I L } w h e n p a s s e 0067000 d t h e n a m e o f a 0067020 f i l e r a t h e r t h a n 0067040 a s t r e a m ( t h e v 0067060 a l u e o f { f n O P E N 0067100 F I L E } o r { f n O P E 0067120 N S T R E A M } ) . \r \r U s e r 0067140 s s h o u l d c o n s i d e 0067160 r t h e f o l l o w i n g 0067200 a d v i c e w h e n w r i t 0067220 i n g n e w p r o g r a m s 0067240 a n d e d i t i n g e x i 0067260 s t i n g p r o g r a m s , 0067300 i n o r d e r t h a t t h 0067320 e y w i l l c o n t i n u e 0067340 t o o p e r a t e w e l l 0067360 w h e n t h i s c h a n g 0067400 e i s m a d e : \r \r B e c a 0067420 u s e o f t h e e f f i c 0067440 i e n c y a n d a m b i g u 0067460 i t y c o n s i d e r a t i o 0067500 n s d e s c r i b e d e a r 0067520 l i e r , u s e r s h a v e 0067540 l o n g b e e n e n c o u 0067560 r a g e d t o u s e o n l 0067600 y f u l l f i l e n a m e 0067620 s a s { a r g F I L E } 0067640 a r g u m e n t s t o i / o 0067660 o p e r a t i o n s . T h 0067700 e " p r o p e r " w a y t 0067720 o h a v e d o n e t h i s 0067740 w a s t o b i n d a v 0067760 a r i a b l e t o t h e v 0070000 a l u e r e t u r n e d f r 0070020 o m { f n O P E N F I L E } 0070040 a n d p a s s t h a t v 0070060 a r i a b l e t o a l l i 0070100 / o o p e r a t i o n s ; s 0070120 u c h c o d e w i l l c o 0070140 n t i n u e t o w o r k . 0070160 A l e s s p r o p e r w 0070200 a y t o o b t a i n t h e 0070220 f u l l f i l e n a m e , 0070240 b u t o n e w h i c h h 0070260 a s t o d a t e n o t i 0070300 n c u r r e d a n y o b v i 0070320 o u s p e n a l t y , i s 0070340 t h a t w h i c h b i n d s 0070360 a v a r i a b l e t o t 0070400 h e r e s u l t o f a n 0070420 { f n I N F I L E P } a n d 0070440 p a s s e s t h a t t o 0070460 { f n O P E N F I L E } a n 0070500 d a l l i / o o p e r a t 0070520 i o n s . T h i s h a s 0070540 w o r k e d b e c a u s e 0070560 { f n I N F I L E P } a n d 0070600 { f n O P E N F I L E } b 0070620 o t h r e t u r n a f u l 0070640 l f i l e n a m e , a n 0070660 i n v a l i d a s s u m p t i 0070700 o n i n t h i s f u t u r 0070720 e w o r l d . S u c h c 0070740 o d e s h o u l d b e c h 0070760 a n g e d t o p a s s a r 0071000 o u n d t h e v a l u e o 0071020 f t h e { f n O P E N F I 0071040 L E } , n o t t h e { f n 0071060 I N F I L E P } . \r \r C o d e 0071100 t h a t c a l l s { f n 0071120 O P E N P } t o t e s t w 0071140 h e t h e r a p o s s i b l 0071160 y i n c o m p l e t e f i l 0071200 e n a m e i s a l r e a d 0071220 y o p e n s h o u l d b e 0071240 r e c o d e d t o p a s s 0071260 t o { f n O P E N P } o 0071300 n l y t h e v a l u e r e 0071320 t u r n e d f r o m { f n 0071340 O P E N F I L E } o r { f n 0071360 O P E N S T R E A M } . \r \r C 0071400 o d e t h a t u s e s o r 0071420 d i n a r y s t r i n g f u 0071440 n c t i o n s t o m a n i p 0071460 u l a t e f i l e n a m e s 0071500 , a n d i n p a r t i c u 0071520 l a r t h e v a l u e r e 0071540 t u r n e d f r o m { f n 0071560 O P E N F I L E } , s h o u l 0071600 d b e c h a n g e d t o 0071620 u s e t h e t h e f u n c 0071640 t i o n s { f n U N P A C K 0071660 F I L E N A M E . S T R I N G } 0071700 a n d { f n P A C K F I L 0071720 E N A M E . S T R I N G } . 0071740 T h o s e f u n c t i o n s 0071760 w o r k b o t h o n f i l 0072000 e n a m e s ( s t r i n g s 0072020 ) a n d s t r e a m s ( c 0072040 o e r c i n g t h e s t r e 0072060 a m t o t h e n a m e o 0072100 f i t s f i l e ) . \r \r \r C 0072120 o d e t h a t t e s t s t 0072140 h e v a l u e o f { f n 0072160 O U T P U T } f o r e q u a 0072200 l i t y t o s o m e k n o 0072220 w n f i l e n a m e o r 0072240 { l i s p T } s h o u l d 0072260 b e e x a m i n e d c a r e 0072300 f u l l y a n d , i f p o 0072320 s s i b l e , r e c o d e d . 0072340 \r \r { n o t e S u r e w o u 0072360 l d b e n i c e i f t h 0072400 e r e w e r e f u n c t i o 0072420 n s I N P U T S T R E A M a 0072440 n d O U T P U T S T R E A M 0072460 - b v m } \r \r T o s e e m o 0072500 r e d i r e c t l y t h e 0072520 e f f e c t s o f p a s s i 0072540 n g a r o u n d { l i s p 0072560 S T R E A M } s i n s t e a d 0072600 o f f i l e n a m e s , 0072620 r e p l a c e y o u r c a l 0072640 l s t o { f n O P E N F I 0072660 L E } w i t h c a l l s t 0072700 o { f n O P E N S T R E A M 0072720 } . { f n O P E N S T R E 0072740 A M } i s c a l l e d i n 0072760 e x a c t l y t h e s a m 0073000 e w a y , b u t r e t u r 0073020 n s a { l i s p S T R E A 0073040 M } . S t r e a m s c a n 0073060 b e p a s s e d t o { f 0073100 n R E A D } , { f n P R I 0073120 N T } , { f n C L O S E F } 0073140 , e t c j u s t a s t h 0073160 e f i l e ' s f u l l n a 0073200 m e c a n b e c u r r e n 0073220 t l y , b u t u s i n g t 0073240 h e m i s m o r e e f f i 0073260 c i e n t . T h e f u n c 0073300 t i o n { f n F U L L N A M 0073320 E } , w h e n a p p l i e d 0073340 t o a s t r e a m , r e 0073360 t u r n s i t s f u l l f 0073400 i l e n a m e . \r \r } { E n d 0073420 S u b S e c C o n v e r t i 0073440 n g O l d P r o g r a m s } 0073460 \r \r \r } { E n d S u b S e c 0073500 U s i n g F i l e N a m e s 0073520 I n s t e a d o f S t r e 0073540 a m s } \r \r \r { B e g i n S u 0073560 b S e c U s i n g F i l e s 0073600 w i t h P r o c e s s e s } 0073620 \r { T i t l e U s i n g F i 0073640 l e s w i t h P r o c e s s 0073660 e s } \r { T e x t \r \r B e c a u 0073700 s e I n t e r l i s p - D d 0073720 o e s n o t y e t s u p p 0073740 o r t m u l t i p l e s t r 0073760 e a m s p e r f i l e , p 0074000 r o b l e m s c a n a r i s 0074020 e i f d i f f e r e n t p 0074040 r o c e s s e s a t t e m p t 0074060 t o a c c e s s t h e s 0074100 a m e f i l e . T h e u 0074120 s e r h a s t o b e c a 0074140 r e f u l n o t t o h a v 0074160 e t w o p r o c e s s e s 0074200 m a n i p u l a t i n g t h e 0074220 s a m e f i l e a t t h 0074240 e s a m e t i m e , s i n 0074260 c e t h e t w o p r o c e 0074300 s s e s w i l l b e s h a 0074320 r i n g a s i n g l e i n 0074340 p u t s t r e a m a n d f 0074360 i l e p o i n t e r . F o 0074400 r e x a m p l e , i t w i 0074420 l l n o t w o r k t o h 0074440 a v e o n e p r o c e s s 0074460 { f n T C O M P L } a f i 0074500 l e w h i l e a n o t h e r 0074520 p r o c e s s i s r u n n 0074540 i n g { f n L I S T F I L E 0074560 S } o n i t . \r \r } { E n d 0074600 S u b S e c U s i n g F i 0074620 l e s w i t h P r o c e s s 0074640 e s } \r \r \r \r \0 \0 \0 \0 \0 004 \0 002 \0 0074660 ? \0 1 ( D E F A U L T F O N T 0074700 1 ( G A C H A 1 0 ) ( G A 0074720 C H A 8 ) ( T E R M I N A L 0074740 8 ) ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 ? 0074760 \0 1 ( D E F A U L T F O N T 1 0075000 ( G A C H A 1 0 ) ( G A C 0075020 H A 8 ) ( T E R M I N A L 0075040 8 ) ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 y 0075060 247 \0 \0 \0 \0 002 \0 \0 y 247 \0 001 z 272 0075076