$ od -c -N 50000 [_CDCSL_93-16_]<1>Cedar>lib>cpp.c
0000000 / * c p p . c * / \n / * C
0000020 o p y r i g h t ( c ) 1 9 9
0000040 1 X e r o x C o r p o r a t
0000060 i o n . A l l r i g h t s
0000100 r e s e r v e d * / \n / *
0000120 f r o n t e n d p r o c e s
0000140 s o r f o r / l i b / c p p
0000160 * / \n / * c c c - B s t a
0000200 t i c - g - o c p p c p
0000220 p . c * / \n / * i t ' s j
0000240 o b i s t o t e a c h c
0000260 p p a b o u t t i o g a f
0000300 i l e s : * / \n / * \t p a r s
0000320 e s t h e c p p c o m m a
0000340 n d l i n e * / \n / * \t f i
0000360 g u r e s o u t t h e n a
0000400 m e o f t h e f i l e b
0000420 e i n g c o m p i l e d * /
0000440 \n / * \t c r e a t e s a s t
0000460 r i p p e d v e r s i o n o
0000500 f t h e f i l e b e i n g
0000520 c o m p i l e d * / \n / * \t
0000540 p r e p e n d s t h e a p p
0000560 r o p r i a t e # f i l e d
0000600 i r e c t i v e t o t h a t
0000620 f i l e * / \n / * \t i n v o
0000640 k e s / l i b / c p p o n
0000660 t h i s t e m p f i l e *
0000700 / \n / * t h i s " c p p "
0000720 i s n o r m a l l y i n v o
0000740 k e d f r o m c c c * / \n
0000760 \n / * N o t e s : E d u a r
0001000 d o w r o t e a c p p p
0001020 r o g r a m w h i c h s i m
0001040 p l y s t o p p e d s c a n
0001060 n i n g * / \n / * w h e n
0001100 t h e f i r s t n u l l w
0001120 a s e n c o u n t e r e d .
0001140 T h e d o w n s i d e t o
0001160 t h i s a p p r o a c h i s
0001200 * / \n / * i t r e q u i r
0001220 e s u s t o p a t c h c
0001240 p p ' s o n e a c h r e l
0001260 e a s e . T h e o t h e r
0001300 d o w n s i d e i s t h a
0001320 t * / \n / * w e ' v e l o
0001340 s t t h e s o u r c e s o
0001360 f h i s p a t c h e s .
0001400 T h i s i s a r e p l a c
0001420 e m e n t , b u t i t i s
0001440 n ' t * / \n / * a s f u n
0001460 c t i o n a l a s h i s o
0001500 r i g i n a l . I n p a r
0001520 t i c u l a r t h e r e i s
0001540 n ' t a w a y t o s u p
0001560 p o r t * / \n / * t i o g a
0001600 f o r m a t t i n g i n .
0001620 h f i l e s w i t h o u t
0001640 r e i m p l e m e n t i n g c
0001660 p p . * / \n \n # i n c l u d e
0001700 < s t d i o . h > \n # i n c l
0001720 u d e < s t r i n g . h > \n #
0001740 i n c l u d e < s y s / s t d
0001760 t y p e s . h > \n # i n c l u d
0002000 e < s y s / t y p e s . h > \n
0002020 # i n c l u d e < s y s / w a
0002040 i t . h > \n # i n c l u d e "
0002060 / u s r / 5 i n c l u d e / m a
0002100 l l o c . h " \n \n e x t e r n
0002120 v o i d e x i t ( ) ; \n \n s t
0002140 a t i c v o i d e r r o r (
0002160 s ) \n c h a r * s ; \n { \n i f
0002200 ( s ! = N U L L ) ( v o
0002220 i d ) f p r i n t f ( s t d e r
0002240 r , " c e d a r c p p : %
0002260 s \ n " , s ) ; \n e x i t ( -
0002300 1 ) ; \n } \n \n m a i n ( a r g c
0002320 , a r g v ) \n i n t a r g c
0002340 ; \n c h a r * * a r g v ; \n {
0002360 \n u n s i g n e d i , l e n
0002400 , s o u r c e F i l e I n d e
0002420 x = 0 ; \n s i z e _ t t o
0002440 t l e n = 0 ; \n c h a r c
0002460 ; \n c h a r * r e a l c p p
0002500 = " / l i b / c p p " ; \n c h
0002520 a r * a r g = N U L L ,
0002540 * t e m p i n f i l e n a m e
0002560 = N U L L ; \n F I L E * t
0002600 m p i n f p , * c f i l e ; \n
0002620 \n / * p a r s e t h e c o
0002640 m m a n d l i n e * / \n f o
0002660 r ( i = 1 ; i < a r
0002700 g c ; i + + ) { \n a r g =
0002720 a r g v [ i ] ; \n l e n =
0002740 s t r l e n ( a r g ) ; \n t o t
0002760 l e n = l e n + t o t l
0003000 e n ; \n i f ( l e n > 2 )
0003020 { \n i f ( a r g [ l e n - 2
0003040 ] = = ' . ' & & ( a r g
0003060 [ l e n - 1 ] = = ' c ' |
0003100 | a r g [ l e n - 1 ] = =
0003120 ' S ' ) ) { \n / * t w o s
0003140 o u r c e f i l e f i l e s
0003160 ? i g n o r e s e c o n d
0003200 o n e * / \n i f ( s o u r c
0003220 e F i l e I n d e x = = 0 )
0003240 s o u r c e F i l e I n d e x
0003260 = i ; \n } \n } \n } \n i f (
0003300 s o u r c e F i l e I n d e x
0003320 = = 0 ) e r r o r ( " d i d
0003340 n ' t f i n d a s o u r c
0003360 e f i l e t o p r o c e s
0003400 s " ) ; \n \n / * o p e n t h
0003420 e s o u r c e f i l e * /
0003440 \n i f ( ( c f i l e = f o
0003460 p e n ( a r g v [ s o u r c e F
0003500 i l e I n d e x ] , " r " ) )
0003520 = = N U L L ) \n e r r o r
0003540 ( " c o u l d n ' t o p e n
0003560 t h e s o u r c e f i l e "
0003600 ) ; \n \n / * o p e n t h e
0003620 t e m p f i l e * / \n t e m
0003640 p i n f i l e n a m e = t e
0003660 m p n a m ( P _ t m p d i r ,
0003700 " c c p p i " ) ; \n t m p i n f
0003720 p = f o p e n ( t e m p i n
0003740 f i l e n a m e , " w " ) ; \n
0003760 i f ( t m p i n f p = = N
0004000 U L L ) { \n ( v o i d ) f c l
0004020 o s e ( c f i l e ) ; \n e r r o
0004040 r ( " c o u l d n ' t o p e n
0004060 t h e i n t e m p f i l
0004100 e " ) ; \n } ; \n \n / * s t r e
0004120 a m t h e s o u r c e f i
0004140 l e i n t o t h e t e m p
0004160 i n f i l e w i t h m o
0004200 d s * / \n i f ( f p r i n t
0004220 f ( t m p i n f p , " \ # \
0004240 1 \ " % s \ " \ n " , a r g
0004260 v [ s o u r c e F i l e I n d e
0004300 x ] ) = = E O F ) \n e r r o
0004320 r ( " f p r i n t f f a i l e
0004340 d " ) ; \n w h i l e ( ( c =
0004360 g e t c ( c f i l e ) ) ! =
0004400 E O F & & c ! = ' \ 0
0004420 ' ) { \n i f ( c = = '
0004440 \ 0 1 5 ' ) c = ' \ 0 1 2
0004460 ' ; \n i f ( p u t c ( c , t
0004500 m p i n f p ) = = E O F )
0004520 e r r o r ( " f p u t c f a i
0004540 l e d " ) ; \n } \n ( v o i d ) f
0004560 c l o s e ( c f i l e ) ; \n ( v
0004600 o i d ) f c l o s e ( t m p i n
0004620 f p ) ; \n \n / * p r e p e n d
0004640 t h e c o r r e c t # l
0004660 i n e d i r e c t i v e * /
0004700 \n i f ( p r i n t f ( " \ # \
0004720 1 \ " % s \ " \ n " , a r
0004740 g v [ s o u r c e F i l e I n d
0004760 e x ] ) = = E O F ) \n e r
0005000 r o r ( " p r i n t f f a i l
0005020 e d " ) ; \n i f ( f f l u s h
0005040 ( s t d o u t ) = = E O F )
0005060 \n e r r o r ( " f f l u s h
0005100 f a i l e d " ) ; \n \n / * b u
0005120 i l d t h e n e w c o m m
0005140 a n d l i n e * / \n a r g v
0005160 [ s o u r c e F i l e I n d e x
0005200 ] = t e m p i n f i l e n a
0005220 m e ; \n a r g v [ 0 ] = r e
0005240 a l c p p ; \n \n i f ( f o r k
0005260 ( ) = = 0 ) { / * c h i
0005300 l d * / \n / * i n v o k e
0005320 t h e r e a l c p p * / \n
0005340 ( v o i d ) e x e c v p ( r e a
0005360 l c p p , a r g v ) ; \n r e t
0005400 u r n ( - 1 ) ; \n } \n e l s e
0005420 { / * p a r e n t * / \n i
0005440 n t s t a t u s p = 0 ; \n
0005460 / * w a i t f o r t h e
0005500 r e a l c p p t o f i n i
0005520 s h * / \n ( v o i d ) w a i t
0005540 ( & s t a t u s p ) ; \n i f (
0005560 u n l i n k ( t e m p i n f i l
0005600 e n a m e ) = = - 1 ) e r
0005620 r o r ( " u n l i n k f a i l
0005640 e d " ) ; \n f r e e ( ( v o i d
0005660 * ) t e m p i n f i l e n a m
0005700 e ) ; \n r e t u r n ( W E X I T
0005720 S T A T U S ( s t a t u s p ) )
0005740 ; \n } \n \n } \n \n \0 \0 \0 \0 \b \0 \0 \n
0005760 \0 235 312 003 211 \0 \0 002 225 020 N e w l i n
0006000 e D e l i m i t e r 001 \n 226 001 \r "
0006020 c e d a r " s t y l e 231 \0 J 230
0006040 \v J 232 003 234 027 317 n 003 234 \f 230 & J 230 "
0006060 J 230 1 J 232 003 234 032 317 z 004 234 003 230 ! J
0006100 230 5 J 230 ; J 230 ; J 230 ( J 230 - J 230
0006120 \0 J 232 001 234 F 230 F J 230 K J 230 P J 230
0006140 Q J 230 P J 230 > J 230 \0 J 232 003 234 001 236
0006160 \a 234 \n 230 022 J 232 003 234 001 236 \a 234 \v 230 023
0006200 J 232 003 234 001 236 \a 234 021 230 031 J 232 003 234 001
0006220 236 \a 234 016 230 026 J 232 003 234 001 236 \a 234 \r 230
0006240 025 J 232 003 234 001 236 \a 234 031 230 ! J 230 \0 J
0006260 232 006 235 006 234 001 235 004 234 001 236 004 234 003 230 023
0006300 J 230 \0 J 232 006 235 006 234 001 235 004 234 001 236 005
0006320 234 003 230 024 J 232 002 235 004 234 004 230 \b 002 230 001
0006340 J 232 \n 235 002 234 \a 320 k z 004 234 003 235 004 234
0006360 001 236 \a 234 001 236 006 234 030 230 ; J 232 002 236 004
0006400 234 005 230 \t 227 J 230 001 J 230 \0 J 232 002 236 004
0006420 234 \f 230 020 J 232 002 235 003 234 006 230 \t J 232 002
0006440 235 004 234 \b 230 \f 002 230 001 J 232 002 235 \b 234 035
0006460 230 % J 230 022 J 232 002 235 004 234 003 230 \a J 232
0006500 002 235 004 234 027 230 033 J 232 006 235 004 234 \b 237 004
0006520 234 024 237 004 234 002 230 * J 232 002 237 004 234 022 230
0006540 026 J 230 \0 J 232 003 234 025 236 004 234 003 230 034 002
0006560 232 002 235 003 234 031 230 034 J 230 016 J 230 022 J 230
0006600 026 002 232 002 235 002 234 \f 230 016 002 232 002 235 002 234
0006620 B 230 D J 230 . J 232 002 235 002 234 , 230 . J
0006640 230 001 227 J 230 001 227 J 230 001 227 002 232 004 235 002
0006660 234 030 236 005 234 ) 230 H J 230 \0 227 J 230 032 002
0006700 232 006 235 002 234 \v 236 005 234 ! 237 004 234 002 230 9
0006720 J 232 002 236 005 234 " 230 ' J 230 \0 227 J 230 030
0006740 J 230 , J 232 003 234 \n 236 005 234 026 230 % 002 232
0006760 004 235 002 234 \r 237 004 234 003 230 026 J 232 005 234 001
0007000 235 004 234 001 236 006 234 \b 230 024 J 232 002 236 005 234
0007020 # 230 ( J 230 002 227 J 230 \0 J 230 < 002 232 006
0007040 235 002 234 002 236 \a 234 6 317 k 003 234 001 230 E J
0007060 232 002 236 005 234 023 230 030 227 002 232 006 235 005 234 \a
0007100 236 004 234 \f 240 003 234 021 230 0 J 232 002 235 002 234
0007120 032 230 034 J 232 \b 235 002 234 002 236 004 234 020 240 003
0007140 234 002 236 005 234 021 230 3 J 230 001 227 J 232 005 234
0007160 001 235 004 234 001 236 006 234 \b 230 024 J 232 005 234 001
0007200 235 004 234 001 236 006 234 \n 230 026 J 230 \0 J 232 003
0007220 234 031 236 004 234 \r 230 * 002 232 006 235 002 234 002 236
0007240 006 234 - 240 003 234 002 230 < J 232 002 236 005 234 022
0007260 230 027 227 002 232 \b 235 002 234 002 236 006 234 001 236 006
0007300 234 005 240 003 234 002 230 033 J 232 002 236 005 234 022 230
0007320 027 227 J 230 \0 J 232 003 234 031 236 004 234 003 230
0007340 J 230 ' J 230 022 J 230 \0 002 232 002 235 002 234 033
0007360 230 035 J 230 031 J 232 003 234 001 235 004 234 027 230 034
0007400 J 232 002 235 006 234 005 230 \v J 230 001 227 002 232 002
0007420 235 004 234 017 230 023 J 232 002 235 003 234 \r 230 020 J
0007440 232 003 234 \b 235 003 234 032 230 % J 232 003 234 001 235
0007460 004 234 020 230 025 J 232 004 235 002 234 236 005 234 022
0007500 230 9 J 232 004 236 004 234 002 235 004 234 023 230 035 J
0007520 232 004 235 006 234 001 240 \v 234 \v 230 035 J 230 001 J
0007540 230 \0 227 227 J 230 001 J 230 \0 227 \0 205 227 \0 \0
0007560 \0 \0 \v 250 \0 \0 017 9 \0 \0 \n
0007573