$ 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