$ 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