From owner-freebsd-bugs Wed Mar 27 8:42:23 2002 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 81BDA37B445 for ; Wed, 27 Mar 2002 08:40:01 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.6/8.11.6) id g2RGe1c73974; Wed, 27 Mar 2002 08:40:01 -0800 (PST) (envelope-from gnats) Received: from lion.com.ua (lion.com.ua [213.133.161.130]) by hub.freebsd.org (Postfix) with ESMTP id DE76F37B419 for ; Wed, 27 Mar 2002 08:30:13 -0800 (PST) Received: (from sa@localhost) by lion.com.ua (8.11.6/8.11.6) id g2RGUBh30322; Wed, 27 Mar 2002 18:30:11 +0200 (EET) (envelope-from sa) Message-Id: <200203271630.g2RGUBh30322@lion.com.ua> Date: Wed, 27 Mar 2002 18:30:11 +0200 (EET) From: Andrey Simonenko Reply-To: Andrey Simonenko To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: bin/36374: Patch (against core dumps) and improvemets for apmd(8) Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org >Number: 36374 >Category: bin >Synopsis: Patch (against core dumps) and improvemets for apmd(8) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Mar 27 08:40:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Andrey Simonenko >Release: FreeBSD 4.5-STABLE i386 >Organization: >Environment: FreeBSD 4.5-STABLE i386 >Description: Following patch fixes several bugs (including core dumps) in apmd(8) and adds some new features to it. This is detail description of main changes, number of lines are given relatively to original source files. Utility nl(1) was used for enumeration. -------------------------------------------------------------------------- File /usr/src/sys/i386/include/apm_bios.h 168 Added new macro APM_NPMEV, which means number of power management codes. File /usr/src/sys/i386/apm/apm.h File /usr/src/sys/pc98/apm/apm.h 21 Removed APM_NPMEV macro, now it is placed in apm_bios.h File /usr/src/usr.sbin/apmd/apmd.h 36-51 Theses lines were removed compeletly. This enum {} duplicates PMEV_xxxx macros from the . 95 Added prototype for the new function Syslog(). File /usr/src/usr.sbin/apmd/apmdparse.y 39 Removed variable first_time (apmdlex.l was simplified). Added prototypes for yylex() and yyerror(). 53 Fixed incorrect type -> . 56 Removed toked UNKNOWN (I don't know why it is needed) Added new token ERROR. 67 lineno is initialized here now. 69-72 Now config file can be empty, and empty config file is not a config file with incorrect syntax, as it was before. 81 Don't use abort(), instead use YYABORT to return from yyparse(). 109 Added some cheking for perc > 100, etc. Before it was checked in apmd.c. 110 Don't use abort(), instead use YYABORT to return from yyparse(). 152 Return value from malloc() was not checked. Fixed. 165 Return value from malloc() was not checked. Fixed. 175 Added "| ERROR". 195-198 Removed completely. /usr/src/usr.sbin/apmd/apmdlex.l 38 first_time variable was removed. 40 Start condition TOP was removed, really it is not needed. 41 %option nounput was added (try to compile original apmd(8) with option -Wall) 42-48 Removed completely. 49-91 All s were removed. 85-89 Incorrect work with the return value from malloc(). Fixed. 92 Removed completely. Added ".", to catch every unknown character. 94-98 yyerror() was impruved and fixed: it was able to pass NULL argument to syslog(). /usr/src/usr.sbin/apmd.c * Everything what belong to only this file were marked as static. * Don't use any err/errx/warn/warnx function if we open syslog file. * The -t swicth was added: test config file and output its content. * The -i option was added: number of second between battery state checks (default value were and is now 10 seconds). * All assert() macros were removed. * apmd(8) cought SIGTERM signal, but doesn't terminate itself (proc_signal() and event_loop() functions). Fixed. 60-75 Complitely rewritten in function init_event_list(). Why? Because PMEV_* in are macros and not enum {}. 88 Return value from malloc() was not checked. Fixed. 130 Return value from event_cmd_default_clone() was not checked. Fixed. 137 Don't use err() -> syslog(), return NULL. 155-165 Why to use out lable? Fixed. 183 Don't use err() -> syslog(), return NULL. 212-215 Now these are checked in apmdparse.y, where they should be checked. 220 Don't use err() -> syslog(), return NULL. 228 Return value from clone_event_cmd_list() was not checked. Fixed. 249 Don't use err() -> syslog(), return NULL. 312-321 Completely was removed. Instead new function turn_events() is introduced. 324-254 Don't use stderr, use stdout instead. 366-367 Removed completely. See turn_events() function. ú77-381 Incorrect loop, which cause core dump, when apm_battery {} is used. Fixed. 387-390 Rewritten. Now turn_events() function is used and dump_config() function is not called. 398-402 Rewritten. More checks were added. 407-413 signal_fd[] and enque_signal() were removed, see below New signal hadlers for SIGCHLD, SIGHUP and SIGTERM (and SIGINT) were added. 421-448 proc_signal() was simplified. Don't call read(), instead check three volatile sig_atomic_t variables. 449-463 proc_apmevent() function was improved. More checkes were added 477 Don't use err(). 491 Don't use err(). 515-519 Improved. 529-533 Don't use signal_fd[] any more. Simplified. 537 Why SA_RESTART. Unclear for me, nevertheless I changed this. 545 Setup SIGINT handler if needed. 554 Not clear arguments in select() call. Fixed. 563-566 Rewriten, because signal_fd[] was removed. 576-619 Added two new switch -t and -i. daemon() function isn't called here, instead new bg_init() function is used: all descriptors are clos()ed, SIGTTOU, SIGTTIN and SIGTSTP are ignored stdin, stdout and sterr -> /dev/null in daemon(0, 1) call fcntl() functions set close-on-exec flags for apmnorm_fd and apmctl_fd And all code here is more clear now. File /usr/src/usr.sbin/apmd/apmd.8 * Some minor fixes (see SYNOPSIS) * Added information about two new switches -t and -i File /usr/src/usr.sbin/apmd/Makefile 13 Removed switch -n. apmd(8) knows nothing about it. Fixed name of the configuration file. -------------------------------------------------------------------------- Results: many bugs were fixed in apmd(8) and two new features were implemeted. Unfortunately I don't have any opportunity to check apmd(8) for correct work with APM. So, I can't tell anything about this. And please check it with APM. This patch also fixes problems described in following PRs (all of this PRs includes correct patches): bin/30639 bin/30640 i386/32251 (this PR also introduced new feature, which is not a part of my patch) i386/35182 (this PR also introduced some signal(SIG_DFL) calls, I'm not sure that this is needed) Comments? >How-To-Repeat: >Fix: begin 644 apmd-patch.tar.gz M'XL("-WZG#P``V%P;60M<&%T8V@N=&%R`.0\:U?;2);]5?R*:F?"V%@VEK&! MF"9I$MP)LXG#`NG'3OKX"%O&FMB2D&0(WY9#$+E7= MNN]7E6('RVDKL./)O#UUP^UO_HH?T>OL]?OB&R&LO7X'_Q6BV^-_^:/=SJ[,*W;[?>_$?V_!)OP_@=!_]L?.RC_] M^B?N874ZN[U>A?RM3K_;MY3\>QUX(*S>3G_G&]'Y$W&H_/E_+O^I.YN)5K@: MB>U5%&Y'X03_;4>7KD?*L/W._N3,W(4C,M\V6JW60RN,GYRI.`I"T>V#10\Z MSP;6ONAV.M9&L]G,@C/.[5B\`SET=T37&O1V![`&IG8WOO]>M*Q=_O MO]\0K]X.CT8_G+P=GA^*N[:_BH-5O"$V1.Q$\6"C9;0)#=&"WYEPX@E];4]\ M#PCU-IK9Y]N9"0BF[7J3Q6KJB.\NHVD["/VK]O+3\XT'&45`]H7V>1V3>(9Q M,5^)H]65L':%U1_T^X.=/(OD1.0E,:@#OX..->COI@SJ[IM[HDE_(X/:'VMD M6M_7GS3D.\/#]NB-WM[O[VLV<\\V]R>""JL#1OA-7>:W?;)!-K MN[._K>,;KL3P#8FBG3VD"/Y^QA3!L_-?1N]/ST_.X=MHB6L"\<-" M3&%#_C03I)C-Y.M1F!UQ<<3U8B>\L1?):)R`NN%]CH?GK\Y.3B].WH]H*U#A MY920VNN@'NYU3.\&*-Y`48D$#GW2K#9>U/!-B;<.,)'L>/% M;:"'UP#7?G3"2S]RQ-*?.OA@N'BDM4PT%9\\:"T3XYWOL;7L0"09['3@M\Q: M)CEWTNT-NL]2:]D!`>Z`.![P0&QO"<^/Q0)$(+:VP;VTGB3NQ8XB)XS;\^O,"Q9CJV<"^O'"\W$4+\/,J-1>Z59^=71_'4#O/(P*";WQK& M8*?"H"(%&=_;-T$@S=XSL\]FK4V\B[;CN\`IX(3C[M(I&;ZUW3B/+`R'3N2O MPDE^Q=*>S%W/06&.+UV?]]$FU$C*\QJ*R/D,]N*A.1IW=X$=1D[]QG>GC8.- M)AJ6.Z%'4^=R=35>.#?.0AR*3NZA[4`ZX?[FP",K^^A&6DMA#<:OL32]PD-` M;Q(OQK.IB8KN^>$2/L.49-)D;H?&%H:K[,*%?^4',0!\^_[U>'0\?'OTB_B# MOIR>'.L`;OP%_`L6#WHPMF-_Z4[&L0'LA/PH'L\6-F%E0IC%O=57B*?P`[Q= M3+4Y=G3G3<8(2(UE4/4]=#*$,+)]'+A3\C6'%!$0,0SOM$2;*R_,_PK#[\ MT3QKB-_%$_@@1A_>OC7%F;@W-UI@BZM)S%"5FM&7Z)\,[-W1S[\"-K^CG`I3 M#3D5Z!R/3M\-?_R5Q`,X-P'GMR[P!5!6\8[?BJ7MW3TJ1KX@5!(57(U1'7#B M>#+_A%]N8./,+H3!&E<@'^%7>`;>V`_KJ8*(K88D03,P=XK!V(V9>B*7P6TT M@>M&&=NWG)L#G1'KY"[.&L9'@.,@+2P"T10HK+%X\@26'LC'K>>>O42M?8)C M1C(Z64YU$:0/0N=?SH05\U"<(4+"J,1D])X>F:+36#?M_.)H=/SRE[/A?T.: MN'[FA_/3X>A8S:14#$))#VH"JV]V.1FK7O[A?'B6`_$8M,X_O!L^1,.KH].C MER=O80"2QC='H]>\HG4/+F"C!<;1JC:.%MGS5QI'*_4$?Y)IW&LN2.:L`J+) MQ)FN0DLOF>,XMSUG:BX4_J?.:UO.%XZ'QE2SA%>AMFP9D9W517P>C(0Z9WPUT MBH8!Z05$TSK&SN'9F2EJO&8@GBYKM"%$RW@%/D$Z,`-X:O`&8''@+Q+QI<.P M#XQJN^H/I96JI_CU@"OBSJ[9[X/^]Z`DX:I8BL[Y[&"`78+TIU)JX+STC$"7 M"\X>VY,X+Y(BNVDJP`\TD6"00[BK2`:QE@$!<0QZXT[+^$\P($=)0#0-"LH9 M&$V&81@$1"`JMR[HOZC7800FS?SP4[W1:!":$QN">J&0(,PDR`Y%4D0!V"![8$>4U;`911&:B#?-74.G(0;5H MH.0,)'%1'Y\>7;P9OSQ_,\3X6XOF-?B[-8&_`Q`R6*TIZC)*D'[14F"/&]>M M[A[A*TU&80*Q!WV"A@J,3WUB`O$*Z,",¥:;89*ZB/R+R[\7M'%,5IAEY M+38W!141^'4(WN.,E1AV&[V_.!L>O7HS/&8J$S;S8PIVDOZ"42`WE4D`59>A M8W]"N`E!39T@!B)1JR)`?(=>%3---%K&^5N%,]MF"2(*&F1EXNFJ03B9J)M, M9F*MK'4&6>L]N&70D0%\E$\9"R`%'E$$;^7,9[I:!IK]F`)30+$U"QJ%V+]^ MI;2\60`U4SRKSP*@07RL/8T^U@#O>KW")!NTEM6**)/KOV(MTECFXQ_IY8FH M4A=?[4\2_UN)8F48(>B5?D9S]I6;YX),252HQ&HM4FG@*`2%U+D[-["Z71$6 M^&$V."1C)5"R@2(=+$[U@\)$/R!O#I37D[#D$OE`_705I$$1U40C#MP*&&,= MZID:&`WF.$LH>\,[]KB2[@(+4:9*-LVOV+8B&/.B=<&XN0ZE1%N4G>>,-Z_G ML]`IR61H]`O,#1+IPER04&XO/XBH,!-&,72;Q5'T*Z;LG/=-ZYEH=JV.:67R M!,[H.5-X1*+`T\M3!4P#PHE*`:0FN3[4NW6M:P&%X\G[\=GP'\-7%V^/SB\H M%2=Y0L]MD&[8T'/OCM1O7"B-.P+T*%@ M4]"Q"I0&@B`7M8Z#BJ9SGG:8AH\5CMFT:A4!@(-ER[0'E'L*X+A0*72[?;.'QV.[S\Q> MGWL%6..J6>+0`M';7B1NH2*&K%38EZ@1Z.$8+&3.$(@Q7[]RO2NSL+Y5#L"- M>>'4C=3:-JW=ECZ2@#^W.N!N,"%VP@F(Q;YRQ',HXSLRQ]?\":^R+Z-ZLGD# M.6HU^)S!BQSXU3"[L1^&*[5!97W`91*>0(25^N6*GGDG_J?D`=DA;JQ>;+`7*9NN&1L&/: MA\YT#*.T42-9A473TF7T6/L)##\PS:?B[3N,%MG.&9[^,WYV,/EP, MSP?J^^GP[-5P=)$LU/1/I/J@0S@^P9[4V>N3T6NJ(@WU0(T2Y1H2C":$/_%" MY-`0`U%`I%E$)/V/2J)#$@%-7U#+X^&X,ZN[&4!E,%G7G!C,$L= MML*>'7K.C(%M1<@Q9(/:]L1SF?N5H!-L:59#X)- MYS<.V.0XQAQ(7T.^G`HKJI??X&^(;*/\78YK93Q5/%*M4UD$,X&5T8X MB<]\3:1K6OMX\MTSK;U\UW"%#>$'&H=8780K#VE;DV5D^H(=;N*I5.+AI`[R M6R*^//G05@IFASS28ZJUC/UD],-[8*M-_@@\?\3=-ZR*6=@)BNG&*@U!N/Q8 MHEA:"DANB9GKN='0&%5UAZ.S0_9A> MSUPG1]%JT1T4#M;`J`A8L5:XB31SXN7CPBWGID+$A)2U:UH=*$1V^GNFM2Z8O8E'H7:"SQ8SAR'Y2M\-9&.H%W/1L&RH>A-V*;!?53\2'X[J7CM MJ7ZSA?D@Y#$>-^W$W9T+WJ?YQ)U-G9DX'K[\\#J9@C3?W='!,DZA"QY(C#P# M_2FT`\CAL)M,3)?H-\1LY9$.MFG:R4QD#OHA?DYOG#+]T;R)<4JP<0.6-S(&LKW5.N4^00:,\3L;R"D M-[W)/\]#DG8?PF\]>88,SJ4*A7T^2CTD7"JF7#Z-I&,(.2E-.<8Q]I[Y`X*K M,SZZJ9"YELA-)0%UU%PZRP@+' MAAZ>\V]#U4KG_9`E"?CES*>=7.E(E1*!I6`B7$C`DNP-OC:;4F/I](=3,#=)P52$YDTX7LF"QN6T$)?= M@N]P]`;@9CH3;))+50+!=M*R%-P*C=)I$)W/3S_73&WS-(/1:$H23J9).9P" M16DBUZS$WJU&NOPT3*+]-)(HPX"@^$R1XH9YDRG9#2E32`PO2%J*6 MY6LJIG2AX-63*A#Y^3OY]RS+N-PJ--BR"7!9N(AS"2M-T]IIR$%92!C:4#TP M99J@UA1`'ZAH]8!^ZBW.-(LX4G6>'*\ M46L41,F*1(.+S+I/0GNRZ#Y9)$^,F8[KTJ814'>M4*+/A_"G]5QHTJ]4R%)M M4S=XGDZ!MXJ]A#O!Y3XH=]-H@%WA8;Y]TWA1>UH;U)8U?:[6RCDL=&E@A6IC MUKB?9-2TUJ8\FF&1!HI,5297*?[C]+Y<[==I_0-*7RXK35124AE%U+4[)P7% M!"F-)KO0:]GYTP0)Y9$Y"J+C/KUTH$%]$:$(-44J(N8-0UWJ\SK[76 MM=ZXRFRK:%KWI;J<&E;!KN[UN-&:0E40^G=IM,A6C[G'G!9GRY,T_7A,$-G& MWG[T?S]!R1!1FJ&TLH&[]9=&4#;+DM.JX/&QJ&QY<2N^AU5(JM(CM7N5+&#L M*7,#I?W\DD'-CQ,%]=*EROADSZJ,B.*JQ'P;R5%AV21U=L@'9\49#6[-]*Q] ML]?%5R]ZYNX^-V;NR[(SV>/F&IWL2);F6I)?DYI52^]E9;+!O,'R79"T$6F7W+T"W;2-_@UHY$M)K@ MI;O9:L'UWS0M'C-\X9*@G"V%K%BUI9XOHJ5201*=[!^Q4N8[I6*/@04=4#[NJ;C(F^JRK?* MF->%]X*(Y?H;1814=>'8Y#>-2LB@1D/F/:32S>X+ES+5&TY5,'-O0#T.*MW% M'1,Z]4++7/KD7)S?WEDA'ZQ3EE&0<"'&0$7[F8I'VFOKN9*'P?RV`+FD_-0UZM3`'2!^/SD M]9L/IX/*\Q3):7%YAU-E06$DT4B>\?%QB`8381TJ]L9V^CK[RD/2_%]12>06KON#?.M)U! M)H5WKZYE)%JM>=XD>.9\7YE\%`G2X65I:.9?WU/]0F[)2]-<6ONR8#??239.]0BR@A"$UZ1*C3B8E9IW4+NG%`]>;^4+-Y"@OS9NO M.Z;W'$?#GR_D2UF;:D&#SUADX:(YIXJ[F&J=>-KI?094I\YG>=9):JL>M[E@ M2;[2Q$8>JCJ<#99<*\CS69FU9V#I?32*_O2VAHY\>I*;.\/<+(4G[8Q.";53 MV@SK"C=%RSGXK=9S+>/9D>J$C-A]B`;\P;-(KPL='PW?O1W(:,>QQ')8K2MXDR;Q*DG^7 M9/W+)(5+.K+_5DRMU:MQ1Z_&I^]_&IZ-SR^.+H98F]Z2T;1M=VQ/^+(Y79][ M4>RM##X"\)+[2XWRFHE>I5-M(1GR*J!4*-FL>/VZ>*]/ M9M87>)V3KLG0RB4:I1LAP^&3&SJ+.P'^U6G#1,B_(5B#.)R(_O>&V$55(BBD M,_SR)/Z?'Q*7I/T'F@P+3'&I[H_"KXT7H,3"_LT%J<*BJ=^65P\,8V&#>!C< M84Y;N:I/Y)=9:*`8"J(Y_0\H@'I$_X=(X(1@S$L1^4!, MY(V9:>/%YM[]G=GN6NOFL_(JF M>]_FE4^VJM:J9TOK-I>>>P3?'LI3#^HZ)]VR3)^ZK/U6T:]6=\;36Z+:Z4LU M%MKI2P&/1RXMXD%]\<*122[>;&X2RM_*F?BN@AJK\UC5:<#FIN!+?$%RIH/3 MM/!%_W7!PIT!R#_^8)"E$-7]7;EO#F`]#Y%* MG4B5GA7I9CY;SB>@ZH9DH)V`J=/8?-99=3FP@E?)2PB*9\EY??`EAT79=>DA M53+TX#&5SBH*VF5):"8++:2AA3STL8FHEHG^;WO'VM76D8M:30:R0ZUTY<;H"3A,RI]QL3/V?)GW.Y!Y>(BJ/^`4#RF.Y],+CU=#5## MP47_H^'P?,R#\Z0V74774L;(3D/:7W!>I;N30>]ZB#]/!VAAR;^=\YF+/EFL MFVS`#-F]*?X!6;\7U83_$M872`AN^^>YZ40D>FU"&O5RN_>O5J>=?RHJH2L+ MR.BV]B,76E&0DNVV`UNS7_:)]Y.HFC9T-9`DN,6R%K*>-"6,8:](. M'9GG;M&,)N$\9+_B*9F5YQ39E:.,Q2?!Q/J+)(LE&)N3B$(Z<5)P1A]N4FA] M9(F/)7R%8996$;UQL3H7?E+/8UV0MP=$@>@2[3QAVY3\?=9]T>NT0-KI['-! MUU#8#Z;7[./"`Y#CD@PAES-#),R`I\!/G`/1F/]]"G"G9POP$U(S6::D)IOZ4HV49-%-$$CC'CZPW3L&NZ.!VC ML3]@;J.Y"ZL2B3$Y2P%F)@J9"5Y"`%ZY)$\PV-ET50>^=)VFLD5Z)66V.>YT`OY/AOUY:%(+DE MJ6:CNKXT$2@P(M`K+H_9&=/N^.X!OS MNL%Y(A*HD\5GUWJ;9>188=D=DW'CLV4FP'9;RFBZS_K<%[F(L$#2,BP"D3KR M(!!'[DT005PZO_QQ$IXW[[ M'=&[WLZKO0+?/^'2SB#THNA,Z4>"[^S]X9IV]KZDIN[^VS]:$Q3-J@G^_V$X MU6.:[[S9V=W9AS,IVIC`TL`Q=K9:Y+FRT@3)"*8=L\I8K(=B$J2Q>3L;:@P* M;FXT=\I7T`]?%L?5<',[UE#\/O>B/QK3S5K_I$AZV>]4__;@R-W!`QWA2W'? M26LI)WVH:I`9WE,%.P0R!&`P>@"?Q\K[M]B+T\8MOKQ!0MM^J?L*`/B*BP\I M7%REEA\UI@:%OFM2CFJ?@A-]I M=_PGAQKO*>.-^T@%!/VK#Y%2YHYG9;32L)1"7V-(7YO]Z624U\4+!??TWX]_'=$]^28+G;\LG*XNX3+EI7M<]Z-(R.I"#'_"OM#\W MUEU"[BN9-8#[C!S`H>-I>F&UM[/5`E%KJP-`W+KQZ&28M^D(S<^LC*.(;Z*H MDQ>.WM[8UC&2A/X)S:?7I?%D7.+%"S-R0[Z++2Q3`7H+DUX;>[/WTIKWU M.A4;E=>]Y/'&.Q^\?=8#3CES:.9,)\3E"1&(X5B_^F]W=GO;K7_"T&I^TNYU MMG_N>,;,&6\2!\-;6*?:ONZWY6O<.`EX"]HG5.#O")XM(U.(F8H\/_;Z87TV MVVYL[;_Y,WH116L[D;DJ%0E4PCA*&(?B3Z%PQ-]*JTU;OP!/[[[;VFIUNYA\ M;U\[.\H0I%(&\>R9Z?J7SO;L6[/8.*$UI3"F3)[U(#Z33GC2>T3>ZND=L@U_ M;/>VWK1;O[2VYFD;GJI(J"D!(2.G;B3/(S?2KS+'?+?WI=-.+A-<%4@G,W``FB]J MQID(=7$V,VK&V;Q1,\YRW9LQ134ZO@%JV`.Q!JUP^E-4WN!SBZ*J%E6M4-"\G;Q7 MS(_;R0,N5$)&3`W2MPIG*G_0J5^65ZQF<@5_M;,NURQ:[?,Z;6S.QQ'.AQ_+ MYRKZZPH2J51K72J%<$=Z@4-S"F$GQIOS]`"F;%5"*T%%:I M.E=8);::\Z(3904=BD8,@H6<%6PIR`X6%*0$*PH2@PBYI+ORM'_,@85H30-B M?.%"/YQ]'^P-_3[4Y,..R@HMHI;IV+A\K?;;;Q>"9=81C"J MEW1B$=(^*99PMMJ[NR^::!Q!>4V9UVWM[FRUW[3W7/ZWY>^6"#W_MCM8%'N! M.P]=$2K7,!8A$.KN[ORV?UZF:"@1^:)I$+C25-:Q\.3B+C\5@V7V*1AL?AH& M)\FD=<'DIV%P?AL%)2-A#/&;&)+(PA9K+5<"X5]7Q306.4+V(-*:?,H6`:,"X&A44!%`H\^!H$Z02'RF;1FR"=U%#9+$H3S"`RA&`VC0G2R0MAR*(N@20L:7U/)2R!1U,2 M:Y]!4P*/G*3BR)K\*"7)7'=I2V`6$=&C,0<-X=UER$TC[%D29$ MH@I*C%=2RJZ%EI\Q..5**)B2ZQEJW;9VMQTIU`=;`:&#'3!,H(LGE@],T92R MI@6'GR0(R9-TU>#:<'@?J0+6D)>_>/#KXE%PN)@3EM4ZZ@D(YO"'&1)54E7A M`RO/0P=``&I"*1F/X(@@4&',X:X,`975]B"]V8%K<VUACC./?EK#&E`GC7Z3D)COL.C/L[M^O)7M<9VQUK,.5:5U2Z!]JN2<=3 MDTL60`X@%<-%KAQ65O3,<-PD5U-WOV.\>^?$T>'7Q4_WQ>:WA^/#J0+^;`F% M'A6._6*V@IF$=WNO]]H_:U9(7`@,R2@$PE3`K=4S3YGP_O'VNQ\BK4)-*0^5<52+3)A(!I^FA M5SK8'"$R:1N?M$RK1K4`5(/>(-@FE\;6)Q903]USY6PG1!9,$3UU2DO705MA MXX8JV`CQBV:-J+4F33UR?U3*-=0G%=$^A4#8#0QA#PA&**R\?)5K"K24A&@Y M]A&6QG<_:)ZM'T-^EJ`&3".AFX@*NEK?W&!/ZU#M];#.^MS4OE=Z_?_%3N\-R9Y(^&=!8&R$.&EJM M%#=4$%8W3"PPW1=6R,+]YHW*,OBJ^A']?:Z$%+56[MFF[M1LW0/)Q9Y@], M=5V#(R<)_5`A.90@OR9-"3.(?97'"_-$,Q7:6713-)EHX?BY9)[31L*.`\PI M42\C>;K['.8R6DI'N5S$=B_R^`(SP=A>E5",K^"[7S:T^MR;-K@<,G'NX17P M_V<#K%MNAGBS2E?QU7"-=]R"6[D-%D[@/+:TI#<7GM!@3Y*4@NAB,LZ``[#3TZ_1H*_[B1S?\="**P`/M<_T*IA4EN?X:JT1UALP[?8<'VX2:]PL&HN!9Q'? M32@6D#315>':0BF23O(,K).:=IVI^-G0H#_M$QKA*NUZ3_83U\W/]? MXQ/;_[@"?/Z_?W:C7@Z/E=I0(1F&UT.GO,\H[?/_U488/O+_Q\_CY_'S^/E; +?/X+.(]5Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message