%!PS-Adobe-1.0 %%Creator: devps (Pipeline Associates, Inc.) %%CreationDate: Mon May 7 15:16:41 2001 %%Pages: (atend) %%DocumentFonts: (atend) /devps 180 dict def devps begin /res 10.000000 def /y_offset 843 def /X{exch}bind def /mm {transform round X round X itransform} bind def /r{rmoveto}bind def /m{moveto}bind def /l{lineto}bind def /rl{rlineto}bind def /st{stroke}bind def /gs{gsave}bind def /gr{grestore}bind def /cp{currentpoint}bind def /np{newpath}bind def /ct{curveto}bind def systemdict /setpacking known { /savepacking currentpacking def true setpacking } if /m0{0 0 moveto}bind def /xc{//res div}bind def /yc{//res neg div //y_offset add}bind def /lc{yc X xc X l st}bind def /mc{yc X xc X m}bind def /el{gs /a X def a div 1 X scale cp np a xc 2 div 0 360 arc st gr}bind def /ar{cp 7 2 roll np xc 5 1 roll atan 3 1 roll atan X arc st}bind def /sp{yc X xc X 6 2 roll yc X xc X 6 2 roll yc X xc X 6 2 roll ct}bind def /V{//res neg div //y_offset add currentpoint pop X m}bind def /H{//res div 0 transform X round X itransform pop currentpoint X pop moveto}bind def /h{//res div 0 r}bind def /v{//res neg div 0 X r}bind def /S{X H show}bind def /A{H //res div 1 index stringwidth pop sub 1 index length div 0 3 2 roll ashow}bind def /psize 10 def /height 0 def /cheight { height 0 ne { height } { psize } ifelse } bind def /slant 0 def /FF{findfont X dup 30 div 0 mm pop setlinewidth /psize X def [psize 0 cheight slant sin slant cos div mul cheight 0 0] makefont setfont}bind def /shade{gs /dy X def /dx X def np m 0 /dy rl /dx 0 rl 0 /dy neg rl /dx neg 0 rl closepath .9 setgray fill gr}bind def 1 setlinecap /resolution res 72 mul def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def /sy y ury lly sub div def sx sy scale cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def }bind def /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto }bind def /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore }bind def /globalstart { fontnum psize slant height resolution currentpoint pagesave restore gsave }bind def /globalend { grestore moveto /resolution exch def /height exch def /slant exch def /psize exch def /fontnum exch def F /pagesave save def }bind def /fontnum 1 def systemdict /setpacking known { savepacking setpacking} if end /BP{ save mark devps begin m0 /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def }bind def /EP{ end cleartomark restore showpage}def /Encoding-1 256 array def 0 1 255 {Encoding-1 exch /.notdef put} for Encoding-1 8#301 StandardEncoding 8#101 26 getinterval putinterval %A-B Encoding-1 8#341 StandardEncoding 8#141 26 getinterval putinterval %a-b Encoding-1 8#241 StandardEncoding 8#301 16 getinterval putinterval %accents Encoding-1 8#373 StandardEncoding 8#365 1 getinterval putinterval %dotlessi Encoding-1 dup 8#41 /copyright put dup 8#42 /registered put dup 8#43 /trademark put dup 8#44 /logicalnot put dup 8#45 /Eth put dup 8#46 /eth put dup 8#47 /Thorn put dup 8#50 /thorn put dup 8#51 /brokenbar put dup 8#52 /degree put dup 8#53 /divide put dup 8#54 /multiply put dup 8#55 /minus put dup 8#56 /onehalf put dup 8#57 /onequarter put dup 8#60 /threequarters put dup 8#101 /Aacute put dup 8#102 /Acircumflex put dup 8#103 /Adieresis put dup 8#104 /Agrave put dup 8#105 /Aring put dup 8#106 /Atilde put dup 8#107 /Ccedilla put dup 8#110 /Eacute put dup 8#111 /Ecircumflex put dup 8#112 /Edieresis put dup 8#113 /Egrave put dup 8#114 /Iacute put dup 8#115 /Icircumflex put dup 8#116 /Idieresis put dup 8#117 /Igrave put dup 8#120 /Ntilde put dup 8#121 /Oacute put dup 8#122 /Ocircumflex put dup 8#123 /Odieresis put dup 8#124 /Ograve put dup 8#125 /Otilde put dup 8#126 /Scaron put dup 8#127 /Uacute put dup 8#130 /Ucircumflex put dup 8#131 /Udieresis put dup 8#132 /Ugrave put dup 8#133 /Ydieresis put dup 8#134 /Zcaron put dup 8#135 /aacute put dup 8#136 /acircumflex put dup 8#137 /adieresis put dup 8#140 /agrave put dup 8#141 /aring put dup 8#142 /atilde put dup 8#143 /ccedilla put dup 8#144 /eacute put dup 8#145 /ecircumflex put dup 8#146 /edieresis put dup 8#147 /egrave put dup 8#150 /iacute put dup 8#151 /icircumflex put dup 8#152 /idieresis put dup 8#153 /igrave put dup 8#154 /ntilde put dup 8#155 /oacute put dup 8#156 /ocircumflex put dup 8#157 /odieresis put dup 8#160 /ograve put dup 8#161 /otilde put dup 8#162 /scaron put dup 8#163 /uacute put dup 8#164 /ucircumflex put dup 8#165 /udieresis put dup 8#166 /ugrave put dup 8#167 /ydieresis put dup 8#170 /zcaron put pop /Enc-dict 30 dict def Enc-dict /tmpstr1 50 string put Enc-dict /tmpstr2 50 string put Enc-dict /tmpstr3 50 string dup (Encoding-) exch cvs pop put /AEnc-def { % arguments: the original font's name, encoding nr Enc-dict begin tmpstr2 cvs /Enc-no exch def % Remember the number in a string dup /OrigName exch def % remember the name findfont dup maxlength dict /newdict exch def % get dictionary for new font { exch dup /FID ne { exch newdict 3 1 roll put } { pop pop } % Ignore FID ifelse } forall newdict begin /Encoding tmpstr3 9 Enc-no putinterval tmpstr3 0 9 Enc-no length add getinterval cvn load def % Replace encoding currentdict /UniqueID known { /UniqueID UniqueID Enc-no cvi 49999 mul add def } if % Derive New UniqueID end % newdict /FNlength OrigName tmpstr1 cvs length def % convert name, remember length FNlength 1 add Enc-no length add string dup 0 OrigName tmpstr1 cvs putinterval dup FNlength (-) putinterval dup FNlength 1 add Enc-no putinterval dup 0 tmpstr1 0 FNlength getinterval putinterval % Add old name cvn dup newdict /FontName 3 2 roll put newdict definefont end % Enc-dict } def /Times-Roman 1 AEnc-def pop /R-1{/Times-Roman-1 FF}def /R{/Times-Roman FF}def /B{/Times-Bold FF}def /I{/Times-Italic FF}def %%EndProlog %%Page: 1 1 BP /slant 0 def /height 0 def 480 V 10 R 720(CONFIGFILE)S 1318(\()S 1360(3)S 1418(\))S 2696(Eighth)S (Edition)296 2989 A 4529(CONFIGFILE)S 5127(\()S 5169(3)S 5227(\))S 960 V 9 R 720(N)S 722(NA)S 790(AM)S 858(ME)S 940(E)S 1080 V 10 R 1080(con\256g\256le,)S 1541(con\256g_read,)S (con\256g_delete,)567 2097 A 2720(con\256g_renewed,)S 3444(con\256g_length,)S 4078(con\256g_issub,)S 4667(con\256g_isatom,)S 1200 V 1080(con\256g_isstring)S 10 R-1 1702(-)S 10 R 1784(generic)S 2106(con\256guration)S 2667(\256le)S 2821(functions)S 1368 V 9 R 720(S)S 722(SY)S 774(YN)S 842(NO)S 910(OP)S 978(PS)S 1030(SI)S 1082(IS)S 1115(S)S 1488 V 10 B 1080(#include)S 1482()S 1728 V 1080(con\256g_t)S 1459(*con\256g_read\(const)S 2308(char)S 2542(*)S 10 I 2592(\256le)S 10 B 2715(,)S 2778(int)S 10 I (\257ags)189 2934 A 10 B 3123(,)S 3186(con\256g_t)S 3565(*)S 10 I 3615(cfg)S 10 B 3738(\))S 1848 V 1080(void)S 1302(con\256g_delete\(con\256g_t)S 2275(*)S 10 I 2325(cfg)S 10 B 2448(\))S 1968 V 1080(int)S 1236(con\256g_renewed\(con\256g_t)S 2321(*)S 10 I 2371(cfg)S 10 B 2494(\))S 2088 V 1080(size_t)S 1359(con\256g_length\(con\256g_t)S 2348(*)S 10 I 2398(cfg)S 10 B 2521(\))S 2208 V 1080(int)S 1236(con\256g_issub\(con\256g_t)S 2174(*)S 10 I 2224(cfg)S 10 B 2347(\))S 2328 V 1080(int)S 1236(con\256g_isatom\(con\256g_t)S 2241(*)S 10 I 2291(cfg)S 10 B 2414(\))S 2448 V 1080(int)S 1236(con\256g_isstring\(con\256g_t)S 2275(*)S 10 I 2325(cfg)S 10 B 2448(\))S 2616 V 9 R 720(D)S 722(DE)S 790(ES)S 848(SC)S 900(CR)S 962(RI)S 1024(IP)S 1057(PT)S 1109(TI)S 1167(IO)S 1200(ON)S 1268(N)S 2736 V 10 R 1080(The)S 10 B 1280(con\256g\256le)S 10 R 1709(routines)S 2076(operate)S 2416(on)S 2559(a)S 2647(generic)S 2987(con\256guration)S 3566(\256le)S 3739(that)S 3934(follows)S 4280(the)S 4447(syntax)S 4753(described)S 5183(in)S 2856 V 10 B 1080(con\256g\256le)S 10 R 1466(\(5\).)S 3024 V 1080(The)S (interface)354 1300 A 1717(presented)S 2166(by)S 2329(the)S 2515(functions)S (above)240 2952 A 3255(uses)S 3491(the)S 3677(following)S 4131(type)S 4368(and)S (de\256nitions)424 4577 A 5065(from)S 3144 V 1080(:)S 3312 V 1440(typedef)S 1767(const)S 2004(struct)S 2253(con\256g)S 2529({)S 3432 V 1613(con\256g_t)S 2180(*next;)S 2639(/*)S 2742(Next)S 2963(con\256guration)S 3524(\256le)S 3678(thing.)S 3934(*/)S 3552 V 1613(con\256g_t)S 2180(*list;)S 2639(/*)S 2742(For)S 2907(a)S 2977({)S 3050(sublist)S 3337(}.)S 3435(*/)S 3672 V 1613(const)S 1850(char)S 2180(*\256le;)S 2639(/*)S 2742(File)S 2924(and)S 3094(line)S 3270(where)S 3542(this)S 3712(is)S (found.)259 3804 A 4088(*/)S 3792 V 1613(unsigned)S 2180(line;)S 3912 V 1613(int)S 2180(\257ags;)S 2639(/*)S 2742(Special)S 3064(\257ags.)S 3304(*/)S 4032 V 1613(char)S 2180(word[];)S 2639(/*)S 2742(Payload.)S 3116(*/)S 4152 V 1440(})S 1513(con\256g_t;)S 4392 V 1440(#de\256ne)S (CFG_CLONG)594 1814 A (0x0001)300 2548 A 3004(/*)S 3107(strtol\(word,)S 3605(&end,)S 3878(0\))S 3987(is)S 4079(valid.)S 4330(*/)S 4512 V 1440(#de\256ne)S (CFG_OLONG)600 1814 A (0x0002)300 2548 A 3004(/*)S 3107(strtol\(word,)S 3605(&end,)S (010\).)209 3878 A 4112(*/)S 4632 V 1440(#de\256ne)S (CFG_DLONG)600 1814 A (0x0004)300 2548 A 3004(/*)S 3107(strtol\(word,)S 3605(&end,)S 3878(10\).)S 4062(*/)S 4752 V 1440(#de\256ne)S (CFG_XLONG)600 1814 A (0x0008)300 2548 A 3004(/*)S 3107(strtol\(word,)S 3605(&end,)S (0x10\).)259 3878 A 4162(*/)S 4872 V 1440(#de\256ne)S (CFG_CULONG)667 1814 A (0x0010)300 2548 A 3004(/*)S 3107(strtoul\(word,)S 3655(&end,)S 3928(0\).)S 4062(*/)S 4992 V 1440(#de\256ne)S (CFG_OULONG)673 1814 A (0x0020)300 2548 A 3004(/*)S 3107(strtoul\(word,)S 3655(&end,)S (010\).)209 3928 A 4162(*/)S 5112 V 1440(#de\256ne)S (CFG_DULONG)673 1814 A (0x0040)300 2548 A 3004(/*)S 3107(strtoul\(word,)S 3655(&end,)S 3928(10\).)S 4112(*/)S 5232 V 1440(#de\256ne)S (CFG_XULONG)673 1814 A (0x0080)300 2548 A 3004(/*)S 3107(strtoul\(word,)S 3655(&end,)S (0x10\).)259 3928 A 4212(*/)S 5352 V 1440(#de\256ne)S 1814(CFG_STRING)S (0x0100)300 2548 A 3004(/*)S 3107(The)S 3289(word)S 3521(is)S 3613(enclosed)S 3990(in)S (quotes.)287 4093 A 4405(*/)S 5472 V 1440(#de\256ne)S 1814(CFG_SUBLIST)S (0x0200)300 2548 A 3004(/*)S 3107(This)S 3311(is)S 3403(a)S 3473(sublist,)S 3785(so)S 3899(no)S 4024(word.)S 4281(*/)S 5592 V 1440(#de\256ne)S 1814(CFG_ESCAPED)S (0x0400)300 2548 A 3004(/*)S 3107(Escapes)S 3457(are)S (still)151 3606 A 3782(marked)S 4109(with)S 4313(\\.)S 4391(*/)S 5760 V 1080(In)S 1198(memory)S 1567(a)S 1646(con\256guration)S 2216(\256le)S 2379(is)S 2481(represented)S 2981(as)S 3100(a)S 3180(list)S 3338(of)S 10 B 3457(con\256g_t)S 10 R 3833(cells)S 4053(linked)S 4339(together)S 4704(with)S 4918(the)S 10 B 5076(next)S 5880 V 10 R 1080(\256eld)S 1291(ending)S 1596(with)S 1806(a)S 1882(null)S 2069(pointer.)S 2435(A)S 2539(sublist)S 2832(between)S (braces)258 3199 A 3488(is)S 3586(attached)S 3953(to)S 4062(a)S 4138(cell)S 4315(at)S 4419(the)S 10 B 4573(list)S 10 R 4733(\256eld.)S 4993(Words)S 6000 V 1080(and)S 1264(strings)S 1571(are)S 1734(put)S 1901(in)S 2018(the)S 10 B 2180(word)S 10 R 2443(\256eld,)S 2686(a)S 2770(null)S 2965(terminated)S 3435(string.)S 3753(The)S 10 B 3949(\257ags)S 10 R 4184(\256eld)S 4403(records)S 4740(the)S 4903(type)S 5116(and)S 6120 V 1080(features)S 1428(of)S 1540(a)S 1613(cell.)S 1837(The)S 10 B 2022(CFG_*LONG)S 10 R 2659(\257ags)S 2877(are)S 3029(set)S 3169(if)S 3259(a)S 3332(word)S 3567(is)S 3662(a)S 3735(number)S (according)397 4069 A 4493(to)S 4598(one)S 4770(of)S 4881(the)S 10 B 5031(strtol)S 6240 V 10 R 1080(or)S 10 B 1193(strtoul)S 10 R 1509(calls.)S 1774(Purely)S 2067(a)S 2142(number,)S 2504(no)S (quotes)262 2634 A 2926(or)S (trailing)291 3040 A 3361(garbage.)S 3760(The)S 10 B 3947(CFG_STRING)S 10 R 4626(\257ag)S 4807(is)S 4904(set)S 5046(if)S 5138(the)S 6360 V 1080(object)S 1352(was)S 1535(enclosed)S 1913(in)S (double)273 2016 A (quotes.)287 2314 A 2651(Lastly)S 10 B 2928(CFG_SUBLIST)S 10 R 3641(tells)S 3834(if)S 3921(the)S 4069(cell)S 4240(is)S 4332(only)S 4535(a)S 4605(pointer)S 4915(to)S 5018(a)S 5088(sub-)S 6480 V 1080(list)S 1228(in)S (braces.)283 1331 A 6648 V 1080(Characters)S 1550(in)S 1666(a)S 1749(word)S 1994(or)S 2116(string)S 2383(may)S 2594(have)S 2822(been)S 3051(formed)S 3381(with)S 3599(the)S 10 B 3761(\\)S 10 R 3828(escape)S 4136(character.)S 4596(They)S 4842(have)S 5071(been)S 6768 V 1080(parsed)S 1384(and)S 1570(expanded,)S 2021(but)S 2190(the)S 2354(\\)S 2423(is)S (still)151 2531 A 2723(present)S 3055(if)S 10 B 3158(CFG_ESCAPED)S 10 R 3933(is)S 4041(set.)S 4244(The)S 10 B 4441(word)S 10 R 4705(array)S 4953(may)S 5166(be)S 6888 V 1080(changed,)S 1465(as)S (long)178 1574 A 1777(as)S 1886(it)S 1967(doesn't)S 2288(grow)S (longer,)282 2520 A 2827(so)S 2941(one)S 3111(may)S 3309(remove)S 3636(the)S 3784(\\s)S 3876(like)S 4052(this:)S 7056 V 1440(if)S 1527(\(cfg->\257ags)S 1996(&)S 2099(CFG_ESCAPED\))S 2853({)S 7176 V 1640(char)S 1839(*p,)S 1989(*q;)S 7296 V 1640(p=)S 1772(q=)S 1904(cfg->word;)S 7416 V 1640(for)S 1783(\(;;\))S 1932({)S 7536 V 1840(if)S 1927(\(\(*q)S 2120(=)S 2202(*p\))S 2361(==)S 2500('\\\\'\))S 2683(*q)S 2808(=)S 2890(*++p;)S 7903 V 720(Page)S 941(1)S 4752(May)S 4961(7,)S (2001)200 5061 A 8143 V EP %%Page: 2 2 BP /slant 0 def /height 0 def 480 V 10 R 720(CONFIGFILE)S 1318(\()S 1360(3)S 1418(\))S 2696(Eighth)S (Edition)296 2989 A 4529(CONFIGFILE)S 5127(\()S 5169(3)S 5227(\))S 960 V 1840(if)S 1927(\(*q)S 2086(==)S 2225(0\))S 2334(break;)S 1080 V 1840(p++;)S 1200 V 1840(q++;)S 1320 V 1640(})S 1440 V 1440(})S 1608 V 1080(The)S 1264(low)S 1442(level)S 1665(syntax)S 1954(of)S 2065(a)S 2137(con\256g)S 2415(\256le)S 2571(is)S 2665(checked)S 3022(when)S 3267(it)S 3350(is)S 3444(read.)S 3695(If)S 3790(an)S 3912(error)S 4137(is)S (encountered)492 4232 A 4752(a)S 4825(message)S 5194(is)S 1728 V 1080(printed)S 1401(and)S 1582(the)S 1741(program)S 2118(exits)S 2344(with)S 2559(exit)S 2746(code)S 2972(1.)S 3108(What)S 3362(the)S 3521(data)S 3725(means)S 4018(is)S 4121(not)S 4285(checked,)S 4676(that)S (should)267 4863 A 5166(be)S 1848 V (done)195 1080 A 1312(by)S 1449(the)S 1609(program)S 1987(using)S 2241(the)S 2402(data.)S 2658(Only)S 2897(the)S 3058(atom)S 10 B 3297(include)S 10 R 3649(at)S 3760(the)S 3921(beginning)S 4360(of)S 4482(a)S 4565(list)S 4726(is)S 4831(special.)S 5199(It)S 1968 V (should)267 1080 A 1388(be)S 1524(followed)S 1923(by)S 2064(a)S 2150(string.)S 2470(The)S 2668(string)S 2938(is)S 3046(seen)S 3266(as)S 3391(the)S 3555(name)S 3814(of)S 3939(a)S 4025(\256le,)S 4220(that)S 4412(is)S 4520(opened,)S 4876(read,)S 5116(and)S 2088 V 1080(inserted)S 1430(in)S (place)213 1539 A 1783(of)S 1898(the)S 10 B 2052(include)S 10 R 2366(.)S 2447(Unless)S 2752(the)S 2907(name)S 3157(of)S 3273(the)S 3428(\256le)S 3589(starts)S 3834(with)S 4045(a)S 10 B 4122(/)S 10 R 4150(,)S 4207(it)S 4295(is)S (sought)267 4394 A 4693(relative)S 5028(to)S 5138(the)S 2208 V 1080(directory)S 1469(the)S 1617(current)S 1928(\256le)S 2082(is)S (found)234 2174 A 2433(in.)S 2586(Nonexistent)S 3097(\256les)S 3290(are)S 3439(treated)S 3739(as)S 3848(being)S 4096(empty.)S 2376 V 1080(The)S 10 B 1262(\256le)S 10 R 1416(and)S 10 B 1586(line)S 10 R 1768(\256elds)S 2011(in)S (each)185 2114 A 2324(cell)S 2495(tell)S 2649(where)S 2921(the)S 3069(cell)S 3240(was)S 3422(read.)S 2544 V 870(F)S 872(Fu)S 930(un)S 982(nc)S 1034(ct)S 1081(ti)S 1111(io)S 1141(on)S 1193(ns)S 1245(s)S 2664 V 1080(A)S 1191(con\256guration)S 1765(\256le)S 1932(is)S 2037(read)S 2249(with)S 10 B 2466(con\256g_read)S 10 R 2969(.)S 3057(The)S 3252(\256rst)S 3447(argument)S 3865(is)S 3970(the)S 4132(\256le)S 4300(to)S 4417(read.)S 4680(The)S (second)279 4876 A 5194(is)S 2784 V 1080(either)S 10 B 1336(0)S 10 R 1412(or)S 10 B 1522(CFG_ESCAPED)S 10 R 2282(to)S 2386(tell)S 2541(whether)S 2892(\\)S 2946(escapes)S (should)267 3279 A 3571(be)S 3691(fully)S 3906(expanded)S (without)307 4316 A 4648(leaving)S 4969(a)S (trace,)222 5039 A 2904 V 1080(or)S 1200(if)S 1298(they)S (should)267 1507 A (still)151 1810 A 1997(be)S 2129(marked)S 2468(with)S 2684(a)S 2766(\\)S 2831(so)S 2957(that)S 3145(the)S 3305(caller)S (knows)262 3567 A 3866(where)S 4150(the)S 4310(excapes)S 4666(are.)S 4877(The)S 5071(third)S 3024 V 1080(argument,)S 10 I 1521(cfg)S 10 R 1652(,)S (should)267 1713 A 2015(be)S 2145(a)S 2225(null)S 2416(pointer)S 2736(on)S 2871(the)S 3029(\256rst)S 3221(call.)S 3452(If)S (you)150 3555 A 3740(want)S 3971(to)S 4084(reread)S 4372(a)S 4452(con\256g)S 4738(\256le)S 4902(that)S 5088(may)S 3144 V 1080(have)S 1295(changed)S 1655(then)S 10 I 1853(cfg)S 10 R (should)267 2001 A 2293(be)S 2413(what)S (you)150 2634 A 2809(previously)S 3258(read.)S 3312 V 1080(With)S 10 B 1307(con\256g_delete)S 10 R 1893(one)S 2065(can)S 2232(free)S 2417(up)S 2544(the)S 2694(memory)S 3056(that)S 3234(has)S 3395(been)S 3612(acquired)S 3986(with)S 10 B 4192(malloc)S 10 R 4477(\(3\))S 4622(to)S 4727(hold)S 4932(the)S 5082(con-)S 3432 V 1080(tents)S 1295(of)S 1404(the)S 1552(con\256guration)S 2113(\256le.)S 3600 V 1080(To)S 1225(determine)S 1661(if)S 1756(the)S 1912(contents)S 2280(of)S 2397(con\256guration)S 2966(\256le)S 3128(has)S 3295(changed)S 3664(when)S 3916(reread)S 4203(one)S 4382(uses)S 10 B 4589(con\256g_renewed)S 3720 V 10 R 1080(after)S 10 B 1298(con\256g_read)S 10 R 1801(.)S 1883(It)S 1976(returns)S 2287(a)S 2363("changed")S 2811(\257ag)S 2993(that)S 3175(is)S 3273(set)S 3416(when)S 3665(the)S 3819(con\256guration)S 4386(\256le)S 4546(changed)S 4912(and)S 5088(then)S 3840 V 1080(clears)S 1345(that)S 1525(\257ag.)S 1755(It)S 1846(returns)S 2155(true)S 2341(on)S 2470(the)S 2622(very)S 2830(\256rst)S 3016(call.)S 3241(For)S 3410(the)S 3562(function)S 3926(to)S 4033(work)S (you)150 4269 A 4448(need)S 4668(to)S 4776(feed)S 4980(the)S 5133(old)S 3960 V 1080(data)S 1273(back)S 1488(into)S 10 B 1669(con\256g_read)S 10 R 2172(,)S 2222(not)S 2375(delete)S 2641(and)S 2811(reread.)S 4128 V 1080(The)S 1264(length)S 1542(of)S 1653(a)S 1725(series)S 1982(of)S 2093(con\256g)S 2371(structures)S 2790(is)S 2884(told)S 3067(by)S 10 B 3194(con\256g_length)S 10 R 3770(.)S 3847(It)S 3936(follows)S 4265(the)S 10 B 4415(next)S 10 R 4627(\256elds,)S 4898(so)S 5015(a)S 5088(sub-)S 4248 V 1080(list)S 1228(between)S (braces)258 1589 A (counts)262 1872 A 2159(as)S 2268(one)S 2438(extra.)S 4416 V 1080(The)S 10 B 1270(con\256g_issub)S 10 R 1795(,)S 10 B 1853(con\256g_isatom)S 10 R 2478(and)S 10 B 2656(con\256g_isstring)S 10 R 3315(functions)S 3723(are)S 3881(just)S 4060(pretty)S 4329(macros)S 4654(to)S 4766(test)S 4940(if)S 5036(a)S 5115(cell)S 4536 V 1080(references)S 1528(a)S 1605(sublist,)S 1924(is)S 2023(a)S 2100(word/string,)S 2621(or)S 2737(is)S 2836(just)S 3013(a)S 3090(string.)S 10 B 3401(CFG_SUBLIST)S 10 R 4121(and)S 10 B 4298(CFG_STRING)S 10 R 4978(tell)S 5138(the)S 4656 V 1080(same)S 1312(story.)S 4824 V 9 R 720(F)S 722(FI)S 774(IL)S 807(LE)S 865(ES)S 923(S)S 4944 V 10 B 1080(*/etc/*.conf)S 10 R 1870(Several)S 2198(\256les)S 2391(in)S 2494(several)S 10 B 2805(etc)S 10 R 2954(directories.)S 5112 V 9 R 720(S)S 722(SE)S 774(EE)S 832(E)S 913(A)S 915(AL)S 983(LS)S 1041(SO)S 1093(O)S 5232 V 10 B 1080(con\256g\256le)S 10 R 1466(\(5\).)S 5400 V 9 R 720(N)S 722(NO)S 790(OT)S 858(TE)S 916(ES)S 974(S)S 5520 V 10 R 1080(The)S 1268(syntax)S 1561(of)S 1676(a)S 1752(con\256g)S 2034(\256le)S 2194(puts)S 2392(some)S 2635(constraints)S 3102(on)S 3233(what)S (you)150 3460 A 3641(\256nd)S 3828(in)S 3937(memory.)S 4353(The)S 4541(top)S 4700(level)S 4927(list)S 5082(con-)S 5640 V 1080(sists)S 1284(entirely)S 1623(of)S 1738(sublist)S 2031(cells.)S 2297(These)S 2569(point)S 2805(to)S 2913(lists)S 3105(that)S 3286(start)S 3490(with)S 3699(at)S 3802(least)S 4017(an)S 4142(atom,)S 4398(followed)S 4786(by)S 4916(a)S 4991(mix)S 5177(of)S 5760 V 1080(atoms)S 1345(and)S 1515(sublist)S 1802(cells.)S 2062(These)S 2328(sublists)S 2654(in)S 2757(turn)S 2944(point)S 3175(to)S 3278(a)S 3348(list)S 3496(of)S 3605(only)S 3808(sublist)S 4095(cells)S 4305(\(recurse)S 4656(now.\))S 5928 V 1080(The)S 1271(struct)S 1529(con\256g)S 1814(shown)S (above)240 2110 A 2384(is)S 2485(not)S 2647(exactly)S 2972(proper)S 3269(C)S 3371(to)S 3484(aid)S (readability,)456 3642 A 4133(read)S 4342()S 4946(itself)S 5183(to)S 6048 V 1080(see)S 1234(why.)S 6216 V 9 R 720(A)S 722(AU)S 790(UT)S 858(TH)S 916(HO)S 984(OR)S 1052(R)S 6336 V 10 R 1080(Kees)S 1307(J.)S 1396(Bot)S 1566(\(kjb@cs.vu.nl\))S 7903 V 720(May)S 929(7,)S (2001)200 1029 A 4990(Page)S 5211(2)S 8143 V EP %%Trailer %%DocumentFonts: Times-Roman Times-Bold Times-Italic %%Pages: 2